How to Set Up Per-World Permissions in Minecraft
Complete guide to setting up per-world permissions in Minecraft using LuckPerms contexts, world-specific groups, command restrictions, gamemode locks, and multi-world server configuration.
Servers that run multiple worlds, survival, creative, minigames, resource, usually need different permissions in each one. Players should be able to fly in the creative world but not in survival. WorldEdit should be available in the build world but locked down everywhere else. Per-world permissions in Minecraft let you apply these restrictions cleanly using LuckPerms contexts instead of running separate permission plugins or configurations per world.
How LuckPerms contexts work for worlds
LuckPerms has a built-in world context that matches the name of the Minecraft world the player is currently standing in. When you set a permission with a world context, it only applies in that specific world. The syntax:
/lp group <group> permission set <node> true world=<worldname>
This is the foundation of per-world permissions in Minecraft. No extra plugins needed, just LuckPerms and your worlds (managed by Multiverse or the vanilla system).
Basic examples
Flight in creative world only
/lp group default permission set essentials.fly true world=creative
Players in the "default" group can fly when they are in the world named "creative" and lose the ability the moment they teleport to any other world.
WorldEdit in build world only
/lp group builder permission set worldedit.* true world=build
The "builder" group has full WorldEdit access, but only in the "build" world. In survival or lobby, those commands are unavailable even to builders.
Disable PvP commands in lobby
/lp group default permission set essentials.pvp false world=lobby
Combined with WorldGuard PvP flags, this ensures no combat-related commands work in the lobby.
World-specific groups
For complex setups, create dedicated groups for each world rather than adding contexts to every individual permission:
/lp creategroup survival-perms
/lp creategroup creative-perms
/lp creategroup minigame-perms
Add permissions to each group without contexts (they apply globally within the group). Then assign the group to players with a world context:
/lp group default parent add survival-perms world=survival
/lp group default parent add creative-perms world=creative
/lp group default parent add minigame-perms world=minigames
Now all players in "default" inherit from "survival-perms" only when in the survival world, from "creative-perms" only when in creative, and so on. This keeps your main groups clean and moves world-specific logic into dedicated groups.
Per-world prefixes
Display different rank prefixes per world:
/lp group admin meta setprefix 100 "&c[Admin] " world=survival
/lp group admin meta setprefix 100 "&b[Builder] " world=creative
An admin sees "[Admin]" in survival chat but "[Builder]" in the creative world. This is useful when staff roles differ between game modes.
Gamemode-based permissions
LuckPerms also has a gamemode context. Combine it with the world context for precise control:
/lp group default permission set someplugin.creative-only true world=creative gamemode=creative
This permission only applies when the player is in the "creative" world AND is in creative mode. If they switch to survival mode (perhaps for testing), the permission disappears.
Handling the Nether and End
In Vanilla and Paper, the Nether and End are separate worlds with names like world_nether and world_the_end. If your survival world is named survival, its nether is survival_nether. Set permissions for these just like any other world:
/lp group default permission set essentials.fly false world=survival_nether
Tip: if you want the same permissions in all three dimensions of a world, use a world-specific group (as described above) and assign it with three world contexts, or use a naming convention and a wildcard if your setup supports it.
Common per-world permission patterns
| World | Typical permissions |
|---|---|
| Lobby | Minimal: chat, basic commands. No building, no PvP, no WorldEdit. |
| Survival | Full gameplay: homes, TPA, economy, land claiming. No WorldEdit, no fly (unless donor). |
| Creative | WorldEdit, VoxelSniper, fly, gamemode creative. No economy, no combat. |
| Minigames | Game plugin commands only. No building, no TP, no homes. |
| Resource | Same as survival but with limited homes and no land claims (world resets periodically). |
Debugging per-world permissions
If a permission is not applying correctly in a specific world:
- Verify the world name exactly, run
/lp verbose on --filter <player>and check the context column. It shows the exact world name LuckPerms is seeing. - Check that the permission is not being overridden by a global (non-contextual) permission with higher weight.
- Use
/lp user <player> infoto see all effective permissions and their contexts. - Make sure you are using the right world name. Multiverse world names are case-sensitive.
world=Creativeandworld=creativeare different.
Avoiding common mistakes
- Do not duplicate permissions globally and per-world. If a permission is set globally (no context), the world-specific version may be ignored depending on weight. Be consistent, either set it globally or per-world, not both.
- Do not use per-world permissions for things WorldGuard handles better. Block breaking, PvP, mob spawning, and TNT are better managed with WorldGuard regions and flags. Use per-world permissions in Minecraft for command access and plugin features, not physical world interactions.
- Document your setup. Per-world permissions can become complex fast. Keep a note of which groups apply to which worlds and review it when adding new plugins.
Per-world permissions in Minecraft, powered by LuckPerms contexts, eliminate the need for clunky per-world plugin configs. For more on contexts, weights, and meta, see the LuckPerms Advanced Guide.
Need reliable hosting for your build server? Astroworld Hosting runs NVMe SSDs with full Pterodactyl panel access and 24/7 support. See features , plans from €6.39/mo.