[ADMN/DEV] PermissionsBukkit v2.0 - Official Default Groups Plugin [1.5.2-R1.0]

Discussion in 'Archived: Plugin Releases' started by SpaceManiac, Jul 17, 2011.

  1. PermissionsBukkit - the Official Default Groups Plugin
    Current Version: v2.0
    Find PermissionsBukkit on BukkitDev!

    If you are getting a specific error or cannot determine what is wrong with your permissions file, filing a ticket on BukkitDev will make me much more likely to respond to you; general questions are best to ask in this thread or on the forums on BukkitDev.

    It's been a long time coming, but with the accomplishment of build 1000 Bukkit has finally accomplished a built-in Permissions system (codenamed Superperms). For more info on how they work, and how to integrate them with your plugin, see the official Permissions FAQ. Keep in mind that you should rarely, if ever, have to hook this plugin directly; instead keep things in the realm of checking player.hasPermission("yourplugin.node"). The FAQ thread has more info on how to use Superperms with things like chat prefixes/suffixes.

    • Storage of users and groups in plugins/PermissionsBukkit/config.yml.
    • Both users and groups can be assigned individual permissions and parent groups to inherit permissions from.
    • Support for global and per-world permissions.
    • Reload configuration from file with out reloading the plugin.
    • Ability to check if a player has a specific permission node.
    • Ability to dump all permissions a player has and the plugins that set them.
    • Ability to print plugin, description, and default for a given permission node.
    • Ability to modify the permissions of groups and users and the groups of a user in-game.
    • Built-in antibuild via the "permissions.build" node (defaults to allowing anyone to build).
    • A minimalistic bridge from Permissions 3.0 to Superperms is available as a separate plugin, which does not depend on PermissionsBukkit.
    Command Usage:

    Show Spoiler
    PermissionsBukkit uses the command /permissions, with aliases /perms and /perm.

    /permissions reload - reload the configuration from disk.
    /permissions check <node> [player] - check if a player or the sender has a permission (any plugin).
    /permissions info <node> - prints information on a specific permission.
    /permissions dump [player] [page] - prints info about a player's (or the sender's) permissions.
    /permissions setrank <player> <group> - set a player to be in a group with per-group permissions.
    /permissions group - list group-related commands.
    /permissions group list - list all groups.
    /permissions group players <group> - list players in a group.
    /permissions group setperm <group> <[world:]node> [true|false] - set a permission on a group.
    /permissions group unsetperm <group> <[world:]node> - unset a permission on a group.
    /permissions player - list player-related commands.
    /permissions player groups <player> - list groups a player is in.
    /permissions player setgroup <player> <group,...> - set a player to be in only the given groups.
    /permissions player addgroup <player> <group> - add a player to a group.
    /permissions player removegroup <player> <group> - remove a player from a group.
    /permissions player setperm <player> <[world:]node> [true|false] - set a permission on a player.
    /permissions player unsetperm <player> <[world:]node> - unset a permission on a player.

    All commands have in-game help and are usable from the server console.

    Show Spoiler
    A permission node is a string like 'permissions.build', usually starting with the name of the plugin. Refer to a plugin's documentation for what permissions it cares about. Each node should be followed by true to grant that permission or false to revoke it, as in 'permissions.build: true'. Some plugins provide permission nodes that map to a group of permissions - for example, PermissionsBukkit has 'permissions.*', which automatically grants permissions for all PermissionsBukkit commands. You can also specify false for permissions of this type.

    Users inherit permissions from the groups they are a part of. If a user is not specified here, or does not have a 'groups' node, they will be in the group 'default'. Permissions for individual users may also be specified by using a 'permissions' node with a list of permission nodes, which will override their group permissions. World permissions may be assigned to users with a 'worlds:' entry.

    Groups can be assigned to players and all their permissions will also be assigned to those players. Groups can also inherit permissions from other groups. Like user permissions, groups may override the permissions of their parent group(s). Unlike users, groups do NOT automatically inherit from default. World permissions may be assigned to groups with a 'worlds:' entry.

    The cannot-build message is configurable. If it is left blank, no message will be displayed to the player if PermissionsBukkit prevents them from building, digging, or interacting with a block. Use '&' characters to signify color codes.

    An example configuration file might look like this:
                permissions.example: true
            - admin
                permissions.build: false
                permissions.*: true
            - user
                permissions.build: true
                    coolplugin.item: true
            - default
        build: '&cYou do not have permission to build here.'

    Show Spoiler
    PermissionsBukkit checks for the following permission nodes:
    • permissions.build - Allows a player to build. Defaults to true.
    • permissions.help - Allows viewing of usage for /permissions.
    • permissions.reload - Allows use of /permissions reload.
    • permissions.check - Allows use of /permissions reload.
    • permissions.info - Allows use of /permissions reload.
    • permissions.dump - Allows use of /permissions reload.
    • permissions.group.help - Allows viewing of usage for /permissions group.
    • permissions.group.list - Allows use of /permissions group list.
    • permissions.group.players - Allows use of /permissions group players.
    • permissions.group.setperm - Allows use of /permissions group setperm.
    • permissions.group.unsetperm - Allows use of /permissions group unsetperm.
    • permissions.player.help - Allows viewing of usage for /permissions player
    • permissions.player.groups - Allows use of /permissions player groups.
    • permissions.player.setgroup - Allows use of /permissions player setgroup.
    • permissions.player.addgroup - Allows use of /permissions player addgroup.
    • permissions.player.removegroup - Allows use of /permissions player removegroup.
    • permissions.player.setperm - Allows use of /permissions player addgroup.
    • permissions.player.unsetperm - Allows use of /permissions player removegroup.
    Also, the following parent nodes are provided for convenience:

    • permissions.* - Maps to permissions.help, .reload, .check, .info, .dump, and to permissions.group.* and permissions.player.*. Defaults to op.
    • permissions.group.* - Maps to permissions.group.help, .list, .players, .setperm, and .unsetperm.
    • permissions.player.* - Maps to permissions.player.help, .groups, .setgroup, .addgroup, .removegroup, .setperm, and .unsetperm.

    Frequently Asked Questions:
    1. Where are my * nodes? (open)
    Bukkit's Superperms has no built-in concept of a global '*' node that automatically gives all permissions, which is intentional - a player can instead be given all permissions by being given 'op' status (that is, listed in ops.txt). Additionally, individual plugins define a parent node (which could be 'pluginname.*' or 'pluginname.all' or anything else) which maps to whatever subpermissions in that plugin the author desires.

    An example is PermissionsBukkit, which provides three such permissions: 'permissions.group.*' for all /permissions group commands, 'permissions.player.*' for all /permissions player commands, and'permissions.*' for all /permissions commands (including permissions.group.* and permissions.player.*).

    If you are using SuperpermsBridge, you can do something similar to '*' nodes for plugins which use Permissions 2.7/3.1 - see the next FAQ for more information.
    2. How do I use SuperpermsBridge? (open)
    SuperpermsBridge is kind of like FakePermissions for GroupManager or PermissionsBridge for PermissionsEx. Once it's installed, it pretends to be the Permissions plugin and converts any plugins that use Permissions 2.7 or Permissions 3.1 to use Superperms instead.

    You can have PermissionsBukkit without SuperpermsBridge or SuperpermsBridge without PermissionsBukkit if you like, but both of these are limited in functionality. If you install SuperpermsBridge without PermissionsBukkit you will not be able to make use of PermissionsBukkit's groups feature or admin commands, and if you install PermissionsBukkit without SuperpermsBridge, plugins that have not updated to use Superperms directly will not function.

    For plugins that use Permissions 2.7/3.1, you can use the special node 'superpermbridge.*' to give the equivalent of what used to be the '*' node for plugins that do not use Superperms directly. If you don't want to give the * node, you can also use the node 'superpermbridge.pluginname' to do the equivalent of what used to be the 'pluginname.*' node. Once again, these only apply to plugins that SuperpermsBridge handles and not to plugins using Superperms directly.
    3. How do I use the root permissions.yml? (open)
    The file 'permissions.yml' in the root of your server can be used to set up custom parent permissions. Parent permissions are a single node that, when given to a player or group, automatically give all their children node. Here's a simple example:
            commandbook.motd: true
            commandbook.say: true
            commandbook.say.me: true
            commandbook.time: true
    Now, if you give a player the node 'server.basics', they automatically get all the nodes listed here. Children may also say 'false' instead of 'true', in which case giving the parent will remove the child instead of giving it.

    You can also specify a description if you like, which can be used by plugins to provide information on your node (such as PermissionsBukkit's /perm info command). If you want, you can also provide a default, which can be one of "true", "false", "op", or "notop". CraftBukkit will automatically assign everyone, no one (default), ops, or non-ops the children permissions based on the specified default. Without any plugin like PermissionsBukkit, you can use this defaults system as a limited way to assign people permissions. Here's a more complex example:
        description: Basic permissions for My Cool Server.
        default: true
            commandbook.motd: true
            commandbook.say: true
            commandbook.say.me: true
            commandbook.time: true
        description: Admin permissions for My Cool Server.
        default: op
            commandbook.broadcast: true
            commandbook.teleport: true
            commandbook.kick: true
            commandbook.ban: true
    You can also define permissions without children, but this is of limited usefulness in permissions.yml (though is important in plugin.yml; see question #6)
    4. How do I switch from (other Permissions plugin)? (open)
    Depends on the Permissions plugin! If you were using PEX's YAML backend, I have a converter done and available on the PermissionsBukkit Tools page. Also available on the tools page is an automatic converter for Essentials GroupManager users.yml and groups.yml files. Automatic converters for Permissions 2.7 and 3.x are on their way, but in the meantime you can still convert your configurations manually.
    5. Where are prefixes and suffixes (or option nodes)? (open)
    Bukkit Superperms has no built-in prefix/suffix settings or non-boolean permission nodes, so individual chat plugins will have to start supporting Superperms in order to make use of non-Permissions-plugin based prefixes and suffixes. Herochat, iChat, and Simple Suffix are all aware of the Superperms update, but in the meantime you can use mChat, which already supports Superperms.

    Once you install mChat and configure the mchat.prefix, mchat.suffix, and mchat.group names in its configuration file (see the example), use PermissionsBukkit to give players or groups the permissions "mchat.prefix.admin", replacing "admin" with whatever node you configured. For example, with an mchat configuration that looks similar to this:
    da-name-format: '+prefix+name&e'
    date-format: HH:mm:ss
    message-format: '+prefix+name&f: +message'
            admin: '&4DtK [SO] &7 '
            sadmin: '&9DtK [SA] &7 '
            jadmin: '&aDtK [JA] &7  '
            member: '&cDtK [M] &7 '
    You can assign players or groups the mchat.prefix.admin node to get the "SO" prefix, mchat.prefix.sadmin to get the "SA" prefix, and so on.
    6. (Coders) How do I set up my plugin.yml? (open)
    Take a look at this post in Dinnerbone's FAQ for an example. This is a lot like the setup of permissions.yml (see above), but you can also define non-parent permissions (just include description and default and leave out children).
    7. Is PermissionsBukkit outdated? (open)
    No! PermissionsBukkit 2.0 was last updated for 1.3.1-R2.0, is verified to work on 1.4.7-R1.0, and is unlikely to break on future releases.

    Current Version:

    PermissionsBukkit v2.0 (jar) (details)
    Old Versions:
    PermissionsBukkit v1.6 (jar) (details)



    Friday 7 September 2012 (2.0)
    • Fixed a case-sensitivity issue with setting per-world permissions that could cause some permissions to fail to apply.
    • Added /perm setrank <player> <group> subcommand (alias rank) with per-group permissions (permissions.setrank and permissions.setrank.<group>)
    • Added plugin metrics via http://mcstats.org/plugin/PermissionsBukkitMCStats (disableable in plugins/PluginMetrics/config.yml)
    Wednesday 29 February 2012 (1.6)
    • Fixed some massive issues that were caused due to having uploaded a buggy, in-development version instead of 1.5.
    • Note: If your configuration was messed up as a result of this issue, the new build should gradually correct it as needed.
    Saturday 25 February 2012 (1.5b)
    • Revamped to be compatible with R5.
    • Fixed issues with permissions not carrying properly on world change.
    • Many internal improvements for performance and stability.
    • SuperpermsBridge: in honor of R5 removing deprecated code, SuperpermsBridge is officially gone!
    Monday 18 July 2011 (1.1/1.2)
    • Fix BukkitContrib incompatibility issues.
    • Improved the output of the /perm check command.
    • Fixed issues when 'users:' is not specified in the config file.
    • Fixed the /permissions reload command.
    • SuperpermsBridge: improve wildcard handling; in addition to 'superpermbridge.*' and 'superpermbridge.pluginname', now supported are 'superpermbridge.plugin.*', 'superpermbridge.plugin.subnode.*', and so on.
    Monday 18 July 2011 (1.0/1.1)
    • SuperpermsBridge: adding the special 'superpermbridge.*' and 'superpermbridge.pluginname' nodes (see #2 in the FAQ for details).
    Sunday 17 July 2011 (1.0/1.0)

    • Initial release of PermissionsBukkit v1.0 and SuperpermsBridge v1.0.
    madmac, Gesundheit, tripleX and 23 others like this.
  2. So is there an easy convert? From perm 2.7.4 to this?
  3. Working on that and some other transitional tools right now.
    MuisYa and kahlilnc like this.
  4. iConomy?! Permissions 3.x support?! MySQL?!

    On a serious note - excellent - we've been waiting for this for so long :D
    tips48 likes this.
  5. Offline


    that was fast
  6. Offline


    Nice work, thanks !

    Looking forward to MySQL support too :)
  7. Offline


    So, can someone gave me info :
    - My old "Permissions 3.1.5" will work with it, like essentials.kick, it will work with ?
  8. Offline


    Thank you so much!

    This will allow me to test out MV2 with the bukkit perms!
    selonianth and Gabriel333 like this.
  9. Offline


    is this better than permissions 3.x
  10. Offline


    I hate to be a pest, but could we get some exact installation instructions, and perhaps some example configs?
    spydercanopus, kjhf, Zenithas and 3 others like this.
  11. Offline


    Oh yes this would be very very helpfull .... since build 1.7.x i cant make any group ...permissions wont work groupmanager wont work .... so everyone can do all or nothing .... that so bad ...
  12. To install, just put plugin in your plugins directory and configuration in plugins/PermissionsBukkit/config.yml. An example configuration is already in the post under 'Configuration'. If you want PermissionsBukkit to work with plugins that assume you are running Permissions 2.7 or 3.0, you should also install the SuperpermsBridge jar.
    RobH779 likes this.
  13. Offline


    Does this allow you to set prefix's and suffix's? ie iChat
  14. Offline


    Yes MySQL support FTW! :p

    --> please WITH prefix option that is realy important to me :oops:
  15. Offline


    I'm switching to this as soon as McMyAdmin adds it to the client :D
  16. Offline


    i thought permissions were hard to set up. can you create an auto port to this so i dont have to spend 6h just to rage like hell and after 8h finally understanding what to do and after 12h getting it to work properly
    DasKrieger and OZ4RK like this.
  17. Offline


    Hey Thanks a lot SpaceManiac! This plugin works great for all my other plugins that don't work with Permissions 3.1.x!
    You got yourself a new member! Me!
  18. I'll look into MySQL support when I get a chance.

    Due to the nature of Bukkit's new permissions, PermissionsBukkit doesn't support prefixes and suffixes directly; HeroChat 5.0 will probably have support for prefixes and suffixes via the new permissions through a configuration/node-based setup, and I'll contact the iChat devs when I get a chance.

    I'll talk to PhonicUK about it tomorrow.

    I've been working on this and will have it done as soon as I get past a technical barrier I'm running into.

    Thanks :)
  19. Offline


  20. This makes PermissionBukkit pretend to be Permissions 3.x to other plugins that have not updated to support Bukkit Permissions yet.
  21. Offline


    How do i add more groups to this?
  22. Offline


    I tried to manually convert my permissions to this, but when giving the admin group the * permission, i get this error:

    2011-07-18 03:14:20 [WARNING] Server permissions file permissions.yml is not valid YAML: while scanning an alias
     in "<reader>", line 988, column 13:
                    *: true
    expected alphabetic or numeric character, but found but found :
     in "<reader>", line 988, column 14:
                    *: true
    removing the * permission just to see if everything else works, gives me this error:
    2011-07-18 03:22:38 [SEVERE] Permission node 'groups' in server config is invalid
    java.lang.IllegalArgumentException: 'default' key contained unknown value
    	at org.bukkit.permissions.Permission.loadPermission(Permission.java:121)
    	at org.bukkit.craftbukkit.CraftServer.loadCustomPermissions(CraftServer.java:418)
    	at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:152)
    	at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:284)
    	at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:271)
    	at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
    	at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Which does not help me at all, since it only tells me that the default key contained unknown value... even thou i cannot see any problem in it compared to the example, there is no tabs or wrong line-endings either.
  23. Offline


    Hey Ive got a question! Could you possibly put prefix and suffix support so I can use the Simple Prefix plugins to change the name colors of different groups?
  24. Offline


    ok second attempt at writing this (page failed!)

    to questions
    1) we use permissions 3 and have 5 worlds, 4 of the 5 have the same permissions and groups but 1 is special pvp world where players have different groups to the other worlds, yet reading the first post seems to suggest that u canonly specify a special world permission per group not a special group per world, have i got this wrong? if i havent can you fix/add that please as it will completly null and void our pvp world :(

    2) just some clarification on the enable disable commands needed (great commands by the way nice and simple not like permissions commands **shudder**) we use falsebook (love falsebook) for all our ic needs, lets take the permission node im most concerned about to try and suss this out (fast reply would be great as i need to do the permission files tonight) falsebook.ic.selftriggered is the same as doing falsebook.ic.mc0020 falsebook.ic.mc0111 falsebook.ic.mc0232 etc etc (about 13 of them) but wait mc0232 is selftrigered set time! i dont want my players to have that so if i do this (lets assume group is called Truseted,cos thats its name)

    /permissions group setperm Trusted falsebook.ic.selftriggered true
    /permissions group setperm Trusted falsebook.ic.mc0232 false

    since mc0232 is enabled in the first line as part of the grouped permissions but then specificly denied in the second line, would that allow players all the grouped ones but the mc0232 or would it just make the server go bang?
  25. Just add more entries under the 'groups:' node in the config.yml, similar to the example.

    For the first thing, due to the way the new Superperms system works, there's no way to specify a global wildcard permission. Once individual plugins start supporting the new Superperms system, each plugin will have some equivalent of PermissionsBukkit's "permissions.*"

    On the second thing, could you please post your config? Right now there has to be a group named 'default' as the default group. I may change this eventually, but in the meantime there's nothing that should have to read from the group name, so it's not too big an issue.

    I will contact the author of Simple Prefix about using Superperms; in the meantime, if you're willing to take the effort to set it up, the plugin mChat supports Superperms already.
  26. Offline


    My full permissions.yml is here (in txt form for easier read in browser)
  27. Offline


    SpaceManiac I will try to get it going with mChat for now! Thanks for telling whihc plugin to use
  28. To your first question; you might be able to have a single group (say Regular) that has permissions defined globally and in the worlds/pvpworld settings you disable all the permissions you need to remove (plugin.node: false) and enable all your PVP-world-specific permissions.

    And to your second question, I would have to test it myself, but that ought to do it. The worst that will happen is the mc0232 permission being on true anyways, and if it is, I can look into a way to fix it up. It shouldn't break anything, at least.

    Ah, I see - move your current permissions.yml to plugins/PermissionsBukkit/config.yml. The permissions.yml file is part of CraftBukkit and can be used by server admins to define custom parent/child permissions.

    No problem.
  29. Offline


    I'm only running SuperpermsBridge.jar as it stated it was a bridge that didn't need PermissionsBukkit, can i run them both without it screwing up my server?
  30. Ah, I wasn't clear enough, my bad. Yes, they both can work together. Right now PermissionsBukkit is the only plugin that acts as a permission provider for the new Superperms, and (since it's the only one) is required for using the new Superperms. The SuperpermsBridge jar will make plugins expecting to use Permissions 2.7/3.0 compatible with PermissionsBukkit or (when they exist) any other plugins that act as permission providers for Superperms.

Share This Page