LuckPerms Advanced Guide, Contexts, Weights & Meta
Advanced LuckPerms guide covering contexts, weight calculation, meta stacking, temporary permissions, custom contexts, and troubleshooting for complex Minecraft server permission setups.
The basics of LuckPerms, creating groups, setting permissions, assigning players, are straightforward. But real-world server setups quickly demand more: permissions that only apply in specific worlds, ranks that stack prefixes, temporary access that expires cleanly, and permission logic that handles edge cases without breaking. This LuckPerms advanced guide covers the features that separate a functional setup from a bulletproof one.
Contexts
Contexts are conditions that must be true for a permission to apply. They are the most powerful feature in LuckPerms and the one most admins underutilize. If you have not read the basics yet, start with How to Set Up LuckPerms.
Built-in contexts
server, the server name (useful in BungeeCord/Velocity networks).world, the Minecraft world name.gamemode, the player's current gamemode (survival, creative, adventure, spectator).dimension-type, overworld, the_nether, the_end.
Applying permissions with contexts
Grant fly permission only in the lobby world:
/lp group vip permission set essentials.fly true server=global world=lobby
Grant creative mode permissions only in the creative world:
/lp group builder permission set worldedit.* true world=creative
Contexts make per-world permissions trivial without needing a separate permission plugin. See per-world permissions for a full walkthrough.
Custom contexts
Plugins can register their own contexts. For example, a factions plugin might register a faction-role context, or a region plugin might add a worldguard-region context. Check the documentation of your installed plugins, many integrate with LuckPerms contexts natively.
Weights and group priority
When a player belongs to multiple groups (e.g., "default," "vip," and "builder"), LuckPerms needs to know which group's prefix to display and which conflicting permissions take priority.
How weight works
Each group has a weight (set with /lp group <name> meta setweight <number>). Higher weight = higher priority. When two groups grant conflicting values for the same permission, the group with the higher weight wins.
/lp group default meta setweight 0
/lp group member meta setweight 5
/lp group vip meta setweight 10
/lp group admin meta setweight 100
Prefix and suffix priority
Prefixes and suffixes also have their own priority number (the first argument in setprefix). LuckPerms selects the prefix with the highest priority across all of the player's groups. If you want the admin prefix to always display over the vip prefix, give it a higher number:
/lp group vip meta setprefix 10 "&a[VIP] "
/lp group admin meta setprefix 100 "&c[Admin] "
Meta stacking
By default, LuckPerms shows only the highest-priority prefix. But some servers want stacked prefixes, displaying both the rank and a secondary tag. This LuckPerms advanced guide would be incomplete without covering meta stacking.
Edit config.yml under meta-formatting:
meta-formatting:
prefix:
format:
, "highest"
duplicates: "retain-all"
start-spacer: ""
middle-spacer: " "
end-spacer: ""
Change "highest" to "highest_on_track_staff" and add a second entry for "highest_on_track_donor" to display both a staff prefix and a donor prefix simultaneously. Tracks must be defined first (see below).
Tracks (promotion ladders)
Tracks define ordered sequences of groups for promotion/demotion. Common use cases: staff hierarchy (Helper -> Mod -> Admin) and donor tiers (VIP -> VIP+ -> MVP).
/lp createtrack staff
/lp track staff append helper
/lp track staff append moderator
/lp track staff append admin
/lp createtrack donor
/lp track donor append vip
/lp track donor append vip+
/lp track donor append mvp
Promote or demote a player along a track:
/lp user Steve promote staff
/lp user Steve demote donor
Tracks also enable the meta stacking described above, you can display the highest prefix from each track independently.
Temporary permissions and groups
LuckPerms handles time-limited permissions natively:
/lp user Steve permission settemp essentials.fly true 7d
/lp user Steve parent addtemp vip 30d
Duration formats: 1h (hours), 7d (days), 4w (weeks), 3mo (months). When the time expires, LuckPerms removes the permission automatically, no cron jobs or manual cleanup required.
Accumulation vs. replacement
If a player already has a temporary permission and you add it again, LuckPerms can either accumulate (add the durations together) or replace (overwrite with the new duration). Control this with the temporary-add-behaviour setting in config.yml:
temporary-add-behaviour: accumulate # options: accumulate, replace, deny
accumulate is best for subscription-based donor ranks where renewals extend the duration.
Verbose and tree commands
Debugging permissions is where most admins waste time. LuckPerms has built-in tools:
Verbose mode
/lp verbose on
This logs every permission check in real time, showing which permission was checked, which plugin checked it, and whether it resolved to true or false. Filter the output:
/lp verbose on --filter Steve
Only shows checks for the player Steve. Run the action you are debugging, then turn verbose off and review the output, it links to a web paste for easy reading.
Tree view
/lp tree
Generates a full tree of every registered permission node on the server. Useful for finding the exact node name when plugin documentation is unclear.
User info
/lp user Steve info
Shows all groups, permissions, meta, and contexts for a specific player. This is the single most useful debugging command in any LuckPerms advanced guide.
Bulk editing
Need to add a permission to every group? Use bulk edit rather than running the command five times:
/lp bulkupdate all update permission set essentials.chat.color true
Bulk updates are powerful but irreversible, take a backup of the LuckPerms database or YAML files before running one.
Storage backends
LuckPerms supports multiple storage types: YAML (flat file), H2, SQLite, MySQL, MariaDB, PostgreSQL, and MongoDB. For single servers, H2 (the default) is fine. For networks with BungeeCord or Velocity, switch to MySQL/MariaDB so all backend servers share the same permission data:
# config.yml
storage-method: mysql
data:
address: 127.0.0.1:3306
database: luckperms
username: luckperms
password: your_password
After switching, migrate existing data with /lp migration or /lp export + /lp import.
This LuckPerms advanced guide covers the features most admins need. For the full reference, consult the official LuckPerms wiki.
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.