All permission plugins use a file format called YAML. This file format is very good since it allows for coders to be able to get the information they need fairly quicky, but also means it is more sensitive to issues when writing the file. There are a few key issues that you must be aware of with these files
- Tabs will break the file
YAML files do not support tabs at all in the file. If the yaml scanners find a tab, they will cause the file to not be readable, thus causing your permission plugin to break. This means you cannot use a tab at all in the file. 2 spaces are like a tab, and so if you use a program like Notepad++, make sure you change the settings so that if you press tab, it will use 2 spaces instead.
- Spacing is key
The point of the spaces is, quite literally, to organize the information. Most use a 2-space hierarchy (that is, the difference is 2 spaces for a category). If you've ever looked at a windows file branch, it is very much a similar thing:
Windows:
YAML:
Happen to see a similarity? That's right, the colons after the words in YAML are typically the designation of a new category. In this case, category = folder in windows (with a couple extra features). Now then, there's a few things you can do with this. To understand this, you really need to look at it a whole new way
Example one:
You can contain other "categories" within them. This allows for adding new attributes to the category, which you can further describe.
Example two:
You can simply list the attributes of a category, or the properties that are contained within it. In permissions, this is most commonly seen when listing perm nodes, or groups that are inherited. One thing to note is that the dash must line up directly with the first letter of category's name (as seen above), and a space put after it.
Example three: - Link
Negation is another thing, which isn't native to yaml. for that reason, it's different for each permissions plugin, as they must create a character in which to negate the attribute. For each perm plugin, these are:
PEX: a '-'
bPerms: a '^'
Group Manager: a '-'
Permbukkit: using a 'perm.node: false'
Example four:
The third and final bit to yaml in permissions is similar to the listing of attributes, but when there is only one (Groups and perm nodes do not do this however). You can pretty much just put the value of the category entirely directly after the word, wrapped in single quotes.
Windows:

YAML:

