Why You Need a Permissions Plugin
Vanilla Minecraft ships with a crude four-level op system. Either a player is an operator at some level, or they have no elevated access at all. That model breaks down the moment you want a moderator who can mute and kick players but cannot wipe inventories, or a VIP rank that grants access to /fly without giving server control. A permissions plugin fills that gap by letting you assign individual permission nodes to named groups.
LuckPerms is the most widely used permissions plugin on modern Paper and Spigot servers. It stores data in a local H2 database by default, supports MySQL for multi-server networks, and provides a visual web editor so you can manage groups without typing every command in the console. It also integrates cleanly with EssentialsX, Vault, and virtually every other major plugin.
Installing LuckPerms
Download LuckPerms from luckperms.net. Make sure you grab the correct build for your server type: Paper/Spigot uses the Bukkit version. Upload the JAR to your server's plugins/ folder, then restart the server. LuckPerms will generate its configuration files under plugins/LuckPerms/ on first boot.
Once the server is back online, type lp info in the console to confirm LuckPerms loaded. You should see version information and the storage type in use. No other setup is needed before you start creating groups.
Creating Permission Groups
Groups are the core unit of the permissions system. Every player is assigned one or more groups, and they inherit all permissions from those groups. To create a group, run the following in your console:
lp creategroup moderator
lp creategroup vip
lp creategroup admin
You can create as many groups as you need. Common setups include default (all players), vip, moderator, and admin. LuckPerms automatically inherits permissions down the group chain if you configure parent groups, so an admin group that inherits from moderator gets all moderator permissions automatically.
To set up inheritance, run:
lp group admin parent add moderator
Assigning Permissions to Groups
Permission nodes are dot-separated strings that plugins define to gate specific features. EssentialsX, for example, uses nodes like essentials.fly, essentials.kick, and essentials.ban. Check each plugin's documentation for its permission list. To grant a permission to a group:
lp group moderator permission set essentials.kick true
lp group moderator permission set essentials.mute true
lp group vip permission set essentials.fly true
To deny a permission explicitly (useful when inheriting from a parent group), set it to false instead of true. Denies take precedence over grants, so you can grant a wildcard and then deny specific nodes within it.
Assigning Players to Groups
Once your groups are configured, add players to them. The player does not need to be online:
lp user PlayerName group add moderator
lp user PlayerName group add vip
A player can belong to multiple groups simultaneously. LuckPerms merges all permissions from all groups the player belongs to. If there is a conflict between a true grant and a false deny across different groups, the deny wins. To check which groups a player currently belongs to and what permissions they have:
lp user PlayerName info
lp user PlayerName permission check essentials.fly
Using the LuckPerms Web Editor
Typing every permission node in the console gets tedious quickly. LuckPerms includes a web editor that gives you a visual interface to manage all groups and users. Open it by running:
lp editor
The console will print a unique URL. Open it in your browser. You will see all your groups listed on the left. Click any group to see its permissions, add new ones by typing in the search box, and toggle them on or off. When you are done making changes, click the Save button in the top right and copy the command the editor gives you. Paste that command into your console to apply all changes at once.
The web editor is especially useful for new server owners because it shows every permission node a plugin has registered, making it easy to discover what you can grant without reading long documentation pages.