YAPP (Yet Another Permissions Plugin)
There are many permission plugins available to choose from. This is yet another one.
Introduction
The aim of this plugin is to make managing permissions as user-friendly as possible. It has an easy to use in-game menu system for making permission modifications, as well as fairly easy to understand commands. The files it creates are also very user-friendly, as they are not as strict as YAML files. Indentation and whitespace are not a concern.
Features
- Server-wide permissions
- Per-world permissions
- Inherit multiple groups
- Chat prefixes and name colors
- Promote and demote players
- Rename and delete groups
- Complete in-game menu system
Guide
The full guide to this plugin can be found here:
What Are Permissions?
If you have never used a permissions plugin before, you may not know exactly how they work or what they are used for. If that is true, then this section is for you. If you are already familiar with other permissions plugins, you can skip this section.
A permissions plugin allows you to have detailed control over what kinds of things your players can do. Each plugin can define certain permission "nodes" that control certain actions from that plugin. A node generally takes the form of pluginname.command or pluginname.feature.something. In order for a player to use that command or feature, they must have the associated permission node. Each plugin should have a list of permission nodes somewhere on its project page or website.
This plugin allows you to assign permission nodes directly to players. It also allows you to set up permission groups. You can then assign permission nodes to groups instead of to the players. Then you can put a player in the groups they belong in, and they will inherit the permissions of the group.
In addition, groups can be members of other groups. So for example, you could have an "admins" group, that inherits (is a member of) the "moderators" group, which inherits the "members" group. If a player is placed in the "admins" group, then they will get those permissions, as well as the "moderators" and "members" permissions.
This plugin also allows you to set up server-wide permissions and world-specific permissions. For example, you could give a certain permission node to a group, but then remove that permission node for that group in a specific world. Or you can ignore server-wide permissions all together and put all permission data in each individual world. How you set it up is your choice.
Installation and Configuration
Simply download the file and drop it into your plugins folder to install. If you are converting from another permissions plugin, there are some conversion commands available.
When you start your server for the first time after installing, a config.txt file will be created in your plugins/YAPP folder. An important thing about this configuration file (and all files this plugin creates) is that they are much more friendly than yml files. It is okay to add extra whitespace, including both tabs and spaces.
The names of the config values are fairly self-explanatory, but a full description can be found in the config section of the plugin guide.
Permissions
This plugin uses several permission nodes. The important ones are:
- yapp.admin - Only those with this permission can use the in-game commands to modify permission settings. Defaults to op-only.
- yapp.build - A player must have this permission to interact with the world. This permission can be disabled in the configuration file. Defaults to false.
There are also permissions for the promote and demote commands, as well as permissions that can control a player's ability to interact with the world. A full list can be found in the permissions section of the plugin guide.
Usage
The methods for modifying permission settings are designed to be very easy to use and easy to remember. There are actually three ways to make changes to the permission system.
Remember when making changes with any of these methods you will need to reload for the changes to take effect. In the menu, the option to reload is in the main menu, option '5' or 'S' or 'R'. The command to reload is /yapp @ or /yapp reload. You can also reload just a specific player's permissions with the command /yapp @ player. Note that this will only reload simple changes, like adding or removing permission nodes or groups directly to the player (if you add or remove permissions to a group, reloading the player will not reload the group changes).
Menu
The main command in this plugin is /yapp. The aliases /perm and /perms are also available. If you use this command on its own without any arguments, it will open a guided menu system. The menu is the easiest way to make simple modifications to permission and group information.
While you are in the menu system, there are a few options that are always available to you.
- < will return you to the previous menu
- ! will return you to the main menu
- ? will tell you your current selection, and will sometimes give help about the current screen
- q or quit will exit the menu
Many of the menu screens will have a list of numbered options with highlighted words. To select an option, you can either type the number, type the highlighted word, or just type the highlighted letter within the word.
Commands
Changing settings with normal commands will require multiple commands in sequence. These commands can be used both in-game (with the yapp.admin permission node) and on the command line. In general, your commands will use the following pattern:
- Select something (a player or group, and world if desired)
- Make changes to the selected object
- Save the settings and reload the permission data
You can look at some examples to help you understand how it works.
There are also commands for promoting and demoting players.
Files
The file storage system for this plugin is designed to be very easy to read and understand. It is whitespace-friendly, meaning you can add extra spaces, tabs, and line breaks without problem. The one disadvantage is that the information is spread into many different files. However, this can also be seen as an advantage, as you don't have to scroll through huge files to find what you're looking for.
For further information, please see the files section of the plugin guide.
Source
The full source can be found on my repository on Google Code:
http://code.google.com/p/nisovin-minecraft-bukkit-plugins/source/browse/trunk/YAPP/
Question and Answers
Why create another permission plugin?
Partly to learn. Partly because I wanted to make a better plugin. And because I just felt like it. Some may hate me for adding yet another permission plugin to the pool, but I personally think I've created something useful.
Does this support Vault?
It should fully support Vault, including any plugins that depend on Vault.
Can I use the '*' node?
Special wildcard nodes are supported, but they have some restrictions. See the wildcard information in the guide.
Why so many files?
Why so few? I know a lot of people prefer to have their permission data crammed into just a couple files, but I personally think it's nice to have it spread out. Digging through a massive file for a specific user or group is just annoying. This way, you can easily see all the files, probably in alphabetical order, and find exactly what you're looking for fairly quickly.
-
View User Profile
-
Send Message
Posted Mar 16, 2013PLEASE ADD NICKNAMES!! PLEASE!?!?!
NICKNAMES???
Please...
Thanks, Matt
-
View User Profile
-
Send Message
Posted Mar 14, 2013@nisovin
Here is what the server log says on startup when debug mode is turned on:
http://pastebin.com/yZcFHfrq
And this is what it says when an Admin (Ruscheinski) and a user (Moonflowerer) log
on with debug mode turned on.
http://pastebin.com/aDXaS4Ff
-
View User Profile
-
Send Message
Posted Mar 13, 2013What are the specific codes for the chat colors with names? And how could I get this to work with essentials chat?
-
View User Profile
-
Send Message
Posted Mar 13, 2013@georgehillier
When that happens there should be an error on the console. I need to know what that error is.
@Stormbril
Turn on debug mode and tell me what it says when someone logs in.
-
View User Profile
-
Send Message
Posted Mar 12, 2013EDIT: Do spoiler tags not work? I'll just put it in pastebin.
I'm the one running the server that RustyFender was talking about, regarding the problem of having to reset the plugin every time someone logs on. I was unable to comment on it before, but here is what is going on.
Essentially, every time somebody logs on, they have no permission to do anything at all. However, when admin log on, they still have power to use every single command, although I suspect this is because they are specified in the OPs file for the server.
There are no error messages when they log on either, but just in case, this is what the console says on startup:
Here is the pastebin link for the server log.
http://pastebin.com/RdgPAY0N
The way I have to fix this is by typing:
/YAPP
5
<
To fully reload the permissions plugin while the user is online. After that, the permissions work exactly as I want.
-
View User Profile
-
Send Message
Posted Mar 12, 2013Hey there, this may just be me being stupid, but whenever i edit a player so they're under the group "admins" it always says "an internal error occurred while attempting to perform this command" when i try to reload it. Anyone know why?
It doesn't do it when i change their group back to members. I've tried setting them to "admins" using the in-game menu and by directly editing the files...
-
View User Profile
-
Send Message
Posted Mar 10, 2013@FranBlagru
Type In The Player/Group Perms:
- perm.for.nick
Instead Of
+ perm.for.nick
+ adds.a.perm - removes.a.perm
Hope This Helps, Matt
-
View User Profile
-
Send Message
Posted Mar 10, 2013PLEASE ADD NICKNAMES!!
PLEASE!?!?!
NICKNAMES???
Please...
Thanks, Matt
-
View User Profile
-
Send Message
Posted Mar 9, 2013THANK YOU SO MUCH!! I couldn't find any good perm plugins! This one actually worked! Thank you so much!!!!
-
View User Profile
-
Send Message
Posted Mar 3, 2013I have a bukkit server and i have this plugin but ever since i got it 1 of my members has been muted, cant pick up items, and cant use commands. I need QUICK help!
-
View User Profile
-
Send Message
Posted Mar 2, 2013Hi, I need some help please. How can I deny permission from someone? I'd really like to deny people from /nick themselves. Thanks a lot, and great plugin btw :D
-
View User Profile
-
Send Message
Posted Feb 28, 2013Yes. Based on the configuration example at the bottom of your page I had thought that's the way it was supposed to be done.
I got rid of it and it now works, thanks!
-
View User Profile
-
Send Message
Posted Feb 28, 2013@dasUselessHobo
Do you have any circular inheritance? Maybe a group inheriting itself?
-
View User Profile
-
Send Message
Posted Feb 28, 2013I was having this issue on 1.2, just updated, and I'm still having the issue:
Some users had reported not having permissions logging on, when indeed they were given the correct permissions in the config. The way I found to fix this was to re-set their group to their existing one. I wanted to fix this so I changed around some of the permission settings in the groups, including putting the "Information" category in as well as changing the config.txt. I'm checking the logs and I see:
java.lang.StackOverflowError at com.nisovin.yapp.PermissionContainer.equals(PermissionContainer.java:750) at java.util.ArrayList.indexOf(ArrayList.java:236) at java.util.ArrayList.contains(ArrayList.java:219) at com.nisovin.yapp.PermissionContainer.inheritsGroup(PermissionContainer.java:674) at com.nisovin.yapp.PermissionContainer.inheritsGroup(PermissionContainer.java:678)
Running CraftBukkit 1.4.7 R1.0 -Ubuntu 12.04.2 -YAPP 1.2-1.3
-ChestShop 3.46 -Dynmap 1.4 -Essentials 2.10.1 -LWC 4.3.1 -MC Jobs 3.1.8 -mcMMO 1.3.14 -Mobile Admin 3.2.5 -MoneyDrop 1.6.2 -Spout 1.4.7 -Vault 1.2.23 -WorldEdit 5.5.1
-
View User Profile
-
Send Message
Posted Feb 27, 2013@Jazzcat01
I've uploaded version 1.3, it should be available soon.
@sirshwaatz
http://wiki.bukkit.org/CraftBukkit_commands
@rustyfender
Are you getting any console errors when players log in?
-
View User Profile
-
Send Message
Posted Feb 27, 2013hi our server uses yapp and it works great in every way except that anytime someone logs in we they are in the default perm group. reloading the permissions from in game works but requires a admin to be logged in. its drivng us all nuts. and if say i were to log out and back in right away the permissions would still need to be reloaded.
any ideas how to fix this
-
View User Profile
-
Send Message
Posted Feb 26, 2013How do I add permission nodes for built-in game commands, like /time set and /toggledownfall? I tried to add them in the config file, but I don't know what to put as the prefix (like the Yapp part of: yapp.*). I tried to add some permissions in the game, but I add them and save and reload and everything, yet people in the members group (the one I'm trying to allow these commands) aren't allowed to use these commands. Help!
-
View User Profile
-
Send Message
Posted Feb 23, 2013This really isn't just another permissions plugin. This is *the* permissions plugin for Bukkit! This and MagicSpells have really changed what I can do with a server. Thank you!
-
View User Profile
-
Send Message
Posted Feb 23, 2013When do you think we wil lbe able to use the '*' node?
-
View User Profile
-
Send Message
Posted Feb 22, 2013This. Plugin. Is. Amazing.
Cake for you, my friend. :D