Every growing Minecraft server reaches the same wall: the moment two players need two different sets of abilities. When a moderator should be able to roll back a grief but never delete the world, and a VIP should be able to fly in the lobby but never in survival, you need a real permissions system. Skip it and your “admin rank” quietly becomes a master key that any trolling staff member can abuse. This guide is written to help server owners, administrators, plugin coders, and staff teams configure LuckPerms the right way in 2026, without the guesswork.
I have configured LuckPerms on everything from a 20-player friends-only SMP to a 300-player network split across lobby, survival, and minigames servers. The mistakes are almost always identical: flat groups with no inheritance, no contexts, and staff ranks that inherit far more power than the owner realizes. This article fixes all three. It draws on the official LuckPerms wiki, hands-on testing on Paper 1.21 servers, and the hard lessons from assembling [How to Build and Manage a Professional Staff Team]. By the end you will be able to design, secure, and debug a permission tree from scratch.
What LuckPerms Is and Why Servers Standardize on It
LuckPerms is a free, open-source permissions plugin for Minecraft servers. It runs on Bukkit, Spigot, Paper, Purpur, Fabric, Sponge, Nukkit, BungeeCord, Waterfall, and Velocity. That cross-platform support is the main reason networks choose it: one permission system works across every proxy and backend server you run.
It does three jobs better than the abandoned alternatives many admins try first (PermissionsEx and GroupManager):
- Granular permissions – grant or deny any node, per player, per group, or per context.
- Inheritance and tracks – build staff ladders and donor tiers that inherit cleanly.
- Live editing – change permissions in-game or through a web editor with no server restart.
Official project: luckperms.net | Documentation: LuckPerms Wiki | Source: GitHub | Download: SpigotMC.
LuckPerms Core Concepts You Must Understand First
Before you type a single command, learn these four ideas. Everything else in LuckPerms is a variation on them.
1. Permission Nodes
A node is a string like essentials.fly or worldedit.* that a plugin checks. Setting a node to true grants it, false explicitly denies it, and leaving it unset lets it fall through to the default or an inherited group. Explicit “false” is your best friend for locking down a dangerous command inside an otherwise powerful group.
2. Groups
Groups are named containers of nodes that players inherit. A healthy ladder might include default, builder, helper, moderator, admin, plus donor tiers such as vip and mvp. Groups can inherit other groups, which is how you avoid repeating the same node dozens of times.
3. Tracks
A track is an ordered list of groups. Create a staff track ordered helper, moderator, admin, then promote staff with a single command instead of manually editing parents. Tracks make promotions auditable and reversible.
4. Contexts
Contexts apply a permission only under certain conditions: a specific server, world, gamemode, dimension, or a custom context a plugin provides. This is the feature that separates a safe network from a dangerous one. Grant build permissions only in the creative world, or admin tools only on the staff server.
Storage Backends: Why Your Network Setup Matters
On a single server, the default H2 file database is fine. On a network with a proxy and several backend servers, you must switch to a shared database, or each server holds its own permissions and your ranks fight each other. Use MariaDB or MySQL for a shared store, or PostgreSQL and MongoDB if that fits your stack.
| Storage type | Best for | Notes |
|---|---|---|
| H2 (file) | Single server, testing | Default; not shared |
| SQLite | Single small server | File based, no network sharing |
| MariaDB / MySQL | Networks (proxy plus backends) | Recommended for Velocity and BungeeCord |
| PostgreSQL | Larger networks | Robust under heavy read and write load |
| MongoDB | Custom stacks | Fully supported |
If you are still choosing the hardware and nodes for that network, our [The Best Minecraft Hosting Providers (2026)] guide covers which providers make shared database setup painless.
Step-by-Step: Setting Up LuckPerms on a Paper Server
This workflow works for Paper 1.21 out of the box. Stop the server, drop the LuckPerms jar into plugins/, and start it once to generate the config. Then follow these steps.
- Install and verify. Run
/lp infoto confirm the version, storage, and enabled contexts. - Point storage at your database. Edit
config.ymland set the storage method tomysqlwith your host, port, database, user, and password. Restart and re-run/lp infoto confirm the connection. - Create your groups. Use
/lp creategroup builder, then repeat for every rank in your ladder. - Grant nodes. Example:
/lp group builder permission set worldedit.* true server=creative. - Set inheritance. Example:
/lp group moderator parent add helperso moderators inherit everything helpers can do. - Build a track.
/lp createtrack staff, then/lp track staff append helper, and repeat for moderator and admin. - Add prefixes and weights.
/lp group admin meta setprefix 100 &c[Admin]and/lp group admin meta setweight 100. - Test with a real account. Assign the group to an alt and confirm you cannot run commands you did not grant.
The LuckPerms Command Reference You Will Actually Use
| Task | Command |
|---|---|
| Create a group | /lp creategroup <name> |
| Grant a node | /lp group <group> permission set <node> true |
| Deny a node | /lp group <group> permission set <node> false |
| Add inheritance | /lp group <group> parent add <parent> |
| Assign a group to a player | /lp user <player> parent add <group> |
| Contextual grant | /lp group <group> permission set <node> true server=survival |
| Promote along a track | /lp user <player> promote <track> |
| Set a prefix | /lp group <group> meta setprefix 100 &6[VIP] |
| Debug live checks | /lp verbose on then /lp verbose record <player> |
Advanced LuckPerms: Contexts, Inheritance, and Weights Done Right
Once the basics work, the real security work begins. Three patterns separate amateur setups from professional ones.
Use Contexts to Contain Powerful Ranks
Never give build or admin nodes globally if they are only needed in one place. A builder on a survival network should receive worldedit.* only in the creative or build world. Add server=build or world=creative to the node, and the same rank becomes harmless everywhere else.
Build a Single Inheritance Chain, Not a Web
Multiple parents create loops and unpredictable results. Keep one clean ladder: default to helper to moderator to admin. Donor ranks should inherit default and nothing more. If you find yourself adding four parents to one group, restructure instead.
Weights Decide Prefix Order
When a player has several prefixes, LuckPerms shows the one with the highest weight. Give staff higher weights than donors so a moderator never displays as a plain VIP. Weights also help sort tab lists in chat plugins that honor them.
Securing Staff Ranks (The Part Most Owners Get Wrong)
An “admin” group that inherits everything is a security incident waiting to happen. Apply least privilege instead. Create narrow groups such as grief-review (CoreProtect inspect and rollback), mute (chat moderation), and ban, then stack only the ones each staff member needs. Pair this with a written permission policy, which our [Minecraft Staff Applications guide helps you screen for during recruitment.
- Deny
minecraft.command.opand console-only nodes for every group. - Remove world-edit and file-management nodes from moderators.
- Use
/lp verboseto prove which permission allowed a command before you blame a plugin. - Keep an off-server record of who holds each sensitive group.
Pros and Cons of LuckPerms
- Pros: Cross-platform, free and open source, fast even with thousands of nodes, excellent web editor, strong community support, Vault-compatible for chat and economy prefixes.
- Cons: The command set is large, inheritance systems become messy without discipline, and prefix display still requires a chat formatter or Vault bridge to show in chat.
Common LuckPerms Mistakes and How to Avoid Them
- Giving
*to staff. A wildcard swallows every future node, including ones added by new plugins. Grant named nodes instead. - Editing permissions per player. Fix the group, not the person. Per-player nodes are how permission systems rot.
- Forgetting context on network nodes. A global grant becomes a global risk.
- Never using verbose mode. Guessing which node controls a command wastes hours.
- Storing on a file DB across multiple servers. This is the number one cause of “my rank disappeared” tickets.
LuckPerms for Plugin Developers
If you write plugins, read permissions through the Bukkit API (player.hasPermission(...)) so server owners can configure them without touching your code. For deeper integration, such as reacting to rank changes or building custom GUIs, use the LuckPerms API: fetch the instance with LuckPermsProvider.get(), then query UserManager and GroupManager. Exposing your nodes clearly in a plugin.yml and a README is one of the things that makes a plugin trustworthy, as we discuss in [The ROI of Custom Minecraft Plugins].
Frequently Asked Questions
What is the command to open LuckPerms?
Use /lp (aliases /luckperms, /perms, /perm). Run /lp info first to confirm the plugin loaded and see your storage and contexts.
How do I give a player a rank in LuckPerms?
Run /lp user <player> parent add <group>. For temporary ranks, add a duration with the tempadd subcommand and a time argument.
Does LuckPerms show prefixes in chat?
Not by itself. Install a chat plugin and bridge it with Vault so it reads LuckPerms prefixes, suffixes, and weights.
Is LuckPerms free?
Yes. LuckPerms is free and open source under the MIT license. You can download it from SpigotMC, Modrinth, or GitHub.
Conclusion: Permissions Are Architecture, Not a Chore
LuckPerms is not just a plugin you install and forget. It is the architecture of trust on your server. Build a single inheritance chain, contain powerful nodes with contexts, keep staff on least privilege, and switch to a shared database the moment you run more than one server. Do that and you will spend your time growing a community instead of untangling rank bugs.
Your next step: open /lp info, list your current groups, and remove every wildcard node from every staff rank today. Then read our companion guide on [10 Essential Minecraft Server Plugins for 2026] to round out your stack.

Leave a Reply