All articles

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.

By the Cobbly team ·

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

  1. lp creategroup member
  2. lp creategroup mod
  3. lp creategroup admin
  4. lp group member parent add default — members inherit everything default has.
  5. lp group mod parent add member
  6. lp 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 true
  • lp group default permission set essentials.sethome true
  • lp group default permission set essentials.tpa true
  • lp group default permission set essentials.tpaccept true
  • lp group default permission set essentials.spawn true
  • lp group member permission set essentials.back true
  • lp group mod permission set essentials.kick true
  • lp group mod permission set coreprotect.lookup true
  • lp 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, then lp 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.

Ask on Discord

Other players and the team hang out there - it's usually the fastest way to get unstuck.

Join the Discord

Ready to try it yourself?

Create a free Cobbly server in under a minute — no card, no trial.

Create a server