BanItem [1.7-1.16] 2.4

Lightweight, powerful & configurable per world ban item plugin

  1. Andross
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:
    https://github.com/Andross96/BanItem
    Languages Supported:
    Configurable
    [​IMG]
    BanItem is a simple powerful, lightweight & configurable per world per option ban item plugin. The main goal of the plugin is to disable specifics actions for specifics items in specifics worlds, supporting specifics permissions.

    [​IMG]
    • Blacklist: players will not be able to use the item, per option configurable;
    • Whitelist: (reversed blacklist) - all items & options will be blocked , you'll have to set which items is allowed with which option;
    • Per world configurable;
    • Per world per item permissions;
    • Per world per item per option permissions;
    • Support of custom items (items with specific item data/meta, like modded items, potions, egg spawners for old versions...);
    • Usefull commands;
    • Lightweight & activating only necessary listeners;
    • Developer API available;
    • Full documentation: http://banitem.andross.fr/
    Options: (bannable)
    • Armorstandplace: when the player try to place the item on an armorstand; (v1.8+)
    • Armorstandtake: when the player try to take the item from an armorstand; (v1.8+)
    • Attack: when the player use left click with the item in the main hand on an entity;
    • Bookedit: when the player edits or signs a book and quill item;
    • Break: when the item is breaked;
    • Brew: when the item (potion) is brewed inside a brewing stand;
    • Click: when the player use left click with the item in the main hand;
    • Consume: when the player try to consume a food, a potion..
    • Craft: the item will not be craftable anymore;
    • Delete: when a player open & close an inventory, it will check and delete items which have this option;
    • Dispense: when an item is dispensed from a block;
    • Drop: when the item is dropped by a player;
    • Drops: when the item is dropped from a block;
    • Entitydrop: when an entity dies and drop the item;
    • Entityinteract: when a player use right click with the item on an entity;
    • Fill: when a player use right click with the item on a fluid (water/lava);
    • Glide: when a player try to use (activate) an elytra; (v1.9+)
    • Hangingplace: when a player try to place a hanging entity (itemframe, painting..);
    • Interact: when the player use right click with main hand on the placed item;
    • Inventoryclick: when the player try to click an item in an inventory;
    • Pickup: when the item is picked up;
    • Place: when the item is placed or used;
    • Rename: when the player try to rename the item in an anvil, or from a command;
    • Smelt: the item will not be smeltable anymore;
    • Swap: when the player try to swap the item in hands; (v1.9+)
    • Transfer: when the player try to transfer the item from an inventory to another;
    • Unfill: when a player try to unfill a bucket;
    • Wear: when the player try to put the item as an armor (you'll need to use also the 'place' option);
    Code (YAML):
    # +———————————————————————————————————————————————————+ #
    # |——————————     BANITEM CONFIGURATION     ——————————| #
    # |——————————————————      v2.4      —————————————————| #
    # +———————————————————————————————————————————————————+ #
    # |                   Documentation:                  | #
    # |             http://banitem.andross.fr/            | #
    # +———————————————————————————————————————————————————+ #
    # For any bugs/suggestions: Andross#5254
    # +——————————————————————————————————————————————————————————————————————————————————————————————+
    # General Informations:
    #  - The blacklist will block the items.
    #  - The whitelist will allow only the items set.
    #    -> The 'message' key represents the message sent to players if they try to use an item which is not in whitelist
    #    -> The 'ignored' key represents all ignored options (they will not being by default banned)
    #
    #  - Worlds can be written:
    #    -> single: 'world' ; 'world_the_end'...
    #    -> multiple: 'world, world_the_end'...
    #    -> all: '*'
    #    -> all except: '*, !world_the_end, !world_nether': all worlds, except world_the_end & world_nether
    #
    #  - Items can be written: (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html)
    #    -> single: 'stone' ; 'dirt'...
    #    -> multiple: 'stone, dirt'
    #    -> all: '*' (also include air [=empty hand]!)
    #    -> all except: '*, !stone' (all, except stone)
    #
    #  - Options can be written:
    #    -> single: 'place' ; 'break'...
    #    -> multiple: 'place, break'
    #    -> all: '*'
    #    -> all except: '*, !place' (all, except place))
    #  - Each options can store some datas to check. They can be written, for example (except for cooldown & log):
    #    -> entity: pig, cow
    #    -> entity:
    #       - pig
    #       - cow
    #    -> entity:
    #       - pig,cow
    #
    #   - Options data: (if none set, this will apply for all) - (* can be useable for all options involving a player)
    #     -> cooldown(*): allow access to the option each X milliseconds (1 second = 1000 milliseconds)
    #     -> entity: the entity interacted or involved in the ban
    #       -> EntityType: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html
    #     -> gamemode(*): the item is only banned if the player is in this gamemode
    #     -> inventory-from: the inventory where the item come from
    #       -> InventoryType: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/InventoryType.html
    #     -> inventory-to: the inventory where the item goes to (same type as above)
    #     -> material: an additional item checked
    #       -> For example, in a BREAK option, this data will also check a matches with the item in the player's hand
    #       -> https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
    #     -> log(*): true/false - if players with /banitem log will receive a message for this ban
    #     -> message(*): a string or list of string to be sent if the item is banned
    #     -> metadata(*): the metadata that the item should have:
    #       -> 'displayname-equals': string - if the item displayname is equals to this (e.g: displayname-equals: 'test')
    #       -> 'displayname-contains': string - if the item displayname contains this (e.g: displayname-contains: 'test')
    #       -> 'lore-equals': list - if the item lore is equals to this
    #       -> 'lore-contains': string/list - if the item lore contains this
    #       -> 'durability': short - if the item durability is equals to this (e.g: durability: 3)
    #       -> 'enchantment-equals': string/list - if the item enchantments is equals to this (e.g: enchantment-equals: 'SILK_TOUCH:1')
    #       -> 'enchantment-contains': string/list - if the item enchantments contains all this (e.g: enchantment-contains: 'SILK_TOUCH:1')
    #       -> 'potion': string/list - if the item contains this potion (e.g: potion: 'SPEED')
    #     -> region(*): worldguard region
    #        +——————————————————————————————————————————————————————+
    #  - Options and their possibles datas:
    #    - ARMORSTANDPLACE: when the player try to place the item on an armorstand [no specific data]
    #    - ARMORSTANDTAKE: when the player try to take the item from an armorstand [no specific data]
    #    - ATTACK: when the player use left click with the item in the main hand on an entity
    #      -> Special data: entity - the entity clicked
    #    - BOOKEDIT: when the player edits or signs a book and quill item [no specific data]
    #    - BREAK: when the item is breaked
    #      -> Special data: material - the item in the player hand
    #    - BREW: when the item (potion) is brewed inside a brewing stand [no specific data]
    #    - CLICK: when the player use left click with the item in the main hand
    #      -> Special data: material - the block clicked, if there is one
    #    - CONSUME: when the player try to consume a food [no specific data]
    #    - CRAFT: the item will not be craftable anymore [no specific data]
    #    - DELETE: when a player open & close an inventory, it will check and delete items which have this option [no specific data]
    #    - DISPENSE: when an item is dispensed from a block [no specific data]
    #    - DROP: when an item is dropped by a player [no specific data]
    #    - DROPS: when an item is dropped from a block
    #      -> Special data: material - the item in the player's hand
    #    - ENTITYDROP: when an entity dies and drop the item
    #      -> Special data: entity - the entity type
    #    - ENTITYINTERACT: when a player use right click with the item on an entity
    #      -> Special data: entity - the entity interacted
    #    - FILL: When a player use right click with the item on a fluid (water/lava)
    #      -> Special data: material - the fluid type
    #    - GLIDE: when a player try to use (activate) an elytra [no specific data]
    #    - HANGINGPLACE: when a player try to place a hanging entity (itemframe, painting..)
    #      -> Special data: entity - the entity created by this placing
    #    - INTERACT: when the player use right click with main hand on the placed item
    #      -> Special data: material - the item in player's hand
    #    - INVENTORYCLICK: when the player try to click an item in an inventory
    #      -> Special data: inventory-from - the inventory type clicked
    #    - PICKUP: when the item is picked up [no specific data]
    #    - PLACE: when the player use right click, so the item is placed or used
    #      -> Special data: material - the block clicked, if there is one
    #    - RENAME: when the player try to rename the item in an anvil, or from a command [no specific data]
    #    - SMELT: the item will not be smeltable anymore [no specific data]
    #    - SWAP: when the player try to swap the item in hands [no specific data]
    #    - TRANSFER: when the player try to transfer the item from an inventory to another
    #      -> Special data:
    #        -> inventory-from: the inventory where the item comes from
    #        -> inventory-to: the inventory where the item goes to
    #    - UNFILL: When a player try to unfill a bucket
    #      -> Special data: material - the block type clicked
    #    - WEAR: when the player try to put the item as an armor (you'll need to use also the 'place' option) [no specific data]
    #        +——————————————————————————————————————————————————————+
    #  - Examples:
    #    -> Simple structure:
    #      blacklist:  ##----> for blacklist
    #        world: ##----> world where the ban should apply
    #          ender_pearl: ##----> the item
    #            place: '&cYou can not use ender pearls in world.' ##----> the option with a message
    #                        +————————————————————+
    #    -> Advanced structure:
    #      blacklist:  ##----> for blacklist
    #       'world, world_the_end': ##----> worlds where the ban should apply
    #         'dirt, stone': ##----> the items
    #           'place, break': ##----> the options, and below their datas
    #             message: ##----> a configurable (multi-line, or not) message
    #             - '&cA first message example'
    #             - '&cA second message example'
    #             gamemode: creative ##----> only applies if player is in creative
    #             log: true: ##----> players with /bi log activated will receive a message
    #             cooldown: 30000 ##----> this ban only applies each 30 seconds (players can only either break or place the items each 30 seconds)
    # +——————————————————————————————————————————————————————————————————————————————————————————————+

    # Better & more detailled loading error messages
    better-debug
    : true

    # No permission message (for /banitem)
    no-permission
    : '&cYou do not have permission.'

    # Prefix of the plugin
    prefix
    : '&c[&e&lBanItem&c] '

    # This will allow the plugin to call 'PlayerBanItemEvent' whenever an item is banned
    # This is used to allow others plugins to modify the behavior
    use-event-api
    : false

    # If true, the plugin will check (async) if an update is available
    check-update
    : true

    # List of options that should have maximum listening priority
    # Giving maximum priority will force the ban item plugin to have the final word on an event
    # This is used mainly to also block other plugins events, if the action is banned
    # You can use the options formatting ('*', 'option1, option2', '*,!break' etc.)
    priority
    : place,consume

    # Some configurable stuffs for some options
    options
    :
      rename
    : # list of rename commands which a player can use to rename an item
        - '/rename'
      transfer
    :
       # Block hoppers to take/give banned item from/to inventories
        hoppers-block
    : false
      wear
    :
       # If the plugin have to check when a player enter or exit a WorldGuard region
        region-check
    : false

    # Hooking with plugins
    hooks
    :
      worldguard
    : false

    # Animations when a ban item message is sent
    sound
    :
      enabled
    : true
      type
    : ENCHANT_THORNS_HIT
      volume
    : 1
      pitch
    : 1
      worldSound
    : false # if the sound can be heard by others players around or not
    #particle: # available only on bukkit 1.9+
    #  enabled: true
    #  type: BARRIER
    #  amount: 1

    # Here is some quick examples:
    #blacklist:
    #  world:
    #    diamond_block: # can not place or break diamond_block
    #      place: '&cYou are not allowed to place a diamond block in world.'
    #      break: '&cYou are not allowed to break a diamond block in world.'
    #    gold_block: # can not place gold block if in creative mode
    #      place:
    #        gamemode: creative
    #        message: '&cYou can not place gold block while in creative mode.'
    #    my_custom_item: # custom item from /bi customitem, useable only each minute (time in millis)
    #      attack:
    #        cooldown: 60000
    #        message: '&cYou have to wait &e{time}&c before attacking with this item again.'
    #    stick: # can not put stick into an itemframe. Sending log message to players with /bi log activated.
    #      entityinteract:
    #        entity: item_frame
    #        message: '&cYou can not put a stick into an itemframe!'
    #        log: true
    #    diamond_sword: # can not attack with a diamond sword with display name 'test'
    #      attack: # can not attack with diamond sword, with this displayname
    #        message: '&cNo sword with text ''test''!'
    #        metadata:
    #          displayname-equals: 'test'
    #    diamond: # can not put diamonds from a player inventory to a chest
    #      transfer:
    #        inventory-from: player
    #        inventory-to: chest
    #        message: '&cYou can not put diamonds in chests.'
    #  '*, !world_the_end':
    #    ender_pearl:
    #      place: '&cYou can use enderpearls only in the end.'

    #whitelist:
    #  world_the_end:
    #    message: '&cOnly thing allowed in this world: placing dirt.'
    #    ignored: 'interact' # we ignore the interact, so player can interact (to place) with everything
    #    dirt: place # dirt can be placed
    ### Whitelist conclusion: in world_the_end, only one thing is allowed: placing dirt.
    ### Everything else (breaking, pickup, drop etc.) will be blocked.
    Code (YAML):
    blacklist:
      test
    :
        chest
    :
          interact
    : '&cYou can not open chests in world test.'
    Code (YAML):
    blacklist:
      '*'
    :
        diamond
    :
          drop
    : '&cYou can not drop diamonds while in creative mode.'
          gamemode
    : creative
    Code (YAML):
    blacklist:
      world
    :
        ender_pearl
    :
          place
    : '&cYou can not use enderpearls in world.'
    Code (YAML):
    blacklist:
      world
    :
        diamond
    :
          '*'
    : '&cThis item is banned.'
    Code (YAML):
    blacklist:
      '*, !world_the_end'
    :
        diamond
    :
          '*, !drop'
    : '&cThis item is banned, but you can still drop it. Does not apply in the ender.'
    Code (YAML):
    whitelist:
      world_the_end
    :
        message
    : '&cYou can only break and place end stones in the end.'
        ender_stone
    : place, interact, break

    [​IMG]
    The permissions are very powerful & accurate, to fit for the exact world, item, action & data needed. They should be respected carefully.

    Bypass permissions, used to bypass the banned items from config:
    • banitem.bypass.<worldName>.<itemName>.<optionName>.<dataName> - include all worlds with allworlds.
    • Example: banitem.bypass.allworlds.stone.place.* -> Allow player to place stone in all worlds, no matter on what block the stone is placed.
    Commands permissions:
    • banitem.command.add
    • banitem.command.check
    • banitem.command.customitem
    • banitem.command.help
    • banitem.command.log
    • banitem.command.info
    • banitem.command.reload
    [​IMG]
    • /banitem add <options> [message]: to ban the current item in your hand (without metadata) for the current world;
    • /banitem check [delete] - will give a list of all players which inventories contains a blacklisted item (respects the worlds). Use the 'delete' argument to also delete those items;
    • /banitem customitem:
      • /bi ci add <name> [option] [message]: to ban the current item in your hand (with metadata) for the current world. Entering no options will only save the custom items, so you can manually edit the config file;
      • /bi ci get <name>: will give you the custom item into your inventory;
      • /bi ci list: will give a list of all custom items (by name);
      • /bi ci remove <name>: to remove the item
    • /banitem help [type]: will give you additional informations about the type entered: worlds, options, entities, gamemodes, inventories.
    • /banitem info - to get information about the current item in your hand (for example the material name to put in config.yml);
    • /banitem log: will activate the log mode. Players with log mode activated will receive a message in game for all banned items with data 'log: true';
    • /banitem reload - to reload config.yml;

    1. In-game, you'll have to take your specific item in your main hand and use the command: /banitem ci add myCustomItem
    2. In config.yml, you'll can ban myCustomItem:
    Code (YAML):
    blacklist:
      worldName
    :
       myCustomItem
    :
         place
    : '&cYou can not place myCustomItem in world'
    3. You'll can use /banitem reload to directly reload the plugin in-game, so no need for reboot.

    Important note: the ban item database is loaded on next available server tick, to let others plugins (worlds plugins, items plugins etc.) correctly load their things first.

    Using the BanItem api directly on plugin load will then give you an empty database. Load them into a delayed task within 2/3 seconds.

    Code (Java):
    // Get the BanItemAPI: the correct way:
    final BanItem banItem = (BanItem) getServer().getPluginManager().getPlugin("BanItem");
    final BanItemAPI banItemApi = banItem.getApi();
    // or
    // Get the BanItemAPI directly from the API instance:
    final BanItemAPI banItemApi = BanItemAPI.getInstance();
    // or
    // Get the BanItemAPI from BanItem instance:
    final BanItemAPI banItemApi = BanItem.getInstance().getApi();
    Code (Java):
    /**
    /* PlayerBanItemEvent
    * Called when an item should be banned
    * This is only for check purpose, no modifications can be made.
    * Cancelling the event will cancel the ban process.
    */


    BannedItem    getBannedItem()
    // The banned item

    BanData[]    getData()
    // The data used

    BanOption    getOption()
    // The ban option

    BanOptionData    getOptionData()
    // The ban option data

    PlayerBanItemEvent.Type    getType()
    // Type of banning (Blacklist or Whitelist)

    boolean    isCancelled()
    void    setCancelled(boolean cancel)
    Code (Java):
    addCustomItem(String name, org.bukkit.inventory.ItemStack item)
    // Add an ItemStack as a custom item and save it in items.yml Will replace existing value

    void    addToBlacklist(BannedItem item, Map<BanOption,BanOptionData> options, org.bukkit.World... worlds)
    // Add a new banned item to blacklisted worlds and save the config.yml file.

    void    addToWhitelist(WhitelistedWorld ww, BannedItem item, Map<BanOption,BanOptionData> options)
    // Add an item on the whitelist of a world and save in config

    Blacklist    getBlacklist()
    // Get the blacklist map

    org.bukkit.inventory.ItemStack    getCustomItem(String customName)
    // Get a cloned ItemStack for the custom item named customName.

    String    getCustomItemName(BannedItem item)
    // Try to get the custom item name of the given item.

    String    getCustomItemName(org.bukkit.inventory.ItemStack item)
    // Try to get the custom item name of the given item.

    CustomItems    getCustomItems()
    // Get the custom items map

    BanDatabase    getDatabase()
    // Get the BanItem database, containing blacklist, whitelist and custom items.

    static BanItemAPI    getInstance()
    // Get a static instance of the api.

    Whitelist    getWhitelist()
    // Get the whitelist map

    boolean    isBanned(org.bukkit.entity.Player player, org.bukkit.Location location, BannedItem item, BanOption option, BanData... data)
    // Check if the item is banned, in both blacklist and whitelist, sending a message to the player if it's the case.

    boolean    isBanned(org.bukkit.entity.Player player, org.bukkit.Location location, BannedItem item, boolean sendMessage, BanOption option, BanData... data)
    // Check if the item is banned, in both blacklist and whitelist, sending a message or not to the player.

    boolean    isBanned(org.bukkit.entity.Player player, org.bukkit.Location location, org.bukkit.inventory.ItemStack item, BanOption option, BanData... data)
    // Check if the item is banned, in both blacklist and whitelist, sending a message to the player if it's the case.

    boolean    isBanned(org.bukkit.entity.Player player, org.bukkit.Location location, org.bukkit.inventory.ItemStack item, boolean sendMessage, BanOption option, BanData... data)
    // Check if the item is banned, in both blacklist and whitelist, sending a message or not to the player.

    boolean    isBanned(org.bukkit.entity.Player player, org.bukkit.Location location, org.bukkit.Material material, BanOption option, BanData... data)
    // Check if the item is banned, in both blacklist and whitelist, sending a message to the player if it's the case.

    boolean    isBanned(org.bukkit.World world, BannedItem item, BanOption option, BanData... data)
    // This method is used to check if the item is banned, in both blacklist and whitelist, not involving a player This method is mainly used to // check dispensers dispense and hoppers transfer

    boolean    isBanned(org.bukkit.World world, org.bukkit.inventory.ItemStack item, BanOption option, BanData... data)
    // This method is used to check if the item is banned, in both blacklist and whitelist, not involving a player This method is mainly used to // check dispensers dispense and hoppers transfer

    boolean    isBanned(org.bukkit.World world, org.bukkit.Material material, BanOption option, BanData... data)
    // This method is used to check if the item is banned, in both blacklist and whitelist, not involving a player This method is mainly used to // check dispensers dispense and hoppers transfer

    boolean    isBlacklisted(org.bukkit.entity.Player player, org.bukkit.Location location, BannedItem item, boolean sendMessage, BanOption option, BanData... data)
    // Check if the item is blacklisted, sending a message or not to the player.

    boolean    isBlacklisted(org.bukkit.World world, BannedItem item, BanOption option, BanData... data)
    // Check if the item is blacklisted, not involving a player

    boolean    isWhitelisted(org.bukkit.entity.Player player, org.bukkit.Location location, BannedItem item, boolean sendMessage, BanOption option, BanData... data)
    // Check if the item is whitelisted (allowed), sending a message or not to the player.

    boolean    isWhitelisted(org.bukkit.World world, BannedItem item, BanOption option, BanData... data)
    // Check if the item is whitelisted, not involving a player

    void    load(org.bukkit.command.CommandSender sender, org.bukkit.configuration.file.FileConfiguration config)
    // (re)Loading the plugin with this configuration file

    void    removeCustomItem(String name)
    // Remove the custom ItemStack named name

    void    removeFromBlacklist(BannedItem item, org.bukkit.World... worlds)
    // Remove the banned item from blacklisted worlds and save the config.yml file.

    void    removeFromWhitelist(WhitelistedWorld ww, BannedItem item)
    // Remove the item from the whitelist and save in config.yml (comments in file may be removed)
    [​IMG]
    For any bugs/questions/suggestions -> PM me here or on discord (Andross#5254).
    If you like this plugin, please rate it and/or leave a comment! Thanks! :)
    Or give me a coffee:
    [​IMG]
    Kdriiq, SamoNyan, lRAx and 8 others like this.

Recent Reviews

  1. CobraYT
    CobraYT
    4/5,
    Version: 2.4
    Great Support for it its really good plugin can block God apples if done correctly so thats nice for fac servers
  2. Kdriiq
    Kdriiq
    4/5,
    Version: 2.4
    Very good plugin indeed.
    Although when I try to block the use of the enchanted Trident with Riptide, a glicht occurs.
    1. Andross
      Author's Response
      Thanks.
      Please contact me on discord, we can surely found a fix.
  3. lucasryw
    lucasryw
    5/5,
    Version: 2.4
    hey man, how to UNBAN an item? No command for this?? I found in the config. Should I delete from the config? other thing: I banned fireworks consume. then I banned fireworks craft. now I have just craft, not consume anymore, I thought it would add both... Is there a way to do that? thanks for the plugin!
    1. Andross
      Author's Response
      Thanks for the review. Contact me on discord: Andross#5254
  4. Ikuria
    Ikuria
    5/5,
    Version: 2.4
    wonderful plugin, lots of options and a very kind author!
    nice support! need someone like him for my server xD
    1. Andross
  5. MartyJons
    MartyJons
    5/5,
    Version: 2.4
    VERY GOOD PLUGIN! -----------------------------------------------------------------------------
    1. Andross
  6. BoolyStudy
    BoolyStudy
    5/5,
    Version: 2.4
    support for 1.16.2 please, and a great complement I'm still waiting for the premium version :)
    1. Andross
      Author's Response
      Thanks! It should already be compatible with 1.16.X. No premium version in preparation, I'll keep updating and adding features to it for free. You can still donate if you appreciate my work, thanks!
  7. SamoNyan
    SamoNyan
    5/5,
    Version: 2.4
    -------------------------
    Great plugin!! Would you add CustomModelData to metadata!
    1. Andross
      Author's Response
      Thanks! This will be added on next version.
  8. Halmee
    Halmee
    5/5,
    Version: 2.3
    Really good plugin which I needed. I was using few differend plugins before I found this one, author included most important things in it. Worth recommending!
    1. Andross
  9. An3
    An3
    4/5,
    Version: 2.3
    It's a really good plugin to ban items from different worlds, I use this for my parkour event where people were banned from using an elytra and it worked great! The only thing that would be cool to get fixed is regions. Whenever someone enters a region, the armor that they are wearing should be put in their inventory when banning those items from wearing or placing them.
    1. Andross
      Author's Response
      Thanks. Please PM me for bugs/questions/suggestions.
  10. XNLGamerz
    XNLGamerz
    5/5,
    Version: 2.3
    ------------------------

    Great ban item plugin!. Support is from the developer is excellent
    1. Andross