DUXPLIMA Documentation

entitlements.yml

Limits, costs, delays and cooldowns: their defaults, strategies and rates.

Every number a player's rank can change lives here. This page covers the file's shape and how a value is resolved; Limits and costs covers granting the nodes.

An entry

entitlements:
  uxmclaims.limit.claim:
    strategy: STACK
    defaultValue: 1
    incrementRate: 1
KeyMeaning
strategyHow several matching nodes combine: STACK, MAX or MIN. Limits and delays only.
defaultValueWhat a player with no matching node gets
incrementRateA multiplier for limits and delays, a percentage for costs

The map key is the permission prefix. A missing or incomplete entry falls back to the shipped default for that prefix, and the console warns once: entitlements.yml has no complete '<prefix>' entry; using the shipped default.

Limits and delays

A player holds <prefix>.<amount>, for example uxmclaims.limit.claim.5. Each amount is multiplied by incrementRate, then the matches combine:

StrategyResultUse for
STACKdefaultValue plus every matchLimits that accumulate across ranks
MAXThe largest match, never below defaultValueLimits where the best rank wins
MINThe smallest match, never above defaultValueDelays and cooldowns, where smaller is the perk

STACK includes the default: uxmclaims.limit.claim ships with 1, so a rank granting .2 gives three claims. A rate above 1 turns the node into a tier: with rate 20, uxmclaims.limit.claim.5 gives 100 claims. Every shipped limit and delay uses rate 1.

Costs

Costs ignore strategy. A node carries the price, and the lowest matching price wins:

Node shapeUsed byExample
<prefix>.<n>.<price>claim, chunk, warp, role, inviteuxmclaims.cost.chunk.1.10: chunks cost 10 from the 1st on
<prefix>.*.<price>the sameuxmclaims.cost.warp.*.0: every warp is free
<prefix>.<public|private>.<price>warptpuxmclaims.cost.warptp.public.5
<prefix>.<price>rename, timeuxmclaims.cost.time.2_5: 2.5 per second

<n> is which item is being bought: the 3rd claim, the 12th chunk. Write a decimal point as _. For item n, a node naming n exactly sets the price; otherwise the nearest lower node (or defaultValue from item 1) is the base, and incrementRate compounds per item after it:

RateBase1st2nd3rd
0.0100100100100
10.0100100110121

A cost node can raise a price as well as lower it: it replaces defaultValue rather than competing with it.

The shipped defaults

PrefixStrategyDefaultRate
uxmclaims.limit.claimSTACK11
uxmclaims.limit.chunkSTACK101
uxmclaims.limit.memberSTACK501
uxmclaims.limit.timeSTACK25920001
uxmclaims.limit.warpMAX31
uxmclaims.limit.roleMAX51
uxmclaims.limit.banMAX251
uxmclaims.limit.inviteMAX101
uxmclaims.cost.claimMIN0.00.0
uxmclaims.cost.chunkMIN25.00.0
uxmclaims.cost.warpMIN0.00.0
uxmclaims.cost.roleMIN0.00.0
uxmclaims.cost.warptpMIN0.00.0
uxmclaims.cost.inviteMIN0.00.0
uxmclaims.cost.renameMIN0.00.0
uxmclaims.cost.timeMIN5.00.0
uxmclaims.delay.teleportMIN31
uxmclaims.delay.renameMIN301
uxmclaims.delay.warprenameMIN301
uxmclaims.delay.rolerenameMIN301
uxmclaims.delay.relocateMIN601
uxmclaims.delay.warprelocateMIN601
uxmclaims.delay.transferMIN3001
uxmclaims.delay.inviteMIN101
uxmclaims.delay.flagsMIN51

delay.teleport is the warmup before a teleport; the other delays are cooldowns between two uses of the same action, all in seconds. A cooldown refusal answers with errorOnCooldown.

Notes

  • Whose nodes count differs. Limits are read from the claim owner, costs and delays from the player acting, and a resolved limit of 0 means unlimited for some limits and none for others. Limits and costs has the details.
  • Operators, uxmclaims.admin and <prefix>.* skip the numbers. They get unlimited limits, free costs and no delays.
  • Without LuckPerms every player gets defaultValue. The nodes are read through LuckPerms; see permissionSupport in config.yml.
  • defaultValue: 1 for claims is deliberately tight. Raise it if your server expects players to hold several claims without buying a rank.
  • limit.time interacts with expireMode. With claimSettings.expireMode: false nothing expires and the entitlement is inert. With it on, limit.time caps how far /claim extend may push the expiry: going past it answers errorClaimTimeExceeded.
  • Watch inherited groups. With STACK, a VIP inheriting the default group gets the sum of both sets of nodes. This is the usual explanation for a limit that came out higher than intended.