DUXPLIMA Documentation

How protection works

The three questions asked before anything is allowed inside a claim.

Every protected action passes three gates. All three must say yes.

flowchart LR
    A[Action] --> B[1. Is this chunk claimed?]
    B -- no --> Z[Allowed: wilderness]
    B -- yes --> C[2. Does a flag permit it?]
    C -- no --> D[Denied]
    C -- yes --> E[3. Does the player hold the role permission?]
    E -- no --> D
    E -- yes --> Z2[Allowed]

1. Is the chunk claimed?

Unclaimed land is not protected at all. uxmClaims never touches wilderness.

2. Does a flag permit it?

A flag is a rule about the claim, not about a player. TNT_EXPLOSIONS decides whether TNT may break blocks here at all: the owner's TNT included.

Flags are allow-when-present. A flag in the claim's set means the thing is permitted, and removing it forbids it. New claims start with claimSettings.defaultFlags.

Not every action has a flag. Flags exist for the things nobody is really "doing": explosions, fire spread, mob spawning, redstone, liquid flow.

3. Does the player hold the role permission?

A role permission is about a player. BLOCK_BREAK decides whether this player may break blocks here.

The resolution order, exactly as Claim.hasPermission runs it:

StepResult
Banned in this claimDenied, immediately
Owner, or holds uxmclaims.adminAllowed, immediately
A member, with the permission in their denied setDenied
A member, with the permission in their allowed setAllowed
A member otherwiseTheir role decides; the Member role if their role no longer exists
Not a memberThe Default role decides

Flags and permissions answer different questions

The distinction is the thing worth internalising.

FlagRole permission
Applies toThe claim (everyone, owner included)One player
Configured perClaimRole, with per-member overrides
ExampleFIRE_SPREAD (may fire spread here?)IGNITE (may this player light a fire?)
ExamplePVP (may players fight here?)MONSTER_DAMAGE (may this player hit mobs?)

The owner turning FIRE_SPREAD off means fire will not spread in their own base either. That is the point: flags protect against physics, permissions protect against people.

The bypasses

HolderEffect
uxmclaims.adminPasses every ability check and every role permission, in every claim
uxmclaims.bypass.*Passes every ability check
uxmclaims.bypass.teleportSkips the teleport warmup

Neither bypasses flags. A flag is a property of the world inside the claim, and turning off TNT_EXPLOSIONS stops an admin's TNT too.

Outside the claim

Two settings reach outside the permission system entirely:

SettingEffect
generalSettings.disabledWorldsNo claims may be created in those worlds
generalSettings.disabledCommandsInClaimThose commands are refused for non-members inside any claim

disabledCommandsInClaim is the one people forget. It ships with sethome in it, which stops visitors setting a home inside someone else's base: a common way to get around a ban.