LuckPerms for beginners: ranks and permissions that make sense
Create groups, give them permissions, put players in them, and add chat prefixes — without making everyone an operator.
Out of the box, Minecraft has two kinds of player: operators, who can do everything, and everyone else, who can do almost nothing beyond playing. As soon as you add plugins with commands — homes, teleports, warps, land claims — you need something in between. LuckPerms is the standard way to do that: you create groups (ranks), decide what each group may do, and put players in them.
It runs on Paper, Purpur and Spigot as a plugin, and on Fabric, Forge and NeoForge as a mod. The commands are the same everywhere.
How permissions work
Every plugin command checks a permission node — a dotted name like essentials.home or coreprotect.lookup. If the player has that node set to true, the command works. Plugin pages list their nodes, usually on a “Permissions” or “Commands” page.
Nodes can end in a wildcard: essentials.warps.* covers every warp. A node set to false explicitly takes a permission away, even if a wider wildcard would grant it.
Operators skip all of this — they have every permission. That is why the first rule of running a server with plugins is: do not op people to give them one command. Give them a group with that command.
Install it
Download LuckPerms for your server type from its official site or Modrinth and upload the jar to plugins (Paper) or mods (Fabric, Forge, NeoForge). Restart. LuckPerms creates one group automatically, default, which every player is always in.
All commands start with lp (or luckperms). Type them in the console without a slash, or in game with one. Until you have given yourself LuckPerms permissions, run them from the console — or make yourself an operator for the setup.
Plan your groups
Most small servers need three or four:
- default — everyone. Basic commands: homes, teleport requests,
/spawn, messaging. - member — trusted players. A few more homes, maybe warps or
/back. - mod — moderators. Kick, mute, temporary bans, CoreProtect lookups.
- admin — you. Everything.
Groups can inherit from each other, so you only add what is new at each level. A moderator gets everything a member has, plus moderation.
Create the groups
lp creategroup memberlp creategroup modlp creategroup adminlp group member parent add default— members inherit everything default has.lp group mod parent add memberlp group admin parent add mod
Give each group a weight so LuckPerms knows which is higher when a player is in several: lp group member setweight 10, lp group mod setweight 50, lp group admin setweight 100.
Give groups permissions
The pattern is lp group <group> permission set <node> true. A sensible starting set with EssentialsX installed:
lp group default permission set essentials.home truelp group default permission set essentials.sethome truelp group default permission set essentials.tpa truelp group default permission set essentials.tpaccept truelp group default permission set essentials.spawn truelp group member permission set essentials.back truelp group mod permission set essentials.kick truelp group mod permission set coreprotect.lookup truelp group admin permission set * true— every permission.
To take one away: lp group default permission unset essentials.back.
Put players in groups
lp user Steve parent add member— adds a group, keeping the ones Steve already has.lp user Steve parent set mod— replaces all of Steve’s groups with this one.lp user Steve parent remove member— takes it away.lp user Steve parent addtemp member 7d— a group that expires on its own after seven days. Useful for trial moderators or event roles.
You can give one player a permission directly too — lp user Steve permission set essentials.fly true — but do it sparingly. Permissions spread across individual players are hard to keep track of; groups are not.
The web editor
lp editor prints a link to a web page with every group, permission and player in a table. It is far quicker for a lot of changes. When you save, the page either applies the changes to the server straight away or shows a command to paste back into the console — follow what it says. The link only works while the session is open, and it is private to whoever has it.
Chat prefixes
LuckPerms stores prefixes but does not draw them in chat — a chat plugin does that (EssentialsX Chat, or a small plugin such as LPC). Set one per group with a priority, higher winning:
lp group admin meta setprefix 100 "&c[Admin] "lp group mod meta setprefix 50 "&9[Mod] "lp group member meta setprefix 10 "&a[Member] "
The & codes are colours — &c red, &9 blue, &a green. Keep the trailing space inside the quotes so the prefix does not run into the name.
When a permission does not work
lp user Steve permission check essentials.home— tells you whether Steve has it, and from where.lp verbose on— prints every permission check as it happens. Ask the player to try the command, read which node was checked, thenlp verbose off. This is the quickest way to find the exact node a plugin uses.- A node spelled wrong is accepted silently. If something is not working, compare the spelling with the plugin’s documentation letter by letter.
Then de-op yourself
Once your admin group has *, add yourself to it and remove operator: lp user YourName parent add admin, then deop YourName. You keep every permission through the group, and it is easy to see — and change — who has admin rights, instead of an ops list nobody remembers adding to. Vanilla commands like gamemode and tp are covered by * too, through their minecraft.command.* nodes.