Your friend asks you to help manage the server while you're away. You run /op FriendName, and now they can ban anyone, delete the world, change every setting. That's the problem with operator status: it's all or nothing.
For a solo test world, /op is fine. For any server where multiple people share responsibilities — or where you want builders who can fly but can't kick players — you need a permission system that offers actual control. LuckPerms is the standard solution. It's free, actively maintained, works on Paper, Purpur, Fabric, Forge, and BungeeCord/Velocity, and has one feature that changes everything: a visual web editor.
This guide starts with the web editor because it's what most admins don't know exists. You can create groups, drag permissions around, and configure inheritance without memorizing a single command. Once you're comfortable, you'll pick up the commands naturally — but you don't need them to get started.
Installing LuckPerms
LuckPerms is a single JAR file. Download the correct version for your server software from luckperms.net and drop it in your plugins/ folder (or mods/ for Fabric/Forge).
If you're hosting on Swelis, open your server's control panel, go to the file manager, and upload the JAR directly — no FTP client needed. Restart the server, and LuckPerms generates its config files automatically.
On first boot, LuckPerms creates a default group that every new player inherits. This group starts empty, meaning new players have no special permissions beyond what the server and your other plugins grant by default. You'll customize this group shortly.
Choosing a storage backend
LuckPerms stores permission data in one of several backends. The default is H2 (a file-based database in plugins/LuckPerms/), which works fine for small servers. For networks or servers with many players, you can switch to MySQL, MariaDB, PostgreSQL, or MongoDB by editing config.yml.
For a single server under 50 players, H2 is sufficient. Don't overcomplicate storage until you have a reason.
The Web Editor
Open your server console and run:
/lp editor
This generates a single-use link. Click it, and you're in the LuckPerms web editor — a full GUI for managing groups, users, and permissions. No plugins, no mods, just your browser.
The web editor has three main views:
| View | What it shows |
|---|---|
| Groups | All permission groups (default, admin, moderator, etc.) |
| Users | Individual players who have direct permission assignments |
| Tracks | Promotion/demotion ladders (e.g., member → builder → moderator → admin) |
When you make changes in the editor, they don't apply immediately. You click "Save" to generate a command, then paste that command into your server console. This two-step process is intentional — it prevents accidental changes and lets you review everything before committing.
The web editor understands inheritance, contexts, and expiry. You can assign a permission that only applies in a specific world, or grant a rank that expires in 7 days. Everything you can do with commands, you can do here — visually.
Creating Your First Groups
Most servers need three to five groups. Here's a common structure:
| Group | Purpose | Inherits from |
|---|---|---|
default | All new players | — |
member | Verified players (passed application, linked Discord, etc.) | default |
builder | Trusted players with creative/fly access | member |
moderator | Staff who can kick, mute, and manage players | member |
admin | Full server control | moderator |
Inheritance means a group automatically gets all permissions from its parent. An admin inherits moderator permissions, which inherits member permissions, which inherits default permissions. You only need to add permissions at the level where they should first appear.
Setting up groups in the web editor
- Run
/lp editorand open the link. - Click "Groups" in the sidebar.
- Click "Create Group" and name it
member. Set its parent todefault. - Repeat for
builder(parent:member),moderator(parent:member), andadmin(parent:moderator). - Click "Save" and paste the generated command into your console.
You now have an inheritance chain. Time to add actual permissions.
Common Permission Setups
Permissions are strings like essentials.fly or worldedit.wand. Each plugin defines its own permissions — check the plugin's documentation for the full list. Here's how to assign them to groups.
Default group (everyone)
Keep this minimal. Good candidates:
essentials.help— view helpessentials.spawn— teleport to spawnessentials.tpa— request teleport to another playercoreprotect.inspect— check who placed/broke a block (useful for reporting grief)
Avoid giving defaults access to /gamemode, /give, or teleport-anywhere commands.
Member group
If you require players to apply or verify before unlocking features:
essentials.sethome— set a home locationessentials.home— teleport to homeessentials.kit.starter— claim a starter kitgriefprevention.claims— create land claims (if using GriefPrevention)
Builder group
Builders need tools without full staff power:
essentials.fly— flight in survivalessentials.speed— adjust fly/walk speedworldedit.wand— the //wand toolworldedit.*— all WorldEdit commands (be careful — this is powerful)
If you want builders to have WorldEdit but not //regen or //chunk, you can grant worldedit.* and then explicitly deny specific nodes like worldedit.regen.
Moderator group
Moderators handle player issues:
essentials.kick— remove playersessentials.mute— silence playersessentials.ban— ban players (or use your server's ban plugin)essentials.vanish— go invisibleessentials.invsee— check player inventoriescoreprotect.rollback— undo grief
Admin group
Admins get everything. The cleanest approach:
*— wildcard, grants all permissions
If you want admins to have most permissions but not, say, luckperms.* (to prevent permission-granting loops), grant * and deny luckperms.*.
Adding permissions in the web editor
- Run
/lp editorand open the link. - Click the group you want to edit.
- Click "Add Permission."
- Type the permission node (e.g.,
essentials.fly) and click "Add." - Repeat for each permission.
- Click "Save" and paste the command into your console.
You can also use the search box to find permissions. If a plugin has registered its permissions with LuckPerms (most do), they'll appear in autocomplete.
Assigning Players to Groups
Players join the default group automatically. To promote someone:
Via command
/lp user PlayerName parent set groupname
Example: /lp user Alex parent set moderator
This removes Alex from their current primary group and sets them to moderator. Since moderator inherits from member which inherits from default, Alex keeps all those permissions.
Via the web editor
- Run
/lp editor. - Click "Users" in the sidebar.
- Search for the player's name and click it.
- Under "Parent Groups," click "Add" and select the group.
- Save and run the command.
Checking a player's permissions
To see what permissions a player actually has (after inheritance and contexts):
/lp user PlayerName permission check permissionnode
To see a full permission tree:
/lp user PlayerName permission info
Or, more usefully, run /lp editor while targeting a specific user:
/lp user PlayerName editor
This opens the web editor for that player's specific data.
Permission Contexts
LuckPerms supports contexts — conditions under which a permission applies. Common contexts:
| Context | Example | Effect |
|---|---|---|
world | world=world_nether | Permission only applies in the Nether |
server | server=lobby | Permission only applies on the lobby server (for networks) |
gamemode | gamemode=creative | Permission only applies in creative mode |
Per-world permissions
If you run a server with a creative world and a survival world, you might want fly access only in creative. In the web editor:
- Click the permission node.
- Click "Add Context."
- Set
worldto your creative world's folder name (e.g.,creative_world). - Save.
Now essentials.fly only works in that world.
Temporary permissions and ranks
Need to grant a rank for one week? In the web editor, set an expiry time when adding the permission or group. Or via command:
/lp user PlayerName parent addtemp vip 7d
This adds PlayerName to the vip group for 7 days. After that, they're automatically removed.
Temporary permissions work the same way:
/lp user PlayerName permission settemp essentials.fly true 1h
One hour of flight.
Troubleshooting
Permissions not working? Check these common issues.
"I gave them the permission but nothing happened"
- Typo in the permission node. Permission strings are case-sensitive and plugin-specific. Check the plugin's documentation.
- The plugin isn't checking permissions. Some plugins have their own config-based permission systems that override LuckPerms. Consult the plugin's docs.
- Caching delay. Some plugins cache permissions on join. Have the player relog, or use
/lp networksyncto force propagation across a network.
"Inheritance isn't working"
Run /lp group groupname info and check the "Parents" section. If the inheritance isn't set, add it:
/lp group builder parent add member
"A permission is denied even though I granted it"
Check for explicit denials. In LuckPerms, you can set a permission to true (grant) or false (deny). A false at a higher priority wins. Run:
/lp user PlayerName permission check permissionnode
This shows the source of the permission value and whether it's being overridden.
"I'm the owner but I have no permissions"
If you're op and LuckPerms still blocks you, check config.yml for apply-wildcards and apply-sponge-implicit-wildcards. Also verify you're in a group with the necessary permissions — being op doesn't automatically bypass LuckPerms unless you configure it to.
Plugin conflicts
Some older plugins (particularly those designed for PermissionsEx or GroupManager) may not query LuckPerms correctly. Check if the plugin has a LuckPerms compatibility mode or consider switching to a maintained alternative from the Swelis plugin list.
Quick Reference
| Task | Command |
|---|---|
| Open web editor | /lp editor |
| Create a group | /lp creategroup groupname |
| Set group inheritance | /lp group child parent add parent |
| Grant permission to group | /lp group groupname permission set node true |
| Deny permission to group | /lp group groupname permission set node false |
| Add player to group | /lp user player parent set groupname |
| Add player to secondary group | /lp user player parent add groupname |
| Grant temporary permission | /lp user player permission settemp node true duration |
| Check player's permissions | /lp user player permission info |
| Check specific permission | /lp user player permission check node |
| View group info | /lp group groupname info |
| Reload LuckPerms | /lp reloadconfig |
Duration format: 1d (days), 12h (hours), 30m (minutes), 60s (seconds). Combine them: 1d12h.
Related Guides
- Minecraft Server Whitelist Guide — Control who can join your server before they're even in. Whitelisting and permissions work hand-in-hand.
- Minecraft Server Console Commands Cheat Sheet — The complete command reference, including vanilla player management commands that work alongside LuckPerms.
- Best Minecraft Server Plugins 2026 — LuckPerms is one of 20 plugins we recommend. See what pairs well with it.
- How to Secure Your Minecraft Server — Permissions are one layer of security. This guide covers the rest.
- A Complete Tour of the Swelis Control Panel — Managing plugins, files, and backups through the panel, including where LuckPerms stores its data.
- How to Make a Minecraft SMP Server — The full setup guide, from hosting to community management.