Happen to see a similarity? That's right, the colons after the words in YAML are typically the designation of a new category. In this case, category = folder in windows (with a couple extra features). Now then, there's a few things you can do with this. To understand this, you really need to look at it a whole new way
Example one:
Guest: permissions: prefix: suffix: info:
You can contain other "categories" within them. This allows for adding new attributes to the category, which you can further describe.
Example two:
permissions: - derp.node.1 - derp.node.2 - -denied.node inheritance (or groups): - user - moderater
Example three: - Link
permissions: - -denied.pex.node - ^denied.bperms.node - -denied.gm.node - denied.permbukkit.node: false
Negation is another thing, which isn't native to yaml. for that reason, it's different for each permissions plugin, as they must create a character in which to negate the attribute. For each perm plugin, these are:
PEX: a '-'
bPerms: a '^'
Group Manager: a '-'
Permbukkit: using a 'perm.node: false'
Example four:
Moderator: prefix: '&9[Mod] &f' suffix: '&9' options: rank: 200 rank-ladder: 'staff'
- Using apostrophes (The ' key)
When you have something that is suppose to be read as text, be sure to surround it with apostrophes. This will tell the readers that this is a line of words, and to read it as is. Sometimes a file needs these since YAML uses some characters to represent things, so an apostrophe in front and at the end will tell it to ignore the characters as special and to just use them.
- Giving Wildcard nodes
Wildcard nodes are nodes that summarizes or cover a subcategory of all the permissions inside of it. Each category (or, we'll use "folder" again
) has a list of permissions inside of it. Say we have these four nodes:
You could simplify this into three perms like so:
Or even more simplified into:
Note that when you assign a wildcard node that in order to deny something that falls under the wildcard node's category, you must deny before the wildcard node itself. Java reads files from top to bottom, and as soon as it finds a match it will use that.
The '*' node
This is a node that exists only in PermissionsEx. It is a node that is derived using reflection, which breaks bukkit API. To a normal everyday user, this isn't too bad, and might just harm a few things like certain perm nodes or the ability to /reload. What it does is grant all permissions for every plugin. You must assign it wrapped in single quotes, like so:

- essentials.msg - essentials.signs.use.mail - essentials.signs.use.heal - essentials.afk(pretending there's only these perms in this plugin.)
You could simplify this into three perms like so:
- essentials.msg - essentials.signs.use.* - essentials.afk
Or even more simplified into:
essentials.*
Note that when you assign a wildcard node that in order to deny something that falls under the wildcard node's category, you must deny before the wildcard node itself. Java reads files from top to bottom, and as soon as it finds a match it will use that.
The '*' node
This is a node that exists only in PermissionsEx. It is a node that is derived using reflection, which breaks bukkit API. To a normal everyday user, this isn't too bad, and might just harm a few things like certain perm nodes or the ability to /reload. What it does is grant all permissions for every plugin. You must assign it wrapped in single quotes, like so:
- '*'
The different Permissions Plugins
bPermissions - A simple, yet stable plugin. Good for beginners.
PermissionsEx - This is the most versatile user-end plugin, used by many server admins. (For 1.4.6 users: Use the latest dev build found here.)
Privileges - Fast, simple, and clean. Does not have fancy features.
TotalPermissions - A new permissions plugin being developed by Lord_Ralex and myself.
More to come, but the I really don't recommend using any others atm.
PermissionsEx - This is the most versatile user-end plugin, used by many server admins. (For 1.4.6 users: Use the latest dev build found here.)
Privileges - Fast, simple, and clean. Does not have fancy features.
TotalPermissions - A new permissions plugin being developed by Lord_Ralex and myself.
More to come, but the I really don't recommend using any others atm.
Finding the errors yourself
Because you really want to do this yourself and become adept at it, there's a handy-dandy YAML parser online that will find errors in your file for you. Simply head on over to http://yaml-online-parser.appspot.com/ and paste your file into it. Read it for the line number where your mistake is and ta-da, you can fix 99% of common errors 
A bit of an explanation of different errors:

This error, defined by the “/t”, means that there is a tab in the file. The parser is good enough to tell you where the tab is in the file by giving you a line number. To fix this error, just delete the tab.

This error means that you have forgotten to add a : where it was needed. Like the others, this will tell you where the : is missing, so all you have to do is add the : in the correct spot, usually at the end of the line.
This error means that you forgot to close a String, or a line. Basically, you have a ' in a line and forgot to add a ' at the end of it. The parser will usually give you the line that this happens on, but sometimes it will not. You just need to add the ' to the line that has a ' in it already.

A bit of an explanation of different errors:

This error, defined by the “/t”, means that there is a tab in the file. The parser is good enough to tell you where the tab is in the file by giving you a line number. To fix this error, just delete the tab.

This error means that you have forgotten to add a : where it was needed. Like the others, this will tell you where the : is missing, so all you have to do is add the : in the correct spot, usually at the end of the line.

This error means that you forgot to close a String, or a line. Basically, you have a ' in a line and forgot to add a ' at the end of it. The parser will usually give you the line that this happens on, but sometimes it will not. You just need to add the ' to the line that has a ' in it already.
How to receive help here
- Post your yaml configuration in either tags or http://pastie.org and leave a link. Example for tags:
This is your yaml file [/code]
- We currently can't use tags, just use pastebin.
- Post relevant info, including which plugin you are using
- Explain your issue, and the steps you've taken
- Don't use obnoxious fonts or colours. We are all perfectly capable of reading things.
1
2
[media][url="http://www.youtube.com/embed/h4iOB4grs58"][media]http://www.youtube.com/embed/h4iOB4grs58[/url[/media[/media]]
4
It shows how you really feel that you know you messed up. And the effort you took to explain it all out.
2
8
Welcome to the RSM Survival Server! Please read everything in this thread and if you still have any questions reply to this thread. We are a brand new server starting up, and looking for players! We used to have build rights, but we have removed them and became an open server! All you have to do is join!
We are very proud that we can call ourselves 100% vanilla. Playing on our server is like playing Single Player but with other people. There are a few problems that you could have in multiplayer that would never occur in Single Player such as griefing, but we have that covered. The only plugins we have on our server allow us to rollback griefing, lock chests, and create an hourly backup of the server.
We do accept donations for the server. All of the money donated goes directly to the server. If you break a rule and get banned after you donate we are not going to treat you special. Donating to the server will not get you any special privileges. It is a way to show us that you love the server and appreciate what we do.
1
1
You should be the one to come in and give the speech.
1
I'm sorry but we do not accept appeals.
2
I wish we could do it for like just the chat thread.Maybe we could have a banner that says "April Fools!" and that's it. Everyone would be wondering what the joke was.
2
/nukes servers