Privileges
Privileges
Privileges seeks to be a familiar face for Permissions, and uses the Permissions 2.x format of lists of nodes for users. It offers inheritance, multi-world permissions, and promotion tracks.
This plugin is designed to implement Super perms (Bukkit Permissions). It does not provide an extensible API for permissions handler hooking, except in the form of getGroup().
by krinsdeath
Pages
- Configuration / groups.yml
- Configuration / config.yml
- Example Setup
- Commands
- Jenkins / Github 5.1. Use of the plugin builds from Jenkins is unofficial, unsupported and unapproved by BukkitDev Staff!
Features
- Multi-world compatible permissions management, with a familiar interface.
- Easy-to-use, powerful, and accurate inheritance.
- Promotion ladders and tracks through group ranks.
- Anti-build with permissions nodes
privileges.build
andprivileges.interact
. - Expanded anti-build permissions with
privileges.interact.[block id]
, to prevent interaction on a block-by-block basis. - Extremely powerful command system!
- Incredibly light-weight registration of players. Thousands of nodes can be applied in only a few millionths of a second.
- Plugin Metrics! Privileges reports the total number of groups and users registered in its config files to mcstats.org. This data is 100% anonymous and is only used for informational purposes. You can disable this in config.yml by changing
plugin.metrics: false
Commands
- /priv - Top level command. Does nothing.
- /priv check [player] [node] - Checks the specified node for the specified player. If player is omitted, checks your own nodes.
- /priv list [player] [page] - Lists the specified player's permissions nodes. If player is omitted, lists your own nodes. 7 nodes are listed per page.
- /priv reload - Saves Privileges' currently loaded configuration to disk and reloads all files.
- /priv save - Saves Privileges' currently loaded configuration to disk.
- /priv load - Unloads current configurations and loads from the disk - used to pick up external file changes.
- /priv backup [name] - Creates a configuration snapshot including users and groups, and saves it to a directory: privbackup/[name].
- /priv restore [name] - Restores the specified configuration snapshot.
- /priv version - Shows Privileges' current version and build numbers.
- /priv group [option] - Top level 'group' command
- * /priv group create [name] [rank] - Creates a group with the specified name and rank. If your current rank is equal to or lower than the rank you specify, the command will fail.
- * /priv group remove [name] [--safe] - Removes the specified group. If your rank is lower than the target group's rank, the command fails. If --safe is specified, the command will attempt to remove all references to the group from all users (and set them to your default group), and remove the group from all inheritance references as well.
- * /priv group set [player] [group] - Attempts to set the specified player's group to the specified group. If the target group's rank is equal to or higher than the command sender's rank, the command fails.
- * /priv group show [player] - Shows the sender the specified player's group.
- * /priv group list - Lists the available groups and their ranks.
- * /priv group perm - Top level 'group permission' command
- * * /priv group perm set [group] [node] [true|false] - Attempts to set the specified node to the specified value for the specified group. Fails if you don't have a higher rank setting than the target group.
- * * /priv group perm remove [group] [node] - Attempts to remove the node specified from the group. Fails if your rank is not higher than the target group.
- /priv user perm [option] - Top level 'user permission' command
- * /priv user perm remove [player] [node] - Removes the node specified from the target player.
- * /priv user perm set [player] [node] [true|false] - Sets the specified node to the value for the target player.
- * /priv user reset [player] - Resets the specified user to the default group and erases any individual permissions.
more commands will be added as I think of them
Permissions
- privileges.interact (defaults true) - Allows the player to interact with objects like buttons and switches
- privileges.build (defaults true) - Allows the player to break/place blocks
- Base commands
- * privileges.reload - /priv reload
- * privileges.save - /priv save
- * privileges.load - /priv load
- * privileges.backup - /priv backup [name]
- * privileges.restore - /priv restore [name]
- * privileges.version - /priv version
- * privileges.debug - /priv debug
- Administrative
- * privileges.promote - /promote [player]
- * privileges.demote - /demote [player]
- * privileges.check - /pc [player] [node]
- * privileges.list - /priv list [player] [page]
- * privileges.info - /priv info [player]
- Group base commands
- * privileges.group.create - /pgc [group] [rank]
- * privileges.group.remove - /pgr [group] [--safe]
- * privileges.group.set - /pgs [player] [group]
- * privileges.group.show - /pg show [player]
- * privileges.group.list - /pg list
- Group permissions commands
- * privileges.group.perm.set - /pgps [group] [node] [true|false]
- * privileges.group.perm.remove - /pgpr [group] [node]
- User permissions commands
- * privileges.user.perm.remove - /pupr [player] [node]
- * privileges.user.perm.set - /pups [player] [node] [true|false]
- * privileges.user.reset - /pur [player]
Special thanks
- gravypod - Small performance tweaks and optimizations. Thanks a bunch!
- Wolvereness - Massive improvement to node registration performance through templating. Keep on keepin' on!
AgentWesker: Do you have any associated error messages? This plugin is indeed implemented in Vault, so it should be able to do anything you need.
This doesn't work with anything that uses vault (mChat & autorank)
Any suggestions or should I stop using those plugins?
@krinsdeath
Fair enough. :)
YoFuzzy3: I just don't like adding additional checks and stuff when (personally) I won't use them. The plugin started as my own implementation of Permissions in hMod, and I basically just do what I want. People seemed to like it. Haha.
@krinsdeath
Awesome, thank you! :)
Edit: How would one extra permission check slow it down much anyway?
YoFuzzy3: No. You literally don't do anything. Don't touch the Privileges config file and don't touch the PermissionsBukkit config file. Privileges will automatically import and convert it.
I didn't really want to slow down the promotion/demotion process any more than it already is (it's the slowest part of the plugin and I already hate it), but that feature isn't a terrible idea so I might be able to add it.
@krinsdeath
So I pretty much just sort out my PermissionsBukkit file into the groups and config file and it converts it for me? Neat.
As for the permissions for setting groups I still think that's an essential feature. I don't want to find that somehow a hacker got into one of my HeadAdmin's accounts and started promoting others to Admin. My Admins only promote players to lower ranks, not staff ranks, and I need a way to enforce that.
EDawg878: /pc [player] [node]. If they're offline it should still work (in theory).
YoFuzzy3: You don't have to do anything. The conversion process for PB is automatic. You would just have to assign ranks to the groups if you want to use promoting features.
Users with promoting/demoting capabilities can only promote users to ranks lower than their own. A member (rank 3) with privileges.promote can only promote default (rank 1) to user (rank 2), but not user to member (rank 2 -> rank 3).
@krinsdeath
Can you please explain how/when/what do I have to do to convert the PermissionsBukkit file? Also I'd like to see per-group permissions for changing someone's group. For example privileges.group.set.Member would allow promoting players to group Member.
So there is no way to check/add/remove permissions of an offline player?
Mysteriously vanishing commenter: Check the class: net.krinsoft.privileges.players.Player - It contains addPermission() and removePermission().
Thatotherjanitor: Tell him to move away from your spawn point, or set spawn-protection=0 in your server.properties. If the player has privileges.build and privileges.interact and is not receiving a message about being denied from building, Privileges is not the culprit.
YoFuzzy3: It will be significantly faster than all other plugins. That is the primary reason for using Privileges - it's fast. Additionally the latest versions should automatically import and convert your PermissionsBukkit configs.
Users that are still on older versions of this plugin might not be reporting metrics. It's only the later versions where metrics are enabled by default.
I'm currently using PermissionsBukkit, my configuration file is around 4000 lines long and I'm starting to notice that it's hogging resources on the PlayerLogin and PlayerChangeWorld events.
How well does Privileges perform with large permissions files? And is there a tool to easily convert files?
Also, so many downloads compared to how many people use your plugin. o.O
Quick question. I'm trying to keep my friend in the User group and allow him to break blocks near the spawn, but when I gave him the permission nodes privileges.interact and privileges.build, he couldn't do either, even when I had saved the nodes within the file. I game him the permissions in both the groups.yml and the users.yml. What can I do to fix this?? I had even placed him to the highest rank, owner, and it STILL didn't allow him to interact or build/break blocks. This only happens around the spawn.
Thatotherjanitor: Thank you for the praise. Happy gaming!
Oh my god, you have no idea how thankful I am for you to continue this plugin! It's my favorite permissions plugin! Plus, it's very easy for me to use. Thanks so much, dude!! :D
vortechjsbz: There are no plans currently to add Multiple groups per user, however I might add it since it's probably the only commonly requested new feature.
Daxius81: This is just a permissions plugin, it's not a region plugin. You'd have to configure something like WorldGuard, PlotMe, PreciousStones, etc for those kinds of features. zPermissions features per-region permissions but that is not something I am prepared to offer.
Hello krinsdeath.
With this plugin i am able to deny any actions from a group of players to interact with the world such as picking/placing blocks and using mechanics such as doors, chests and so on.
Is there in any way i can define an area (xyz to xyz cords) for players to use an area inside the users.yml file? This means the group User is in will restict everywhere else except for these cords.
I am very new to this bukkit and for the past 4 days ive been searched the web for answers. Maybe im not understanding it right or im just searching the wrong things, i dont know.
And sorry for my bad english. I hope you or anyone else are able to help me.
Best regards Dax
Are there any plans to support multiple groups per user?
sirmyllox: Your issues should be resolved in my latest release build here on dev.bukkit.org.
LeakCraft: Issue resolved. The Jenkins was crashed.
WizardCM: Fixed in my latest release. Thanks!
DeathWalking: The public repository is http://files.krinsoft.net:8085/nexus/content/groups/public. The private repository (where I push the builds, which are then mirrored) is the ks-releases one.
gepardo43: Those issues should be resolved as I've changed the way I'm constructing groups/etc. If they're not, submit another bug report in my ticket tracker so I can take a look.
I'm currently getting an error when trying to convert from PermissionsBukkit.
http://txt.wizrd.tk/03-02_17-39-55.txt