ItemRules is a simple to use, but highly configurable plugin for controlling how, when and even where items and blocks can be used, picked up, crafted, placed or broken based on the world, a players xp level, the faction they are in, their mcMMO skill level, their rank/group, their permissions, and more. It is a complete rewrite/revisioning of my previous plugin LevelRestrictions

Latest Builds


ItemRules can allow you to restrict items and blocks based on XP level and/or will integrate with Factions (e.g. allow only certain factions to use certain items), McMMO (e.g. restrict ores from being mined unless mining skill is a minimum level), Vault (e.g. restrict weapons based on permission group).

ItemRules will also allow you to configure certain rules that will be applied when players walk into defined regions (e.g. a PvP zone that only allows you to use carrots as weapons)

Configuration Examples

Here is an example of restricting iron tools and equipment until player is level 2:

        description: 'Use of iron stuff until level 2' 
            restricted: 'You cant %s %s until level 2'
        actions: [USE, BREAK, PICKUP]
            min: 2
            restrict: [256, 257, 258, 267, 292]

Here is an example of McMMO integration that prevents cutting down Birch trees until woodcutting skill is level 2:

           restricted: 'You cant cut birch until woodcutting 2'
        actions: [BREAK]
                woodcutting: 2
           restrict: ['17.2']

You can also specify rules to apply to groups (note this requires Vault) by adding this to your rule:

    applyto: ['newbs', 'badpeeps']

You can use the same format to exclude rules from groups (using Vault) like:

    exclude: ['vips']


Note that by default all OP's will bypass rules.

itemRules.bypass.*Do not process ANY rules for player
itemRules.bypass.RULENAMEDo not process specific rule for player


/rules[playername]list all rules currently applied to player. No arguments for self

