PermissionsEX (PEX) is the most popular permissions plugin. With the current lack of GroupManager support for latest versions of Minecraft more people are switching to PEX. PEX also offers MySQL storage which is useful if you wish to have the same groups and permissions across your BungeeCord network.

 

This guide assumes that you are running the latest version of Spigot.

Prerequisites

You will need to add the following plugins to your Minecraft server:

  1. EssentialsX and EssentialsX-Chat (link)
  2. Vault (link)
  3. PermissionsEX (link)

 

Setup

After you install the required plugins, you will notice that most commands give a permissions error even though you might have OP. This is due to PEX blocking everything by default and we need to setup an “Owner” group and give it all permissions. It is recommended to do all permission edits via in game commands and not by editing the PEX config file. By editing the config file even one small error might invalidate the whole permissions setup and lead to frustration.

Run the following commands in your server Console without the slash /

Create a new group/rank named Owner

pex group Owner create

Add all permissions to group Owner

pex group Owner add permissions.*

Add yourself to group Owner

pex user YourPlayerName group set Owner

Optional: Give yourself all permissions regardless of your group

pex user YourPlayerName add permissions.*

You should now be able to use all commands and you can verify this in game by running /pex user. The command should give you a list of users instead of a permission error.

Note about adding .* permission node: There may be permission nodes that you normally would not want a group to have. For example, consider the plugin VanishNoPacket (Referred to as VNP.) VNP offers the node vanish.silentjoin which makes anyone with the node log into the server without a join announcement, which many server owners do not want.

 

Group/Rank Management

PEX comes with one group named “default”, any new player that joins your server will automatically join your group.

Managing your groups can be done by using these commands:

Creating/remove group

/pex group Member create

/pex group Member delete

Default Group

Set the default group that a new user will get, world name is optional but it allows you to set default groups per world.

/pex set default group <group name> true <world name>

Set/remove group prefix

/pex group default prefix "&0(&8M&7ember&0)&7 "

/pex group default prefix ""

Be aware that there is a blank space after each prefix, this prevents your prefix from being too close to your username.

Prefix colors and effects

 

&4

 

 

&c

 

 

&6

 

 

&e

 

 

&2

 

 

&a

 

 

&b

 

 

&3

 

 

&1

 

 

&9

 

 

&d

 

 

&5

 

 

&f

 

 

&7

 

 

&8

 

 

&0

 

 

&l – Bold

&n – Underline

&o – Italic

&k – t

&m – Strike

&r – Reset (Resets the color to default for all text after &r)

Set rank order

PEX has the /promote and /demote commands, these will either move the user to a higher group rank or a lower group rank, to set the rank order use these commands:

/pex group default set rank 1000

/pex group Member set rank 900

/pex group VIP set rank 800

/pex group Mod set rank 100

/pex group Owner set rank 1

Rank 100 is now the highest promotion status.

Add/remove permissions to group

/pex group default add essentials.spawn

/pex group default remove essentials.spawn

Group inheritance

You can make groups inherit the permissions of their parent group. This is useful when you want certain groups to have all of the basic permissions that you added to the “default” group without writing the basic permissions into each group separately which is hard to keep track of. To build a chain of inheritance you would do these commands:

/pex group Member parents set default

/pex group Mod parents set Member

/pex group VIP parents set Mod

The group Member will inherit all permissions from group default, then Mod will inherit from Member and so on.

If for example you want the Mod group to not have a certain permission from the group Member then you can negate it by adding – in front of the permission node:

/pex group Mod add -essentials.spawn

 

Converting to MySQL

MySQL based storage is used in order to share your permissions across multiple servers. Updating anything related to PEX will automatically apply to all servers that share the MySQL database. The most common use case is when you have a BungeeCord network and wish to have same permissions across all of your servers.

Prerequisites

You need to create a MySQL database. On the FadeHost Panel you can create a database by going to Advanced -> MySQL Database and then click on Create Database. The page will then show you the MySQL access information which you need to copy into the PEX config.

Editing the PEX Config

Go into your server FTP and then enter the plugins/PermissionsEX folder. You need to edit the file “config.yml”.

Remove everything in the file and replace it with this:

multiserver:
  use-netevents: true
permissions:
  debug: false
  allowOps: false
  user-add-groups-last: false
  log-players: false
  createUserRecords: false
  backend: sql
  informplayers:
    changes: false
  basedir: plugins/PermissionsEx
  backends:
    sql:
      uri: mysql://MYSQLHOST/DATABASENAME
      user: USERNAME
      password: PASSWORD
updater: true
alwaysUpdate: false

You need to edit the following parts with the MySQL information you received from our control panel:

MYSQLHOST =  Host IP from the MySQL info page

DATABASENAME = Name from the MySQL info page

USERNAME = Username from the MySQL info page

PASSWORD = Password from the MySQL info page

Note: Database name and username are always the same value

 

Restart the server after you edit the config so that the new settings apply!

 

Importing your old permissions into MySQL

After you have edited your config and restarted the server, you will notice that you don’t have any groups/ranks/permissions in the game. This is normal as the permissions are now loaded from your MySQL Database.

To import your permissions from the old file into MySQL run these commands in your server Console without slash /:

pex import file

pex reload

The console should say:

Initializing file backend

Permissions file successfully reloaded

Data from “file” loaded into currently active backend

Permissions reloaded

Your PEX is now fully migrated to use the MySQL database. To have your other servers use the same MySQL database you just have to use the same config.yml file that you edited above on the rest of your servers. Do not run the import or reload commands, editing the config file and restarting the server is enough.

Note: All servers will share the same MySQL database, do not create a database on each server. It does not matter on which server you create the database.

in Minecraft Plugins