GroupPermsLite
Unsatisfied with a number of other permissions management plugins publicly available, I sought to create a lighter and more elegant plugin to handle group-based permissions. With a focus to making all of the commands understandable at a glance and providing helpful details when queried. You should be able to get on with permissions management simply through typing /help GroupPermsLite and reading the command descriptions.
If you are unfamiliar with Bukkit permissions, please see the Wiki Article and the Forum FAQ
Features
- Simple and elegant
- Easy to use and understand
- Allows setting up an unlimited number of groups (names are case-insensitive)
- Has a default group called "all" that applies to all players that have joined the server, nomatter what other groups they are in
- Has a unique group for each player called "personal_[player name]" that allows individual permissions settings
- Saved in YAML format, advanced users can read and manage on disk and reload while the server is running using a command
- Simple and easy to use commands to add/remove players from groups and grant/revoke permissions from groups
- Allows use of the wildcard (*) to match any value for a node in a permission string when granting permissions using a command
- Allows adding negative permissions using the (-) operator to prevent a particular group from receiving the given permission from any other source
Ideas for future development
- /hasPermission ([player]) [permission node] - For manually checking permissions of a player and for use in command blocks (Available from 4.4 onwards)
- Tab auto-completion for registered permission nodes
- Support for Vault for better compatibility with plugins such as the LWC group feature
- A command to rename a player in order to support upcoming Mojang name changing feature
Commands
Command | Permission | Description |
---|---|---|
/GroupCreate [group] | group.admin | Creates a group without adding a player or permission |
/GroupAddPlayer [group] [player] | group.admin | Adds a player to the given group (creates the group if it doesn't already exist) |
/GroupRemovePlayer [group] [player] | group.admin | Removes a player from the given group |
/GroupGrantPerms [group] [(-)permission-string] | group.admin | Grants the given permission(s) to the specified group (creates the group if it doesn't already exist) |
/GroupRevokePerms [group] [permission-string] | group.admin | Revokes the given permission(s) from the specified group |
/GroupListPerms [group] ([page number]) | group.admin | Lists all of the permissions for a given group |
/GroupListPlayers [group] | group.admin | Lists all players in a given group |
/GroupList | group.admin | List all groups |
/GroupDelete [group] | group.admin | Deletes a given group |
/GroupReload | group.admin | Reloads config from disk |
/RegisterPerm [permission node] [default(op/not-op/true/false)] | group.admin | Manually register an unregistered permission node |
Most commands have a "silent" feature that is activated by placing a "-s" (without quotes) at the end. This is intended to be used with command blocks and command scripting plugins to allow you to manage your permissions through these without generating lots of console spam. You will still get a response if the command fails however.
Add-ons
- RankDisplayNames - Create ranks with chat prefixes that update automatically with permissions set through GroupPermsLite
Troubleshooting
It says the permission is not registered, what can I do?
Sometimes plugin developers will forget or simply not bother to register their permissions with Bukkit, but still use them in their code. Fortunately, the bukkit permissions.yml file can come to the rescue here. You should be able to find the permissions.yml file in the server directory. It is used by server owners to manually register additional permissions in bukkit. See http://wiki.bukkit.org/Permissions.yml
for details about editing the Permissions YAML. It is usually used to group permissions together so that they can all be assigned at once (this is compatible with GroupPermsLite!), however there is also nothing stopping you from registering all of the unregistered permissions for a plugin manually.
For example, here is how to register all of the permissions for Essentials (the most notorious for not registering their permissions): http://dev.bukkit.org/paste/7208/. You can cut and paste these into your permissions.yml if you use essentials. Be aware that permissions with square brackets [ ] around a permission node mean that you have to change that to the specific type you want in order for it to work.
Coming in v0.4: Added support for unregistered permissions - You will be able to grant unregistered permissions to a group with a prompt for confirmation
This plugin uses Java 7
If you get the followed error on starting up the server with this plugin installed "Unsupported major.minor version 51.0". This means you are using an out of date version of Java. If you don't know how to upgrade, please contact your server hosting provider and ask them for help in upgrading to Java 7, or contact Oracle customer support. Mac OS X users require JDK 7 instead of JRE 7.
Donations
If you'd like to contribute towards the continued development, support and maintenance of this project, please consider joining me on Patreon, and making a one-time or recurring pledge.
Help
If you need help you can leave a comment below and I will get back to you as soon as I can. You can also join my IRC chatroom using the following link. Please note, I am not always at my keyboard! http://webchat.esper.net/?channels=XHawk87&prompt=1
@Thesneling
The tab on the right called "Facts" under the label Curse Link: http://www.curse.com/bukkit-plugins/minecraft/grouppermslite
What side part? Maybe it's me but the right part disispear<<(like that?)
Thanks
@Necrodoom
The additional support in 0.4 (as soon as the file has been approved) is merely a convenience method for manually registering permissions that you could otherwise do in the permissions.yml file. It is perfectly usable, even along with those few plugins who use per-block/data permissions.
@XHawk87
"as even those that do use per [type] permissions it is possible to register so long as the number of different permutations do not run into the thousands."
exactly my point, plugins like modifyworld, essentialsantibuild, and many others, check by ID/damage values, which easily gets to the thousands. this idea is nice, but has its limits, as it is impossible to register them.
the planned feature in 0.4 will make these plugins useable though.
@Thesneling
Check out the RankDisplayNames add-on if you want to apply coloured player chat names, list names and overhead names to GroupPermsLite groups.
If you click the link at the side to go to the curse pages, it is possible to favourite a plugin there.
It's seems very cool. Can i change the color of a group?
Thanks
PS: it's possible to favorite a plugin?
Ca a l'air trop classe. J'ai hate de rentrer chez moi des vacances pour l'installer. Juste, peut-etre que j'ai zappé, mais est-ce possible de mettre les noms des groupes en couleur?
Merci
PS: c'est possible de like un plugin?
@Necrodoom
If you are under the impression that it is not possible to enter unregistered permissions with GroupPermsLite, you are mistaken. It is possible, if you follow the steps above, to register any permission manually. It is not a limiter, but a checker, and is also what makes it possible to use the wildcard (*) feature.
It is also not a problem to the vast majority of plugins, as even those that do use per [type] permissions it is possible to register so long as the number of different permutations do not run into the thousands.
The development version already has support to automatically add unregistered permissions with a prompt for confirmation, however I have not worked out all the bugs yet. This is my next priority after finishing my current project.
@XHawk87
it still makes absolutely no sense to support some permissions and others not, and still means these permissions will never work with your plugin because of your limiter. considering the amount of plugins that uses per ID/damage value permissions, this causes more bad than good.
@XHawk87
@XHawk87
Thanks for the help
@FAZAL1000
The commands are all listed in the commands section. There is also a tutorial inside the config.yml, if you prefer editing the text files.
/GroupCreate admin /GroupAddPlayer admin XHawk87 /GroupGrantPerms admin some.random.permission.node
@essentialsteam
It is understandable that you don't register dynamic permissions where there are thousands of non-predeterminable permutations, however you still have hundreds of simple command permissions that could be registered without issue. It is not an all or nothing situation. By registering these few hundred simple permissions you would cause no significant increase in lag and provide a great deal of support for the greater majority of users, most of whom do not or rarely need to use antibuild permissions.
Can someone give me an example on how you grant the perms please
@XHawk87
I tried this once, registering every possible permission combination possible in Essentials, and found craftbukkit was unplayable.
I don't remember the exact number of permissions I was testing with, but it was over 100k permissions, and due to how bukkit handles this list, evaluating this list for each player, seemed to slow it down causing huge tps drops. Seems the internal list/map they used wasn't very efficient with large value sets.
Essentials supports antibuild permissions for every block id and datavalue combination:
This means we'd need to register the permissions for these values, for example: essentials.build.place.136:6
There is over 300 possible item numbers currently supported, with a wide range of data values, tools for example can have datavalues from 0-1000, potions range above 2000, and most generic blocks support up to 16.
Essentials also supports tekkit, and forge ports of bukkit which extend the range of these into thousands of complicated combinations, if we just wanted to register every possible combination allowed by minecraft api, we'd have to register well over 1m permissions, although in my tests I was running on assumptions that reduced this number dramatically.
On top of these permissions, we also have runtime permissions, where is a player creates a warp, two permissions come to exist as soon as the command is executed.
It isn't that we don't want to register permissions, it's the technical limitations behind the concept.
Instead we replicate basic permission system checks, by intuitively checking for wildcard tree permissions when looking up basic permissions, replacing the direct need to register permissions. All of this is supported by Bukkit API, and is achieved by following the rules.
~ KHobbits Ess Lead Dev
Are you able to add prefixes?
Using the http://dev.bukkit.org/server-mods/rankdisplaynames/ Add-on, yes.
Also, I do not check the curse pages often. Please only leave comments on the Project Site. Thank you!
i like this pulgin
@Makhulu
That is a good idea, and there are tutorials available already on how to install plugins, however I don't have time to create an in-depth tutorial for the whole process right now. However, if someone else creates a tutorial, with screenshots or a video, I will include a link here so everyone can see it.
How about a tutorial on putting EVERYTHING together! Downloading it putting the plug in in! And the permissions! Do everything obviously no one here doesnt know what to do!
@Jong100
As with all of my plugins at present, GroupPermsLite is Bukkit API-compliant, which means it does NOT break after CraftBukkit updates. You can continue to use the same version. You only need to update GroupPermsLite for bug fixes and new features when they come out.
I Need Version 1.5.2 ;(