Guides Nomad Cairn

Permissions

Every permission node with its default, the marker style nodes, tiered limit nodes, and a LuckPerms rank template.

Cairn reads permission nodes directly, so any permissions plugin that grants nodes works. LuckPerms is used here only because its rank template is written out below. The commands each node unlocks are in Commands.

Player permissions

NodeGrantsDefault
cairn.useHave graves created on death and loot your own graves.true
cairn.command.list/cairn list: list your own graves.true
cairn.command.tp/cairn tp <id>: teleport to your own grave.false
cairn.fee.exemptExempt from the Vault retrieval fee, regardless of tier.fee-waiver.false
cairn.loot.otherLoot another player's grave once its protection window has expired.true
cairn.loot.other.bypassLoot another player's grave at any time, including during its protection window.op
cairn.command.style/cairn style: see and choose your own grave marker style.true

Admin permissions

NodeGrantsDefault
cairn.admin.list/cairn list <player> to list another player's graves, and /cairn held for everything still in custody.op
cairn.admin.tpTeleport to any player's grave, including during protection.op
cairn.admin.restore/cairn restore to rebuild a grave from the audit log, and /cairn archive to put one away again.op
cairn.admin.audit/cairn history and /cairn verify: read the custody log and run consistency checks.op
cairn.admin.reload/cairn reload: reload configuration without a restart.op
cairn.adminEverything above at once, plus cairn.loot.other.bypass.op

cairn.admin does not include the cairn.style.* nodes. They are already op by default, and keeping them out of the staff bundle means an operator can still test what a customer without the rank sees.

There is no cairn.admin.purge and no purge command. Cairn never deletes audit history, because the restore guarantee depends on that history surviving.

Marker style permissions

There is one node per marker style, and all of them default to op. Nobody holds one until you grant it, and an operator holds all of them. There are six styles.

NodeMarker
cairn.style.player-headA head on the ground wearing your face.
cairn.style.armour-standA posed corpse wearing that same face.
cairn.style.block-displayA floating, un-pickable head.
cairn.style.hologram-onlyNo body at all, just the floating name and countdown.
cairn.style.headstoneA small stone monument built from ordinary blocks.
cairn.style.corpseA life-size body lying where you died, wearing your skin. Needs Paper 26.2 or newer. On an older server it still grants and selects, but renders as armour-stand.

A player picks one with /cairn style <style> and clears it with /cairn style default. /cairn style on its own lists what they have and what they may pick. Player choice is switched off server-wide with marker.allow-player-choice: false in config.yml.

Revoking one of these never costs a player a grave. If they had chosen a style and you take the node away, their next grave uses the server's marker.style, and their choice is remembered in case the rank comes back. The full precedence is in Configuration.

To sell a style with a rank:

/lp group vip permission set cairn.style.corpse true
/lp group vip permission set cairn.style.headstone true

Grave protection

Opening a grave means right-clicking its marker in the world, or clicking its entry in /cairn. Both go through the same check, in this order.

  1. No cairn.use: refused. That node is the whole grave system, not just the command. Taking it away takes graves away.
  2. You own the grave: always allowed, at any time.
  3. Somebody else's grave, within grave.protection-minutes of their death: refused, and the refusal says how many minutes are left. Allowed only with cairn.loot.other.bypass.
  4. Somebody else's grave, after that: allowed with cairn.loot.other, refused without it.

cairn.loot.other.bypass is stronger than cairn.loot.other: it satisfies step 4 as well as step 3. Bukkit does not make one node a child of another just because the names nest, so Cairn treats the bypass this way on purpose.

  • Free-for-all graves: set grave.protection-minutes: 0. A window of zero removes the timer, not the permission, so cairn.loot.other still governs who may loot.
  • Fully private graves: revoke cairn.loot.other and leave cairn.loot.other.bypass with your staff.

Both settings are per-world, because grave.protection-minutes can be overridden per world and a grave carries its own world's rule with it.

Tiered limit permissions

