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.
@gigafunk
After researching a bit I found a troubleshooting section of another plugin. It mentions not all plugins register their permissions, and you get better handling when they are registered. You can do this in the bukkit permissions.yml file. Maybe yopu could try to add the info for the yapp.build permission to your Permissions.yml file like this:
Its yml so observer properspacing with notepad plus plus (the you cant see before the word you, seems to be code for highlighting text cause look!) and all that jazz. So, ignore the numbers and periods (I had to do that to get them on separate lines) and no spaces before yapp.build and 2 spaces before the description line and the default line.
Not sure if any effect but who knows? Doesn't help MY problem, because my problems perms are not yapps, they are Royal Commands , and as far as I can tell, its registers the perms.
Most likely nisovan has programmed yapps few perms to register and that's not the problem, but its kind of server breaking if you cant have ops on 24x7.
@ERROR372
Thanks for the info. Here is some additional information. Further info on this.. y perms also work until the char disconnects. Also, they wont work on server reboot until I /yapp.
So my hunch is that this is something happening when the server loads that character file.
I don't think this happens on character unload because it wont work after a server reloads. Its something the yapp code has the ability to do, because when the program reloads (probably only with the character online) it ""applies" the perms to the loaded character.
My next test is to /reload with the a character offline and see if it works when they log in. If that's the case, then the problem lies yapp writing to a character file vs loaded character in memory. If nisovan is busy or otherwise unable to do A fix, I would love to get the source and try. I am not good enough to take over the project, so to be I cant do that. But I would love to try to "hack" a fix for my server.
Given the fact that the yapp commands and menus give a distinction between offline and online characters (you must specify the o: switch before the char name for offline characters) I believe that is the case. Not a problems with loading as I previously stated.
I am a terrible programmer, and this is a great chance to dig through some code and solve a puzzle and learn, so if nisovan is busy or otherwise unable to fix it I would love to try to "hack" a fix for my server. I cant take over the project, cause I am a terrible coder, so I am not asking that, just for the source code.
@gigafunk
I have a very similar thing, except with build permissions on a vanilla server. Out of the 5 worlds on my server, Guests can build in 1 of them... However some guests are unable to build until i do /yapp reload. And they lose that ability whenever they disconnect, which can get annoying when they lose connection from things like EndofStream and such. All my configs are fine, and it doesn't affect every guest. It sure is an odd problem. I thought maybe I was the only one having this sort of problem, and thought maybe I just screwed something up in the config. This has happened in both 1.5.1 and 1.5.2.
Hopefully nisovin sees all this and gives us a 1.5.2 update that addresses this issue.
forgot to mention, running one point five point one server...
Hello,
Great plugin first off. I am having a little issue on y bleeding edge dev build server. I got mcpc plus running on tekkit with a few other mods...so I know this is not an issue with your plugin, I just need a little help diagnosing it and figured you could help based on your working knowledge of the yapp code.
Basically, I set perms and test them and they work, and then after a few hours my players cant do the things they were able to before. like /home.
so i give the /home perm, it works...i log off, and later they msg me saying they cant /home. if i check thed players perms it says they are good, yet when they try it says"no perms". Onc i /yapp reload, it all works again. I have tried direct file editing and the in game commands and the same thing happens. and this all happens with no server reboot.
and I cant see any mention of yapp in the logs, but the comands and menu work perfect, so its installed.
other plugins are griefprevention, vault, a mobile admin plugin(maybe thats doing it as its for version one point four point seven(cant type number now!) ill check that tonight.
Thanks for the plugin!!!
will this plugin ever be updated? i like it so much
I haven't done any extreme testing of it, but it seems that YAPP works for 1.5.2. Changed myself to the different player types of my server (guest, member, vip, mod, admin), and they all seemed to work properly. So if you are waiting, I don't believe you have to. I'd just make a backup of your entire minecraft server folder, in case something isn't working properly.
Anybody know what an "orphan line" is? Apparantly, my config has them, but I haven't changed anything since it stopped working. (Although admittedly, another admin COULD have done something, but I'm usually the only one who does.)
How do i get rid of the Guest prefix in front of everyone's name? I want to remove it or change it? Running 1.4.7v
@kix2468
try zpermissions first, when you are waitin' for Y.A.P.P. minecraft 1.5.2 compatible version.
When will the plugin be updated to 1.5.2??
P.S. I love this plugin!!
THX man i am looking for a perms pl and this is da one
It also works for 1.5.1 R0.2
How can i make it to where a certain group can access a world but they cant build or dig in it?
It is very hard to get Buycraft to work with YAPP because they don't have a something that allows you to set someones group with one command!
Hey, just wanna say thank you for making my bukkit experience a billion times easier! Keep up the great work!
OMG, this is the plugin i have been searching days for! This is the best permissions plugin in the world! easy to use, i learned in about 5 minutes. I love it!
How do I set someone's rank in one command?
Anyone know if we will have more updates of YAPP? :)
@MojatoGames
You already can do that:
/yapp o:Player /yapp g groupnameyouwantplayertomove /yapp @
Basically, select player, move to group, save changes.