# RestrictIO Banning blocks and items with ease # RestrictIO ##### Links - Curse - [Source](https://git.unitedworldminers.com/io/RestrictIO) - [Issues](https://git.unitedworldminers.com/io/RestrictIO/issues) - [Development builds](https://git.unitedworldminers.com/io/RestrictIO/pipelines?scope=branches) # Ban Entry Structure Every ban entry has a structure consisting of Criterias, Actions and Triggers # Criterias A ban entry may have multiple criterias that will be matched against when checking a block or item. Every criteria has to match for a ban entry to fit.
**Name** | **Parameters** | **Description** |
ID | String itemID | Match the item id (e.g. `minecraft:stone`). Blocks without a corresponding item can't be matched |
Meta | int meta | Match the item meta or damage. |
Dimension | String dimName | the world name where the entry should apply. The id is also allowed |
Nbt | String nbtJson | Matches the item's NBT tag. For blocks it matches to the tile entity's NBT. For blocks without tile entity this criteria will be ignored. |
Player | String name | The playername of the player for which the the entry should be valid |
Mod | String modid | The modID the item will be matched against. The modID is the first part of the item's resource location (e.g. `minecraft` for `minecraft:stone`) |
Not | Criteria crit | Negates a given criteria (e.g. `Not(Dimension(0))` will be any dimension exept 0) |
And | Criteria c1, Criteria c2 | Combines two criterias with a logical AND. This is not very useful in the ban entry itself because the criterias in the ban entry are already linked to each other with AND |
Or | Criteria c1, Criteria c2 | Combines two criterias with a logical OR |
**Name** | **Parameters** | **Description** |
Remove | - | Removes the item or block from the world. By default the player can keep the block or item that is banned (this is useful when an item is only banned in some dimensions). |
Message | String message | Prints a message to the player. |
Log | - | Logs the incident to the console |
Kick | String kickMessage | Kicks the player from the server with the given message |
Ban | String kickMessage, String banMessage | Bans a player from the server |
ServerCommand | String command | Executes a command in a console point of view |
PlayerCommand | String command | Executes a command in a player point of view |
%p | The player name |
%uuid | The player's UUID with hypens |
%id | The item id |
%meta | The item meta / damage |
%size | The item stack size |
%dim | The dimension id of the incident |
**Name** | **Description** | **Checked Items** | **Performance Cost** |
BlockBreak | When a block gets broken | The block being broken | low |
BlockPlace | When a block gets placed | The block being placed | low |
InvScan | Periodic (all 30s) scan of all player inventories | All stacks in the player's inventory | low |
ItemDrop | When a player drops an item or when he dies | The item(s) being dropped | low |
ItemPickup | When a player tries to pickup an item | The items will be picked up | high |
ItemInteract | When a player interacts (item rightclick, block left or rightclick) | The (optional) block the player interacts with and/or (optional) the item in hand | very high |
ReciepeRegistration | When the reciepes get registered. The reciepe will be disabled globally! | All standard shape(less) crafting outputs | on startup |
For performance reasons you should use as few triggers as possible for your needs.
Don't use BlockBreak/BlockPlace in conjunction with ItemInteract! ItemInteract covers the them.
##### Examples: - Blocking a machine that is not placed - BlockPlace - ReciepeRegistration (when not allowed anywhere) - Blocking a machine that may have already been placed - ItemInteract - ReciepeRegistration (when not allowed anywhere). - Completely blocking an item or block that is already in inventories and in the world - ItemDrop - ItemPickup - ItemInteract - ReciepeRegistration - InvScan # Manage Bans After you got to read what a ban consists of we have to talk about adding and removing bans. # Ingame GUI RestrictIO has an ingame GUI that can be opened with `/rio gui`. # RestrictIO command You can manage the bans over the console with the `/rio` commands.Unfortunately you can't edit a ban over console - you have to remove the old and recreate it. Alternatively you can edit a ban with the ingame GUI or by editing the file.
##### Adding a ban `/rio banIf you want to use spaces in strings like in the Message action, use underscores instead of spaces! If you explicitly want to use underscores, escape them with a backslashes.
**Examples:** `rio ban ID(minecraft:wool),meta(12) remove(),Message(This_is_banned!!!) all` removes brown wool and gives a message at all incidents. `rio ban mod(minecraft) none blockbreak,blockplace` blocks any block break or place without any other action ##### Removing a ban `rio unban**Subcommand** | **Additional Parameters** | **Description** |
gui | - | Opens a GUI if the console is too ugly for you |
reload | - | Reloads the config, overrides current config if it succeeds to load the new config |
list | - | Lists all current ban entries |
ignore | optional playername | executes /ignoreitembans |
show | entry index | Shows a single ban entry |
ban | criterias, actions, triggers | Creates and adds a new ban entry (see [managing bans](https://wiki.ender.io/books/restrictio/page/restrictio-command "RestrictIO command")). Saves the config afterwards |
unban | entry index | Removes a ban entry. Saves the config afterwards |