Created: 2012-03-23 16:54
Updated: 2013-10-11 13:56
License: agpl-3.0


Flexible class system for Bukkit.

What is PermClasses?

PermClasses is a Bukkit plugin intended to provide a class system without being limited to a specific plugin's implementation of the concept.

PermClasses allows extremely customizable classes to be created. The plugin relies on two things:

  • Permissions
  • Commands

By combining permissions and commands, one can create the most fine-tuned game experience for a player.

PermClasses uses permissions to determine the actions of a player with a certain class. The player is added to a permission group in a Vault-supported plugin and inherits all of the properties of the group.

PermClasses also uses commands to give a player traits. An example of this would be a class that teleports the player to another world, allowing the player to do more.

These two can also be combined. Say you want a mage class to use a Heroes class. You would add the corresponding permission for the Heroes class and the command to actually give the class to the player. To unbind, remove the class.


Simply drag-and-drop the "PermClasses.jar" file into your server's plugin directory.


The configuration of PermClasses is stored in the plugins/PermClasses/config.yml file of your server.

Classes are configured as follows:

    "Tier Name":
        "Type Name":
            "Class Name":
                bind: []
                unbind: []

As many tiers/types/classes as you want can be added to their parent. Bind and unbind should be formatted as above if you do not want to use commands. If you do, however, you should use this:

- "/playercommand 1"
- "consolecommand blah"

Commands prefixed with a "/" will be sent by the player. Commands not prefixed will be sent by the console.

Adding Permissions to Classes

PermClasses depends on 3rd party plugins to do a lot of its work. Personally, I recommend the unbelievably awesome bPermissions, but you can use any Permissions plugin supported by Vault that also supports groups.

Permission groups must be named with a prefix of _pcl_. Their names must also be all lowercase, numbers, and hyphens. For example, if you had a class named "Warrior", your permission group would be named _pcl_warrior.



  • /pcl set <player> <class> - Sets the class of player to class.
  • /pcl rm <player> <class type> - Removes the class of player that corresponds with class type, if any.
  • /pcl reset <player> - Resets all classes of player to nothing.
  • /pcl reload - Reloads all configuration.



  • pcl.use.* - Allows the player to use any class.


  • pcl.admin - Grants all admin nodes as listed below, and also grants pcl.use.*.
  • pcl.admin.set - Allows use of the /pcl set <player> <class> command.
  • pcl.admin.rm - Allows use of the /pcl rm <player> <class type> command.
  • pcl.admin.reset - Allows use of the /pcl reset <player> command.
  • pcl.admin.reload - Allows use of the /pcl reload command.

Need help?

The best, most certain way to get help is to hop onto in the #AlbireoX channel. I will be there 99% of the time.

The second way is to reply on the plugin thread.

There is no third way. Don't comment on BukkitDev. I won't look at it.


Hooking into Permissions requires nothing more than SpoutAPI! Simply use subject.hasPermission(permissionNode);



simplyianm AKA AlbireoX

Donate (I have no job!)

Donate to an unemployed developer.


PermClasses is licensed under the GNU AGPL V3 License. In a nutshell, if you fork my code, you have to provide source for it even if you're not distributing it.

Permissions is open source | Report an issue

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more