Skip to content

Permissions

Adam edited this page Aug 10, 2024 · 5 revisions

OpenInv uses a permission hierarchy where all permission nodes (with the exception of access levels) are granted by parent nodes. For example, if you want to grant openinv.inventory.edit.self and openinv.inventory.edit.other, you can grant the parent node openinv.inventory.edit instead.

Legacy permissions for versions < 5.0.0 can be found here.

Master Node (openinv)

openinv is the parent of all other nodes. This is the generic "I should be able to do everything" node. It grants access level 1.

Inventory Permissions (openinv.inventory)

Viewing Permissions (openinv.inventory.open)

At least one viewing node is required to use /openinv.
openinv.inventory.open.self: Permission to view own inventory.
openinv.inventory.open.other: Permission to view others' inventories.

Editing Permissions (openinv.inventory.edit)

openinv.inventory.edit.self: Permission to edit own inventory. Also grants openinv.inventory.open.self for convenience.
openinv.inventory.edit.other: Permission to edit others' inventories. Also grants openinv.inventory.open.other for convenience.

Note

As these permissions grant viewing nodes, if you negate them, you indirectly negate the viewing nodes. To allow viewing you will need to explicitly grant the viewing nodes.

Editor Slot Control (openinv.inventory.slot)

openinv.inventory.slot.head.any: Allow putting any item into the head slot.
openinv.inventory.slot.chest.any: Allow putting any item into the chest slot.
openinv.inventory.slot.legs.any: Allow putting any item into the legs slot.
openinv.inventory.slot.feet.any: Allow putting any item into the feet slot.
openinv.inventory.slot.drop: Allow access to the drop slot, used to drop items as if the player had dropped them. Access to the drop slot also requires permission to edit the viewed inventory.

Warning

If a plugin ignores OpenInv's slot types and attempts to insert things into the wrong slots directly, they may still drop at the player - this is to prevent item deletion. Exercise caution with sorting plugins!

Ender Chest Permissions (openinv.enderchest)

Viewing Permissions (openinv.enderchest.open)

At least one viewing node is required to use /openender.
openinv.enderchest.open.self: Permission to view own ender chest.
openinv.enderchest.open.other: Permission to view others' ender chests.

Editing Permissions (openinv.enderchest.edit)

openinv.enderchest.edit.self: Permission to edit own ender chest. Also grants openinv.enderchest.open.self for convenience.
openinv.enderchest.edit.other: Permission to edit others' ender chests. Also grants openinv.enderchest.open.other for convenience.

Note

As these permissions grant viewing nodes, if you negate them, you indirectly negate the viewing nodes. To allow viewing you will need to explicitly grant the viewing nodes.

Player Access (openinv.access)

openinv.access.offline: Access offline players for inventories, ender chests, and searching.
openinv.access.online: Access online players for inventories, ender chests, and searching.
openinv.access.crossworld: Access players in other worlds for inventories, ender chests, and searching.

Access Levels

Access levels are a way to control who can access others' inventories. For example, maybe you're building a new game mode and you don't want your regular moderators sneaking peeks of the spicy features you're adding to rewards. Maybe you have a creative world and don't want inventories opened in that world.

Note

At this time, OpenInv does not support permissions for offline players - it's not a feature of Bukkit. If you want access nodes to work accurately, make sure to not grant openinv.access.offline to restricted users!

Nodes are modelled after vanilla's permission levels. Everyone without a specific node has access level 0. An access level of greater than or equal to the target allows opening inventories. Tie behavior is determined by the configuration setting settings.equal-access. Valid values are allow to allow, deny to block access, and view for view-only mode. The default is view to allow equals to check each other.

openinv.access.level.1: Granted by openinv.access. Allows accessing players with access up to level 1.
openinv.access.level.2: Not granted by openinv.access! Allows accessing players with access up to level 2.
openinv.access.level.3: Not granted by openinv.access! Allows accessing players with access up to level 3.
openinv.access.level.4: Not granted by openinv.access! Allows accessing players with access up to level 4.

Spectator Mode Features (openinv.spectate)

openinv.spectate.click: Perform normal inventory manipulation while in spectator mode.

Container Features (openinv.container)

openinv.container.any: Grants access to /anycontainer.
openinv.container.silent: Grants access to /silentcontainer.

Search Features (openinv.search)

openinv.search.inventory: Grants access to /searchinv, /searchender, and /searchenchant. openinv.search.enderchest: Grants access to /searchcontainer.

Migrating From Versions < 5.0.0

OpenInv's nodes are all now lower case. Additionally, parent nodes grant any child nodes (so openinv.inventory.open grants openinv.inventory.open.self and openinv.inventory.open.other) aside from access levels.

Old Node Equivalent New Nodes
OpenInv.* openinv
OpenInv.openinv openinv.inventory.open.other
OpenInv.openself openinv.inventory.open.self
OpenInv.editinv openinv.inventory.edit and openinv.inventory.slot
OpenInv.openonline openinv.access.online
OpenInv.openoffline openinv.access.offline
OpenInv.openender openinv.enderchest.open.self
OpenInv.editender openinv.enderchest.edit.self and openinv.enderchest.edit.other
OpenInv.openenderall openinv.enderchest.open.self and openinv.enderchest.open.other
OpenInv.exempt openinv.access.level.1 (with config setting settings.equal-access: deny)
OpenInv.override openinv.access.level.2
OpenInv.crossworld openinv.access.crossworld
OpenInv.search openinv.search.inventory
OpenInv.searchenchant openinv.search.inventory
OpenInv.anychest openinv.container.any
OpenInv.any.default N/A: feature removed - only affects first usage.
OpenInv.silent openinv.container.silent
OpenInv.silent.default N/A: feature removed - only affects first usage.
OpenInv.spectate openinv.spectate.click