Skip to main content
← All Guides
Permissions · 7 min read

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.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe