Cody M. Sommer

AKA Codisimus

PROGRAMMER | AUTHOR | REALLY NEAT GUY

Bukkit Permissions done right

Main Page

Description

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.

Why do I want this plugin?

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.

Features:

  • 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

Note:

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

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

Notation Description
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

Permissions

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

Use Cases

  • 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.

Tutorials

Request a tutorial
  • Tutorial to come...

  • Tutorial to come...

  • Tutorial to come...

  • Tutorial to come...

  • Tutorial to come...

FAQ

Ask 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.