[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. Offline

    SpaceManiac

    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.

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

    Configuration:
    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:
    Code:
    users:
        ConspiracyWizard:
            permissions:
                permissions.example: true
            groups:
            - admin
    groups:
        default:
            permissions:
                permissions.build: false
        admin:
            permissions:
                permissions.*: true
            inheritance:
            - user
        user:
            permissions:
                permissions.build: true
            worlds:
                creative:
                    coolplugin.item: true
            inheritance:
            - default
    messages:
        build: '&cYou do not have permission to build here.'
    

    Permissions:
    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:
    Code:
    server.basics:
        children:
            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:
    Code:
    server.basics:
        description: Basic permissions for My Cool Server.
        default: true
        children:
            commandbook.motd: true
            commandbook.say: true
            commandbook.say.me: true
            commandbook.time: true
    server.admin:
        description: Admin permissions for My Cool Server.
        default: op
        children:
            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:
    Code:
    da-name-format: '+prefix+name&e'
    date-format: HH:mm:ss
    message-format: '+prefix+name&f: +message'
    mchat:
        prefix:
            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.

    Downloads:
    Current Version:

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

    [​IMG]

    Changelog:

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

    chelben9

    you replied to me saying there was multi0world support and i said thnx but i need to know how it works
     
  3. Offline

    krinsdeath

    @chelben9 - In the example configuration, it gives an example of multiworld permissions. But, to alleviate your apparent stress, here's another:

    Code:
    groups:
      users:
        permissions:
          # this is a global node for 'users' group
          permissions.build: true
        worlds:
          # this node will override the global nodes if they exist for 'users'
          # this is a world name, according to your SERVER ROOT's containing world folders
          world:
            some.example.node: true
            some.other.node: false
          world_nether:
            permissions.build: false
            some.other.node: true
    
    As I said, the initial post explains it with an example config.yml (the same one that is generated when you first run the plugin in plugins/PermissionsBukkit/config.yml). If you read the header, and the layout of the file, you should understand.

    @Mathew Alden - I don't know what 'tk-ing' is. Please respond with a non-abbreviated version of whatever it means.

    @tryemo - The creator of this plugin, SpaceManiac, is busy with school and other obligations. In the mean time, I am helping to maintain the plugin (along with my other projects). As a result, I am unable to manipulate the topic itself (meaning its name, original post content, etc). The jar with my name "Krinsdeath's Temporary Fix Build" is updated and optimized for CraftBukkit 1060, and I suggest that you use it.

    @joselitoeu - The first post of the thread has an example configuration that should more than suffice as an explanation of how to set up groups. Furthermore, the commands are fairly well documented (type /permissions while in-game or on the console) and should provide more than enough power to set up your groups. The example configuration is generated by the plugin when you first run it, in plugins/PermissionsBukkit/config.yml. Read this file, and customize the groups to your liking.
     
  4. Offline

    chelben9

    thnx but i never got an example config
     
  5. Offline

    Jarwain

    The example config is located in the OP, under the spoiler under Configuration:
     
  6. Offline

    godgodgodgo

    Automatic converters for Permissions 2.7 and 3.x are on their way, but in the meantime you can still convert your configurations manually.

    *Whistles*
     
  7. Offline

    Mathew Alden

    I don't really understand it- I'm just learning to use this. Basically, under the UserList, you add world:. Then which world, and then the special permissions you want that person to have in that world.

    lol PK'ing???

    Player-killing?

    Killing other users?

    Maybe they don't use that abbreviation on Minecraft...

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 14, 2016
  8. Offline

    WarhawkXeroFire

    So, coming back from a small hiatus, it seems that more has changed than I knew, and I don't really like it. Superperms are feeling like a waste of time, not improving on the ground that other plugins already had - I have to use a plugin to access groups, whereas I could do the same before?

    Either way, it seems I can't build, and its linked to PermissionsBukkit, yet I don't see anything wrong. If I give myself any of the nodes, its like it ignores them... Even when I execute commands in MCMA, it still says I don't have permission to do things, even though it goes through.

    Running CB#1060 with LWC, Essentials, mChat, and the MCMA compatibility plugin

    Code:
    #Written by McMyAdmin v0.9.6.9
    
    users:
        WarhawkXeroFire:
            groups:
              - 'Administrators'
        kg4wxw:
            groups:
              - 'Administrators'
        wifiguru:
            groups:
              - 'Administrators'
    
    groups:
        Regulars:
            permissions:
                mchat.prefix.Regulars: true
                mchat.suffix.Regulars: true
                mchat.prefix.Everyone: false
                mchat.suffix.Everyone: false
            inheritance:
              - 'default'
        Moderators:
            permissions:
                mchat.prefix.Moderators: true
                mchat.suffix.Moderators: true
                mchat.prefix.Regulars: false
                mchat.suffix.Regulars: false
            inheritance:
              - 'Regulars'
        Administrators:
            permissions:
                lwc.mod: false
                lwc.admin: false
                permissions.*: true
                superpermbridge.*: true
                mchat.prefix.Administrators: true
                mchat.suffix.Administrators: true
                mchat.prefix.Moderators: false
                mchat.suffix.Moderators: false
            inheritance:
              - 'Moderators'
    messages:
        build: '&cYou do not have permission to build here.'
     
  9. Offline

    Rebeljah

    Are any chat plugins working with this? (iChat, Herochat)
    If so, How are they configured?
     
  10. Offline

    kuyan

    Feature request: do you think you could add an easy promotion feature (/promote, /demote) with tracks? This is mostly because the admins on my server keep complaining about how long the command is (/permissions player setgroup kuyanatan SupremeDictator). It would also be cool if we could limit how high some ranks could promote to if this feature came, hence tracks. Consideration is much appreciated, thanks!
     
  11. Offline

    daemitus

    So Im trying to check if a player belongs to a group, or any of its inherited groups.
    Shouldnt
    Code:
    public List<Group> getGroups(String playerName) {
    display them all, instead of just any groups assigned directly?
     
  12. Offline

    krinsdeath

    @daemitus - That will return all of the groups associated with the player you pass as an argument, not all groups period.
     
  13. Offline

    daemitus

    For example, Admin inherits user inherits default. getGroups(someAdmin) will only return admin.
    Shouldnt the function return all 3?

    -edit-
    My current implementation requires using getGroups(name) then recursively group.getinfo.getgroups on each inherited group. Just curious as to if that is the desired functionality.
     
  14. Offline

    chelben9

    i thing its tp-ing
     
  15. Offline

    krinsdeath

    @daemitus - I don't think so. That would make inheritance pointless.
     
  16. Offline

    brnr72

    I'm rooting for the dev with the task to make a convert so I can get my permissions users/groups yml files converted so I can use PermissionsBukkit. I have no drive at the moment to manually change them all.
     
  17. Offline

    Mathew Alden

    Teleporting?
     
  18. Offline

    WarhawkXeroFire

    Sorry to bother, but any help with this? Can't build, keep getting the error message of "You do not have permission to build here." - It's getting annoying...
     
  19. Offline

    krinsdeath

    Out of curiosity, can you do '/perm check permissions.build WarhawkXeroFire' from the console? I don't see anything immediately wrong with the file, but you don't have a default group listed. This shouldn't be an issue (permissions.build defaults to true) but I can't really say for sure what the problem is without knowing whether you actually have permissions.build set to true or not.
     
  20. Offline

    WarhawkXeroFire

    I can't execute it from the command line ingame, nor through the console in MCMA
     
  21. Offline

    daemitus

    In the console make sure using just "perm" instead of "/perm"
    If you cant use it in the console, its probably not loading at all.
     
  22. Offline

    chelben9

    yeah i think but it wasnt me thats just what i got from it just from logical thinking
     
  23. Offline

    WarhawkXeroFire

    Alright, well it looks like it isn't loading at all - what should I be looking for? I have a fairly vanilla server, passed running LWC, mChat, and Essentials. I have been running servers for a while now, but this is throwing me a loop lol.
     
  24. Offline

    BioRage

    @SpaceManiac

    Any Idea why I would be getting such an error

    "2011-08-30 04:25:29 [INFO] PermissionBukkit not found, everyone can use everything!"

    Latest, RB.
    Deleted old .jar, redownloaded a new one (The latest one)
     
  25. Offline

    Jarwain

    I'm sorry, but which version is the recommended version for Bukkit 1060?
    Krinsdeath's Temporary Fix Build
    PermissionsBukkit v1.1
    or SuperpermsBridge v1.2?
     
  26. Offline

    WarhawkXeroFire

    You will want the Temp Fix Build + SuperpermsBridge
     
  27. Offline

    lolzrofl

    If I am currently running Permissions 3.1.6, what do I need to do to use this?
    Will all my current plugins still be compatible?
     
  28. Offline

    Celtic Minstrel

    Um, you said "TK", not "PK". Don't be so surprised that people misunderstand when you've made a typo.
     
  29. Offline

    Mathew Alden

    I know... That's not what I meant.

    So... is there such a plug-in?

    First, you need to switch over to the new system. Most of the plug-ins are compatible but with the ones that aren't, you can get a plug-in called PermissionsBridge which makes them compatible with this.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 14, 2016
  30. Offline

    TCLG6x6

    i cant build in the nether :( here is the config:
    Code:
    groups:
        N00B:
            default: true
            info:
                prefix: ''
                suffix: ''
                build: false
            inheritance:
        Member:
            default: false
            info:
                prefix: '[Member]'
                suffix: ''
                build: true
            inheritance:
            - Default
            permissions:
            - warpplugin.warp
            - econplugin.basic.*
            - iConomyChestShop.shop.buy
            - iConomyChestShop.shop.sell
            - warpz0r.warp
            - warpz0r.home
            - warpz0r.sethome
            - craftbook.mech.elevator.use
        Moderator:
            default: false
            info:
                prefix: '[Moderator]'
                suffix: ''
                build: true
            inheritance:
            - Member
            permissions:
            - modplugin.ban
            - modplugin.kick
            - modplugin.unban
            - iConomyChestShop.shop.buy
            - iConomyChestShop.shop.sell
            - warpz0r.warp
            - commandbook.give
            - commandbook.give.stacks.unlimited
            - worldguard.god
            - worldguard.ungod
        Admins:
            default: false
            info:
                prefix: '[Admin]'
                suffix: ''
                build: true
            inheritance:
            permissions:
            - '*'
        VIP:
            default: false
            info:
                prefix: '[VIP]'
                suffix: ''
                build: true
            inheritance:
            permissions:
            - '*'
        Default:
            permissions:
            inheritance:
            default: false
        Moderaor:
            permissions:
            inheritance:
            default: false
        Marcus:
            permissions:
            inheritance:
    
     
  31. Offline

    Smack

    Very simple problem. Surprised no one else noticed it. You need to add this:

    "permissions.build: true"

    For the Regulars Group. Then it'll be inherited to all the others. And you should probably create a default group too, and give it this:

    "permissions.build: false"

    That's assuming you want new people on the world unable to build.


    Edited for more accuracy.
     

Share This Page