Bukkit Permissions done right
CodsPerms is a lightweight Permissions alternative. Unlike most other popular permissions plugins, CodsPerms was initially built around the Bukkit Permissions API and thus completely aligns with it. Redundant features are excluded to prevent the need of an additional API to use them. Therefore, features like permission groups are automatically supported by any plugin which uses Bukkit permissions.
A permission plugin allows for giving some players special privileges while restricting others. It is more advanced than simply using OP and non-OP. A plugin such as this one is needed if you trust certain players over others and wish to give them more control over the server. i.e. appointing server moderators/admins or preventing new players from building without first being approved.
- Flat file (YAML) support
- Database (MySQL) support
- API to allow for a custom data storage implementation
- Grouped permissions including default and inheritance (using Bukkit's permissions.yml)
- Commands allow for assigning permissions from in-game
- Permission nodes may be added or negated to align with Bukkit's API
Group permissions are not supported as you can group permission nodes using Bukkit's permissions.yml file. Groups are created as permission nodes to allow for group checking through Bukkit's API rather than connecting to CodsPerms.
Commands may be typed in console or in game. When entering commands in console omit the slash. i.e. perm give Codisimus minecraft.command.tp
|Text without brackets||Items you must type as shown|
|<Text inside angle brackets>||Placeholder for which you must supply a value|
|[Text inside square brackets]||Optional items|
|Vertical bar (|)||Separator for mutually exclusive items; choose one|
|Ellipsis (…)||Items that can be repeated|
- /perm give <Player> <Node> [true|false] - Give a Player the specified permission node
- /perm give Codisimus minecraft.command.tp - Gives Codisimus the minecraft.command.tp permission node
- /perm give Codisimus minecraft.command.tp false - Sets the minecraft.command.tp permission node to false which ensures it is not inherited
- /perm take <Player> <Node> - Take the specified permmission node from a Player
- /perm take Codisimus minecraft.command.tp - Removes the minecraft.command.tp permission node for Codisimus
Permission nodes may be given to Players or permission groups using any permissions plugin such as CodsPerms.
- permissions.manage - Needed to set permissions
- Explicitly allows for use of the /perm command
Permission nodes are available from most Bukkit plugins and even for some vanilla Minecraft commands. You may find the need to give a Player on your server a permission node. For example, the Minecraft command /give is used to generate items and give them to a specific Player. This command could obviously be abused, therefore Players who are not OP (operator) cannot use the command. The /give command also has the permission node minecraft.command.give. The permission node can be given to an individual player using the /perm give command. Therefore the player will be able to generate items but won't be able to execute other commands such as one that stops the server completely.
You can easily give a Player a permission node as explained above. However, it could be tiresome to repeatedly give multiple permission node to multiple Players. Instead you can group several permission nodes into a single node by using Bukkit's permission.yml file. This single node can be given to Players as described above.
Most Minecraft servers will have a staff. This staff involves roles such as Admin, Moderator, Builder, Developer, etc. You can group permission nodes together before giving them to Players as explained above. You could make a group nodes such as staff.admin, staff.mod, etc. Then you simply give your staff member a single node to assign the role. A Player can even be assigned multiple roles in this way.
If you have multiple permission groups as explained above, you may want to create some inheritance rather than adding the permission nodes to multiple groups. In the screnario above you can give the staff.mod permission node to the staff.admin permission group. That way the Admin group will inherit all of the permissions that the Moderator group has.
TutorialsRequest a tutorial
FAQAsk a question
Other plugins have groups because they were created before the Bukkit API supported permissions. The Bukkit Permission API purposely does not support permission groups because they are not needed. Instead of adding Players to groups, you can group permission nodes together and give the parent node to the Players instead. For more information see Grouping permission nodes together within the Use Cases tab. Most plugins do not support checking if a Player is in a specific group. However, they do support normal permission nodes which is what CodsPerms uses as groups. Therefore, not having explicit permission groups make your other plugins more compatible with each other.
The Bukkit API does not support the wildcard node as explained here. It is up to the plugin developer to group their permission nodes. For this same reason, I do not support wildcards in my plugin.
With the Bukkit API, You can give a permission node to a Player and you can also take it away. All popular permissions plugins support this. However, Bukkit also allows for setting a permission node to false which few permissions plugins support. Setting a node to false means that the Player will not have that specific permission. This is needed if the permission node would typically be inherited or if it is given to all Players by default. An example of this would be the /me command which is available to everyone by default. You can take away permission to use this command by setting the minecraft.command.me node to false.