These are not fixed nodes. The number at the end of the node is the value granted. Grant a player the highest number for a tier and that is what they get. Granting a higher number without revoking a lower one still resolves to the higher number, so additive rank inheritance in LuckPerms works.

Node patternWhat the suffix meansA player with none of them gets
cairn.limit.count.<N>Maximum concurrent graves.tier.count.default from config.yml, 1 by default.
cairn.limit.expiry.<N>Grave lifetime override, in minutes.That world's grave.expiry-minutes.
cairn.limit.xp-retention.<N>XP retention override, 0 to 100 percent.That world's grave.xp-retention-percent.
cairn.limit.teleport.<N>Presence only, the number is ignored. Makes /cairn tp instant.tier.teleport.default, true by default.
cairn.limit.fee-waiver.<N>Presence only, the number is ignored. Waives the retrieval fee.tier.fee-waiver.default, false by default.

None of the cairn.limit.* nodes are granted by default, and being opped does not grant them either. Cairn only counts a tier node when a permission plugin has explicitly set it, granted or denied, for that player.

Cairn finds the number a player holds by scanning from 1 up to a bound and keeping the highest one found. count, teleport and fee-waiver share tier.scan-range, 64 by default. expiry has tier.expiry.scan-range, 10080 by default, a full week. xp-retention has tier.xp-retention.scan-range, 100 by default.

To grant a value above its bound, raise the matching tier.*.scan-range in config.yml first, or the permission will never be found. /cairn reload checks every online player's held permissions against the configured bounds and warns, by node name, about any set too high to be read. See Configuration.

LuckPerms rank template

Four tiers: a free Default that is usable as it is, then VIP, MVP and Elite, each adding a clear improvement. Paste these into your server console or a LuckPerms editor session after creating the groups, and adjust the group names if yours differ.

Default needs no extra commands. The defaults above already give a working baseline: one grave, loot your own graves, no teleport command. The block below is only what changes at each paid tier.

# VIP: unlocks teleporting to your own graves, one extra grave slot, a longer
# grave lifetime (4 days instead of the world default), and better XP retention.
lp group vip permission set cairn.command.tp true
lp group vip permission set cairn.limit.count.3 true
lp group vip permission set cairn.limit.expiry.5760 true
lp group vip permission set cairn.limit.xp-retention.60 true

# MVP: everything VIP has, plus more grave slots, guaranteed-instant teleport
# (protects the perk even if you later set tier.teleport.default to false), a
# waived retrieval fee if you use one, a full five-day expiry window, and most
# of a death's XP kept.
lp group mvp permission set cairn.command.tp true
lp group mvp permission set cairn.limit.count.5 true
lp group mvp permission set cairn.limit.teleport.1 true
lp group mvp permission set cairn.limit.fee-waiver.1 true
lp group mvp permission set cairn.limit.expiry.7200 true
lp group mvp permission set cairn.limit.xp-retention.80 true

# Elite, the top tier: most grave slots, instant teleport, fee waived, priority
# protection bypass so they can still get to their own grave's contents instantly,
# a full week before a grave expires, and full XP retention on death.
lp group elite permission set cairn.command.tp true
lp group elite permission set cairn.limit.count.10 true
lp group elite permission set cairn.limit.teleport.1 true
lp group elite permission set cairn.limit.fee-waiver.1 true
lp group elite permission set cairn.limit.expiry.10080 true
lp group elite permission set cairn.limit.xp-retention.100 true

If your groups inherit from each other in LuckPerms (Elite inherits MVP inherits VIP), you only need to set each new node once, at the tier that introduces it. The commands are written out in full per tier so they also work with flat, non-inheriting groups.

The XP retention numbers (VIP 60, MVP 80, Elite 100) only read as an upgrade if your config.yml sets grave.xp-retention-percent below 60 for the free tier. The shipped default is 100, which already gives everyone full retention. To sell XP retention, lower that world default first.

cairn.limit.expiry.10080 and cairn.limit.xp-retention.100 are exactly the shipped default bounds, so the template works unmodified against an untouched config.yml. For a longer expiry than a week, raise tier.expiry.scan-range first.