Change log

  • v1.0.9 - Jun 21st, 2013
    • Silent exception handling when Entity attacks player with an invalid item.
  • v1.0.8 - Feb 18th, 2013
    • Fixed potential issue with groups and perms not applying correctly.
  • v1.0.6 - Feb 17th, 2013
    • Fixed bug with certain manual rules not properly applying.
    • Changed Item text to use Vault if installed.
  • v1.0.5 - Feb 9th, 2013
    • Changed permission check to prefer Vault (if installed) over Bukkit.
    • Bugs zapped
  • v1.0.3 - Feb 9th, 2013
    • Changes mcMMO skill type checks to take advantage of their new api accepting strings instead of data types.
  • v1.0.2 - Jan 30th 2013
    • Added support for mcMMO versions with build newer than #1282 ( Jan 22nd 2013). Otherwise, same exact build.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of RfHardian RfHardian Feb 26, 2016 at 21:42 UTC - 0 likes

    restriction not working on mcmmo unless i leveled up, and got this error when i logged in everytime.

    [04:41:26 ERROR]: Could not pass event PlayerJoinEvent to ItemRules v1.0.10 org.bukkit.event.EventException at$1.execute(JavaPluginLoader.ja va:310) [spigot18.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav a:62) [spigot18.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j ava:502) [spigot18.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j ava:487) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerList.onPlayerJoin( 298) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerList.a( [spigo t18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.LoginListener.b( [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.LoginListener.c( [ spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.NetworkManager.a( ) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.ServerConnection.c( :148) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.B( 14) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.DedicatedServer.B( 74) [spigot18.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.A( 54) [spigot18.jar:git-Spigot-db6de12-18fbb24] at :557) [spigot18.jar:git-Spigot-db6de12-18fbb24] at Source) [?:1.8.0_74] Caused by: McMMOP layer object was not found for: Rf_Hardian a525b40f-6b6b-3de7-a4f3-483607d6868a at ) [?:?] at [?:?] at com.github.mineGeek.ItemRules.Integration.McMMOPlayer.getSkillLevel(M [?:?] at com.github.mineGeek.ItemRules.Rules.ConditionMcMMO.isApplicable(Condi [?:?] at com.github.mineGeek.ItemRules.Rules.ConditionMcMMO.isApplicable(Condi [?:?] at com.github.mineGeek.ItemRules.Rules.Rule.appliesToPlayer( 0) [?:?] at com.github.mineGeek.ItemRules.Rules.Rule.appliesToPlayer( 5) [?:?] at com.github.mineGeek.ItemRules.Rules.Rules.getPlayerRules( 14) [?:?] at com.github.mineGeek.ItemRules.Store.IRPlayer.loadRules( 329) [?:?] at com.github.mineGeek.ItemRules.Store.IRPlayer.loadRules( 318) [?:?] at com.github.mineGeek.ItemRules.Store.Players.addPlayer( ) [?:?] at com.github.mineGeek.ItemRules.Events.Listeners.onPlayerJoin(Listeners .java:91) [?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.8.0 _74] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [?:1.8.0 _74] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1 .8.0_74] at java.lang.reflect.Method.invoke(Unknown Source) [?:1.8.0_74] at$1.execute(JavaPluginLoader.ja va:306) [spigot18.jar:git-Spigot-db6de12-18fbb24] ... 14 more

    any help?

  • Avatar of MineCraftMyph MineCraftMyph Mar 19, 2015 at 14:45 UTC - 0 likes
    • Error, and we need the option to customize the messages fully, colour codes, bullet points etc.
    • Error occurred with mcmmo, my config syntax is fine.
    • Need to be able to disable the login message.

    [14:43:53] [Server thread/WARN]: java.lang.NullPointerException [14:43:53] [Server thread/WARN]: at com.github.mineGeek.ItemRules.Store.IRPlayer.getRuleData( [14:43:53] [Server thread/WARN]: at com.github.mineGeek.ItemRules.Store.IRPlayer.isRestricted( [14:43:53] [Server thread/WARN]: at com.github.mineGeek.ItemRules.Events.Listeners.onPlayerInteractBlock( [14:43:53] [Server thread/WARN]: at sun.reflect.GeneratedMethodAccessor59.invoke(Unknown Source) [14:43:53] [Server thread/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [14:43:53] [Server thread/WARN]: at java.lang.reflect.Method.invoke(Unknown Source) [14:43:53] [Server thread/WARN]: at$1.execute( [14:43:53] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent( [14:43:53] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent( [14:43:53] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent( [14:43:53] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent( [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.PlayerConnection.a( [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(SourceFile:53) [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(SourceFile:8) [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.NetworkManager.a( [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.MinecraftServer.v( [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.DedicatedServer.v( [14:43:53] [Server thread/WARN]: at net.minecraft.server.v1_7_R4.MinecraftServer.u( [14:43:53] [Server thread/WARN]: at [14:43:53] [Server thread/WARN]: at

    Last edited Mar 19, 2015 by MineCraftMyph

  • Avatar of kev3200 kev3200 Jan 31, 2015 at 15:37 UTC - 0 likes

    @eduardo31: Go

    I didn't even know there was that permission?

    EDIT: Nvm, I found it in the description.

    Last edited Feb 11, 2015 by kev3200: I found it
  • Avatar of eduardo31 eduardo31 Jan 31, 2015 at 02:48 UTC - 0 likes

    Bug: itemRules.bypass.* permission is not working on groupmanager any ideas ? please help

  • Avatar of kev3200 kev3200 Jan 22, 2015 at 15:28 UTC - 0 likes

    It's even worse now. None of the rules are working at all. Geekola, I have waited for a response for almost 3 months now. If you have a Skype or any other form of communication besides this chat could you please pm me that info? I'm really frustrated... I realize you haven't worked on this recently, but you are the only one who would know what I'm doing wrong.

  • Avatar of kev3200 kev3200 Nov 05, 2014 at 12:34 UTC - 0 likes

    Any updated ideas Geekola? If it matters, I am using this plugin on a 1.8 server. I don't know enough right now to know if that matters for this plugin.

  • Avatar of kev3200 kev3200 Oct 13, 2014 at 19:18 UTC - 0 likes

    @kev3200: Go

    Update: Didn't work... I tried doing /irapply kev3200 birchWood /reload server, and then /rules kev3200 "You have no rules applied to you." I can make a video if you want if that would help to show you my problem and what I'm trying to accomplish.

  • Avatar of kev3200 kev3200 Oct 13, 2014 at 19:12 UTC - 0 likes

    @Geekola: Go

    Ok I think I get it now. So if I want the rules to be applied permanently, once the player reaches a certain level for instance, I would need to give them the permission and /irapply <playername> <rule> to refresh the rule list. Next time they login, the plugin "sees" that they have the permission and will reapply the rule automatically, yes?

  • Avatar of Geekola Geekola Oct 13, 2014 at 10:37 UTC - 0 likes

    @kev3200: Go

    I haven't tested (and wrote this over a year ago so commenting from memory). I made a long reply, but let me see if I can sum it up better: those commands apply/remove a rule, but that effect is temporary until rules are automatically re-evaluated (e.g. next time they log on). IF a rule requires x permission, you give the player that permission, then next time their rules are re-evaluated, they will have that rule. IF you give them that permission and run /irapply "rule" that will manually apply and refresh their rules in the interim. However: IF a rule requires x permission and you do not give them that permission but run /irapply "rule", then they will have the rule applied until the next time their rules are evaluated (e.g. when they next log in). Hope that help clarify!!!


  • Avatar of kev3200 kev3200 Oct 12, 2014 at 20:18 UTC - 0 likes

    @Geekola: Go

    So using /irapply and /irrevoke, would those rules stay on or off the player permanently? Or only for the duration of one login?


Date created
Jan 27, 2013
Last update
Jun 27, 2013
Development stage
GNU General Public License version 3 (GPLv3)
Curse link
Recent files