DUXPLIMA Documentation

Permission Reference

Overview

Every uxmEssentials permission lives under the root uxmessentials.*. The plugin ships with defaults that make a fresh install playable the moment it starts, so you only grant permissions to change the defaults, never to switch the plugin on.

Two rules cover almost everything:

  • Self-service verbs default to true. Read-only and own-account commands — /home, /balance, /msg, /afk, /list, /warp, /kit, /vault, /help, /lang, and their relatives — are available to everyone out of the box.
  • Staff verbs default to op. Mutations, moderation, and anything that acts on another player — /tp, /eco give, /ban, /vanish, the item/world verbs, hologram and NPC admin — require operator status or an explicit grant.

A handful of marker and exempt nodes default to false (they opt a player out of something rather than granting an action). Those are called out where they appear.

LuckPerms is optional

uxmEssentials never imports LuckPerms directly. Every check goes through the shared Permissions port, whose default implementation is the plain Bukkit Permissible#hasPermission call. That means every node on this page works against vanilla op and against any permission plugin (LuckPerms, GroupManager, and so on). The one place LuckPerms adds something is the numbered / tiered nodes below, which can also be expressed as LuckPerms meta — see Numbered and Tiered Nodes.

To override a default for a group, configure the node in your permission plugin. uxmEssentials does not own group state.


How nodes are organised

Permissions split along four axes:

AxisShapeTypical default
End-useruxmessentials.home.use, uxmessentials.balancetrue
Admin / staffuxmessentials.<ctx>.admin, uxmessentials.admin.*op
Bypassuxmessentials.<feature>.<gate>.bypassop
Numbered / tiereduxmessentials.home.limit.<n>, uxmessentials.tp.warmup.<seconds>(value-bearing, no boolean default)

A staff member usually holds the relevant admin node and the matching bypass node, so they keep operating through a gate — a cooldown, a warmup, a cost, a quota — that would otherwise reject them.


Teleport

The teleport context owns all movement orchestration and the shared cooldown/warmup machinery; homes, warps, and playerwarps delegate execution here, so their gates layer on top.

NodeDefaultWhat it grants
uxmessentials.tpa.usetrue/tpa, /tpaccept, /tpdeny, /tpalist — request and resolve teleports
uxmessentials.tpahere.usetrue/tpahere <player> — ask a player to come to you
uxmessentials.tpa.canceltrue/tpcancel — withdraw your outgoing request
uxmessentials.tpa.toggletrue/tptoggle, /tpon, /tpoff — refuse or accept incoming requests
uxmessentials.tpa.autotrue/tpauto — auto-accept incoming requests
uxmessentials.tpa.blocktrue/tpblock / /tpunblock <player>
uxmessentials.tpa.allop/tpaall — request every online player
uxmessentials.tpsettings.usetrue/tpsettings — your teleport settings panel
uxmessentials.back.usetrue/back, /deathback — return to your last location
uxmessentials.back.ondeathtrueAllow /back//deathback to return to a death location
uxmessentials.back.othersop/back <player> (staff)
uxmessentials.rtp.usetrue/rtp — random teleport from the pre-warmed safe queue
uxmessentials.rtp.biometrue/rtp biome <biome> — random teleport into a chosen biome
uxmessentials.rtp.guitrue/rtp gui — open the RTP menu
uxmessentials.rtp.othersop/rtp <player> (staff)
uxmessentials.rtp.cooldown.<seconds>Per-rank RTP cooldown (grant the number of seconds; highest wins)
uxmessentials.rtp.radius.<n>Per-rank max RTP search radius (grant the number of blocks; highest wins)
uxmessentials.teleport.settprop/settpr <min> <max> — set the live /rtp search zone
uxmessentials.spawn.usetrue/spawn — go to server spawn
uxmessentials.spawn.namedtrue/spawn <name> — go to a named spawn
uxmessentials.spawn.setop/setspawn, /setmainspawn, /removespawn, /mirrorspawn
uxmessentials.tp.useop/tp, /tphere, /goto, /bring — direct staff teleport
uxmessentials.tp.positionop/tppos, coordinate teleport
uxmessentials.tp.offlineop/tpoffline, /tpofflinehere
uxmessentials.tp.verticalop/top, /bottom, /jump, /up, /down, /ascend, /descend, /thru
uxmessentials.tp.allop/tpall — pull every online player to you
uxmessentials.tp.othersopUmbrella for the [player] form of staff teleport verbs
uxmessentials.teleport.guiopTeleport settings panel on the /uxmess gui hub

Homes

All home actions live under the single /home command; the no-arg call opens the slot grid and the rest are subcommands, each gated by its own node.

NodeDefaultWhat it grants
uxmessentials.home.usetrue/home — open and manage your home grid
uxmessentials.home.icontruePick a custom GUI icon for a home
uxmessentials.home.visittrue/home visit <player> [slot]
uxmessentials.home.invitetrue/home invite / /home uninvite
uxmessentials.home.adminop/home admin <player> … — manage another player's homes (audited)

Warps

Single root /warp; create/move/delete/lock and the editor are subcommands.

NodeDefaultWhat it grants
uxmessentials.warp.usetrue/warp <name> — teleport to a warp
uxmessentials.warp.othersop/warp <name> <player> — send another player
uxmessentials.warp.listtrue/warp list
uxmessentials.warp.infotrue/warp info <name>
uxmessentials.warp.setop/warp create (alias set)
uxmessentials.warp.moveop/warp move <name>
uxmessentials.warp.deleteop/warp del <name>
uxmessentials.warp.lockop/warp lock <name>
uxmessentials.warp.passwordop/warp password <name>
uxmessentials.warp.editop/warp editor <name>
uxmessentials.warp.sign.createopCreate a [warp] sign
uxmessentials.warp.sign.usetrueUse a [warp] sign

Per-warp gates are data-driven in warps.conf: a warp with permission: true requires the family node uxmessentials.warp.use.<warp> (<warp> is the warp id, lower-cased); a warp with a cost charges through the economy provider.


Player Warps

Player-owned warps are keyed by (owner, name) — two players may each keep a base. The base nodes are self-service: holding one lets a player run the verb, while whether they may run it on a particular warp is decided by the owner/co-owner/manager role matrix inside the module. See Player Warps.

NodeDefaultWhat it grants
uxmessentials.pwarp.usetrue/pwarp <name> [password] and the browse GUI
uxmessentials.pwarp.settrue/setpwarp <name> — create/re-anchor (capped by the limit tier)
uxmessentials.pwarp.deletetrue/pwarp del <name>
uxmessentials.pwarp.listtrue/pwarps [player]
uxmessentials.pwarp.publictrue/pwarp visibility public|private <name>
uxmessentials.pwarp.movetrue/pwarp move <name>
uxmessentials.pwarp.renametrue/pwarp rename <name> <newName>
uxmessentials.pwarp.displaynametrue/pwarp displayname
uxmessentials.pwarp.descriptiontrue/pwarp description
uxmessentials.pwarp.icontrue/pwarp icon
uxmessentials.pwarp.categorytrue/pwarp category
uxmessentials.pwarp.accesstrue/pwarp access <name> PUBLIC|PASSWORD|WHITELIST|PRIVATE
uxmessentials.pwarp.passwordtrue/pwarp password <name> <pw>|clear
uxmessentials.pwarp.pricetrue/pwarp price <name> <amount> [currency]
uxmessentials.pwarp.withdrawtrue/pwarp withdraw <name> — collect banked entry fees
uxmessentials.pwarp.infotrue/pwarp info <name>
uxmessentials.pwarp.ratetrue/pwarp rate <name> <1-5>
uxmessentials.pwarp.favouritetrue/pwarp favourite, /pwarp unfavourite
uxmessentials.pwarp.transfertrue/pwarp transfer <name> <player>
uxmessentials.pwarp.memberstrue/pwarp members <name> add|remove
uxmessentials.pwarp.whitelisttrue/pwarp whitelist <name> add|remove <player>
uxmessentials.pwarp.bantrue/pwarp ban, /pwarp unban
uxmessentials.pwarp.sponsortrue/pwarp sponsor <name> [days] (also needs the sub-group enabled)
uxmessentials.pwarp.adminopThe whole /pwarp admin group (restore, purge, delete, setowner, reload)
uxmessentials.pwarp.guiopManage every player's warps in the /pwarp GUI

The five bypasses (uxmessentials.pwarp.bypass.ban, .password, .whitelist, .safety, .cost) each default op and are listed under Bypass Nodes. The per-player cap is the tier uxmessentials.pwarp.limit.<n>, optionally scoped per world.


Economy

Balances are DB-backed and routed through the shared EconomyProvider port; eco-admin mutations are always audit-logged.

NodeDefaultWhat it grants
uxmessentials.economy.balancetrue/balance [currency]
uxmessentials.economy.balance.othersop/balance <player>
uxmessentials.economy.paytrue/pay <player> <amount>
uxmessentials.economy.pay.toggletrue/paytoggle
uxmessentials.economy.payallop/payall <amount>
uxmessentials.economy.baltoptrue/baltop
uxmessentials.economy.baltop.exemptfalseHide the holder from /baltop (admin / system accounts)
uxmessentials.economy.worthtrue/worth [item]
uxmessentials.economy.selltrue/sell, /sellall
uxmessentials.economy.setworthop/setworth [item] <price>|clear
uxmessentials.economy.adminopUmbrella for /eco give/take/set (audited)
uxmessentials.economy.admin.giveop/eco give only
uxmessentials.economy.admin.takeop/eco take only
uxmessentials.economy.admin.setop/eco set only
uxmessentials.economy.admin.bulkop/eco giveall, /eco giverandom, /eco resetall

/bank, /deposit, /withdraw, /loan, /wallet, /exchange, /sellall, and the extra /eco subcommands carry their own nodes but are only active when the matching feature flag is on in economy.conf. Per-currency gating uses the tier node uxmessentials.economy.currency.<id> — see Numbered and Tiered Nodes.


Ranks

Rankup, prestige and the ladder panel. The plugin tracks each player's rank with a DB-backed pointer of its own; a rank's rankup actions may set a permission-plugin group, run any command, or nothing at all. The ladder (ranks, order, cost, requirements, actions) is data-driven in modules/ranks/ranks.conf.

NodeDefaultWhat it grants
uxmessentials.ranks.rankuptrue/rankup — advance to the next rank when you meet its requirements
uxmessentials.ranks.prestigetrue/prestige — reset to the first rank for a prestige level (registered while prestige is enabled)
uxmessentials.ranks.guitrue/ranks — open the self-service ladder panel (registered only when the GUI is enabled)
uxmessentials.ranks.adminop/ranks setrank <player> <rank> and the top-level /setrank <player> <rank> — set a player's rank directly (bypasses requirements, cost and actions)

A rank's cost is charged through the economy provider, and a placeholder requirement uses an operator-chosen %placeholder% comparison — neither is a plugin-declared node.


Kits

NodeDefaultWhat it grants
uxmessentials.kit.usetrue/kit, /kit list, /kit <name> — claim kits
uxmessentials.kit.previewtrue/kit show <name>
uxmessentials.kit.othersop/kit <name> <player>
uxmessentials.kit.editop/kit create/del/editor
uxmessentials.kit.resetop/kit reset <player> [kit]

Per-kit gating is data-driven: a kit with permission: true requires uxmessentials.kit.<id>.


Vaults

DB-persisted, player-owned item storage. Vault count and per-vault size are numbered quota tiers.

NodeDefaultWhat it grants
uxmessentials.vault.usetrue/vault, /vault <n>, /vault info, /vault delete <n> (own)
uxmessentials.vault.renametrue/vault rename <n> [name]
uxmessentials.vault.icontrue/vault icon <n> [material]
uxmessentials.vault.othersop/vault <player> [n] — open and audit another player's vault
uxmessentials.vault.admin.deleteop/vault delete <player> <n> (audited, no refund)
uxmessentials.vault.freefalseBypass every vault economy fee (no refund on delete)

Trade

Player-to-player trading through a shared, both-confirm window. /trade is the whole surface; the accept/deny answers and the (optional) cross-server escrow all ride on the one node.

NodeDefaultWhat it grants
uxmessentials.trade.usetrue/trade <player> — request a trade; /trade accept|deny [player] — answer a pending request

The item blacklist, request distance, cooldown, staked currencies, audit, and cross-server escrow are config-driven in modules/trade/config.conf, not permission nodes.


Player State

Toggleable flags and apply-once effects. Every [player] target form additionally requires uxmessentials.playerstate.others. These default to op because they are powerful self/other buffs — loosen the specific ones a donor rank should get.

NodeDefaultWhat it grants
uxmessentials.god.useop/god
uxmessentials.fly.useop/fly
uxmessentials.gamemode.useop/gamemode, /gmc/gms/gma/gmsp
uxmessentials.speed.useop/speed, /walkspeed, /flyspeed
uxmessentials.heal.use / .feed.useop/heal / /feed
uxmessentials.foodlevel.use / .health.useop/foodlevel / /health — set a specific value
uxmessentials.repair.use / .repair.allop/repair / /repairall
uxmessentials.extinguish.useop/ext
uxmessentials.clearinventory.useop/clearinventory (/ci, /clear)
uxmessentials.clearinventory.confirmtoggletrue/citoggle — self-clear confirmation toggle
uxmessentials.invsee.use (+.invsee.modify)op/invsee (modify unlocks editing)
uxmessentials.endersee.useop/endersee
uxmessentials.suicide.usetrue/suicide (self only)
uxmessentials.near.useop/near [radius]
uxmessentials.nightvision.use / .glow.useop/nightvision / /glow
uxmessentials.ptime.use / .pweather.useopPer-player time / weather
uxmessentials.exp.useop/exp (/xp)
uxmessentials.air.use / .burn.use / .ice.useopAir / fire / freeze
uxmessentials.getpos.useop/getpos (/coords, /whereami)
uxmessentials.depth.use .biome.use .seed.use .compass.use .world.use .dimension.use .ping.usetrueRead-only info verbs
uxmessentials.playtime.use / .playtime.resetop/playtime / reset
uxmessentials.rest.useop/rest
uxmessentials.playerstate.othersopUse any of the above against a [player] target

Messaging

Private messages and persistent mail only (not public chat). Delivery is ignore-aware and respects a moderation mute.

NodeDefaultWhat it grants
uxmessentials.msg.usetrue/msg <player> <text>
uxmessentials.msg.replytrue/reply <text>
uxmessentials.msg.toggletrue/msgtoggle, /rtoggle
uxmessentials.msg.ignoretrue/ignore, /unignore, /ignorelist
uxmessentials.mail.usetrue/mail read|send|clear
uxmessentials.mail.sendallop/mail sendall <text> (staff)
uxmessentials.helpop.usetrue/helpop <text>
uxmessentials.helpop.receiveopReceive /helpop (staff side)
uxmessentials.msg.coloropRender MiniMessage in PM/mail bodies
uxmessentials.msg.socialspyop/socialspy — observe others' PMs and mail
uxmessentials.msgsettings.usetrue/msgsettings
uxmessentials.messaging.guiopMessaging panel on the /uxmess gui hub

Communication

Connection-message policies, the rotating announcer, and info pages. Operator-authored bodies are config content; the nodes gate the commands.

NodeDefaultWhat it grants
uxmessentials.communication.broadcastop/broadcast <message>
uxmessentials.communication.broadcastworldop/broadcastworld (/bcw)
uxmessentials.communication.broadcasttoggletrue/broadcasttoggle — opt out of rotating announcements
uxmessentials.communication.metrue/me <action>
uxmessentials.communication.clearchatop/clearchat (/chatclear)
uxmessentials.communication.clearchat.exemptfalseKeep your scrollback when staff run /clearchat
uxmessentials.communication.togglechatop/togglechat (/mutechat)
uxmessentials.communication.chat.formatfalseUse MiniMessage formatting in your own public chat messages (only when allow-player-format is on)
uxmessentials.announce.adminop/announce reload|list|preview|toggle
uxmessentials.communication.guiopCommunication admin panel
uxmessentials.communication.info.<name>true for shipped pages, op for customOne node per info page — /info, /rules, /motd, and any operator-added page

Moderation

Every action is audit-logged and permission-gated. A mute blocks outbound messaging; a jail blocks /home and /tpa.

NodeDefaultWhat it grants
uxmessentials.moderation.muteop/mute, /tempmute, /mutehistory
uxmessentials.moderation.unmuteop/unmute
uxmessentials.moderation.mutelistop/mutelist
uxmessentials.moderation.jailop/jail, /jails, /jailedplayers, /setjail, /jail del
uxmessentials.moderation.unjailop/unjail
uxmessentials.moderation.togglejailop/togglejail <player>
uxmessentials.moderation.banop/ban, /unban, /banhistory
uxmessentials.moderation.banlistop/banlist
uxmessentials.moderation.tempbanop/tempban
uxmessentials.moderation.banipop/banip, /tempbanip, /unbanip
uxmessentials.moderation.kickop/kick, /kickall
uxmessentials.moderation.warnop/warn, /tempwarn, /unwarn, /warns
uxmessentials.moderation.historyop/history <player> — unified disciplinary record
uxmessentials.moderation.staffhistoryop/staffhistory <staff>
uxmessentials.moderation.staffrollbackop/staffrollback <staff> [limit]
uxmessentials.moderation.statsop/modstats [staff] [days] — staff punishment analytics
uxmessentials.moderation.templatesop/punish <player> <template> — apply a configured template
uxmessentials.moderation.checkop/checkban, /checkmute
uxmessentials.moderation.sanctionop/sanction <player> — read-only summary
uxmessentials.moderation.freezeop/freeze, /unfreeze
uxmessentials.moderation.seenop/seen, /seenip, /alts
uxmessentials.moderation.commandspyop/commandspy (/cspy)
uxmessentials.moderation.lockdownop/lockdown [on|off]
uxmessentials.moderation.sudoop/sudo <player> <command>
uxmessentials.moderation.guiop/mod — moderation management GUI
uxmessentials.moderation.exemptopTarget-side immunity from lower staff
uxmessentials.moderation.broadcast.receiveopReceive the staff sanction broadcast

Ban and mute durations can be capped per rank with the numbered families uxmessentials.moderation.ban.maxduration.<seconds> and .mute.maxduration.<seconds> — see Numbered and Tiered Nodes.


Staff

STAFF-MODE ONLY — a loadout swap and a gadget hotbar. It issues no sanctions of its own; the FREEZE and COMPASS gadgets orchestrate the moderation and teleport use cases. The /staff text roster and the uxmessentials.staff.member marker live under Presence.

NodeDefaultWhat it grants
uxmessentials.staff.modeop/staffmode [player] — enter staff mode (loadout swap + gadgets + vanish)
uxmessentials.staff.chatop/staffchat (/sc) — staff-only channel
uxmessentials.staff.listop/stafflist — online-staff GUI

Vanish

PremiumVanish-class invisibility with layered see/use levels. Its own vanish module — the single authority every other context reads for vanish state. See the Vanish guide for the level rules.

NodeDefaultWhat it grants
uxmessentials.vanish.useop/vanish (and on/off, /vanish pickup) — become invisible
uxmessentials.vanish.othersop/vanish <player> — toggle another player's vanish
uxmessentials.vanish.listop/vanish list — the hidden players you may see (scoped to your see level)
uxmessentials.vanish.seeopSee vanished players (staff-among-staff) and /tp to them
uxmessentials.vanish.silentop/vanish -s — vanish or reappear with no fake join/quit broadcast
uxmessentials.vanish.persistopRejoin already vanished across a relog

The optional layered families uxmessentials.vanish.use.level<N> (vanish at use level N) and uxmessentials.vanish.see.level<N> (see up to level N) tier the see/use model — a viewer sees a vanished player only when their see level is at least the target's use level. Plain .use / .see are level 1; see Numbered and Tiered Nodes.


Presence

NodeDefaultWhat it grants
uxmessentials.afk.usetrue/afk [reason]
uxmessentials.list.usetrue/list
uxmessentials.realname.usetrue/realname <player>
uxmessentials.nick.usetrue/nick <name>|off
uxmessentials.nick.othersop/nick <player> <name>
uxmessentials.whois.useop/whois <player>
uxmessentials.gc.useop/gc (/lag, /tps, /mem)
uxmessentials.staff.useop/staff — list online staff
uxmessentials.staff.memberopMarks a player as staff for /staff (a marker, not a command)
uxmessentials.afk.kick.exemptopNever auto-kicked for being AFK
uxmessentials.presencesettings.usetrue/presencesettings
uxmessentials.presence.guiopPresence panel on the /uxmess gui hub

Worlds

Multi-world management. Nodes use the uxmessentials.world.* prefix (the plural /worlds command; playerstate's singular /world info verb also reads uxmessentials.world.use).

NodeDefaultWhat it grants
uxmessentials.world.usetrue/worlds
uxmessentials.world.list / .infoop/worlds list / info
uxmessentials.world.create / .importop/worlds create / import
uxmessentials.world.load / .unload / .unregisteropLoad / unload / unregister
uxmessentials.world.deleteop/worlds delete + /worlds confirm
uxmessentials.world.set / .gameruleopProperties / gamerules
uxmessentials.world.setspawnop/worlds setspawn
uxmessentials.world.spawntrue/worlds spawn [name]
uxmessentials.world.tp (+.tp.others)opTeleport self / another to a world
uxmessentials.world.guiop/worlds gui
uxmessentials.world.pregenop/worlds pregen
uxmessentials.world.backup / .restoreopBackup / restore

Per-world entry uses uxmessentials.world.<name>.enter (a world with access restrictions). Bypass nodes are listed under Bypass Nodes.


Item & World

The item/world toolbox carries roughly 65 verbs, each with its own node; the full per-command list lives on the Items, Blocks & World command page. They default op, except the read-only inspection verbs (/itemdb, /iteminfo, /recipe) which are self-service. Two nodes are worth calling out here — the held-item editor, and the in-inventory shulker editor, which has no command of its own.

NodeDefaultWhat it grants
uxmessentials.itemworld.itemeditop/itemedit — rename, re-lore, enchant, flag, attribute, durability, unbreakable and custom-model-data edits on the held item
uxmessentials.itemworld.shulkeropSneak-right-click a shulker box in the inventory to open and edit its contents in place

/give, /enchant and /spawnmob also layer a per-type opt-out family — uxmessentials.itemworld.give.<material>, .enchant.<enchant>, .spawnmob.<mob> — see Numbered and Tiered Nodes. The module's reload tier is uxmessentials.module.itemworld.


Holograms

Named, world-placed native-Display holograms. The whole /hologram surface is gated as one operator tool.

NodeDefaultWhat it grants
uxmessentials.hologram.useop/hologram — create, edit, move, style, restrict, and delete holograms
uxmessentials.holograms.guiop/hologram (no args) opens the management GUI; the holograms entry on the /uxmess gui hub

A hologram gated with visibility <name> PERMISSION <node> uses an operator-chosen node (any node your permission plugin manages) — it is not a plugin-declared node and has no fixed entry.


NPC

Server-wide packet fake-player/entity NPCs. The /npc command is an operator surface gated as a whole.

NodeDefaultWhat it grants
uxmessentials.npc.adminop/npc — create, skin, equip, pose, bind actions, and manage NPCs
uxmessentials.npc.usetrueInteract with (click) an NPC. Reserved for a future per-NPC gate; the click currently runs for everyone
uxmessentials.npc.guiop/npc (no args) opens the management GUI; the npc entry on the /uxmess gui hub

The operator surface over the built-in menu engine.

NodeDefaultWhat it grants
uxmessentials.menu.usetrue/menu open <name>, /menu list, /menu last
uxmessentials.menu.open.othersop/menu open <name> <target> — open a menu for another player
uxmessentials.menu.adminop/menu reload, /menu execute, /menu dump, /menu meta, /menu convert, /menu save
uxmessentials.menu.editorop/menu editor — build and edit menus in-game

Vote

NodeDefaultWhat it grants
uxmessentials.vote.usetrue/vote, /vote claim, /vote total|streak, reminders
uxmessentials.voteparty.usetrue/voteparty — progress to the next party
uxmessentials.vote.toptrue/vote top [period]
uxmessentials.vote.testrewardop/vote testreward
uxmessentials.vote.adminop/vote admin givevote|reset
uxmessentials.voteparty.adminop/voteparty force|set|add

Scoreboard, Tablist & Nametags

The tablist and nametags modules register no commands — both are packet/config-driven.

NodeDefaultWhat it grants
uxmessentials.scoreboard.usetrue/scoreboard (/sb) — toggle whether you see the sidebar
uxmessentials.scoreboard.guitrue/scoreboard gui — per-player settings panel

Discord Linking

NodeDefaultWhat it grants
uxmessentials.discord.linktrue/discordlink, /discordlink status, /discordunlink (own account only)
uxmessentials.discord.guitrue/discordlink gui — per-player link-status panel

The /link redemption itself runs in the optional Discord bridge jar; the in-game commands work whether or not the bridge is installed.


Sitting & Poses

NodeDefaultWhat it grants
uxmessentials.sit.usetrue/sit and right-clicking a seat block to sit
uxmessentials.playersit.usetrueRight-click another player to sit on them (feature is off by default in config)
uxmessentials.lay.usetrue/lay
uxmessentials.bellyflop.usetrue/bellyflop
uxmessentials.spin.usetrue/spin
uxmessentials.crawl.usetrue/crawl
uxmessentials.poses.toggletrue/poses toggle — allow or refuse other players sitting on you
uxmessentials.poses.guitrueOpen the /poses settings panel
uxmessentials.poses.cooldown.bypassopSkip the pose cooldown

The optional numbered node uxmessentials.poses.cooldown.<seconds> sets an anti-spam wait between starting poses (an open value space, like kit.cooldown.<seconds> — see Numbered and Tiered Nodes). See the Sitting & Poses guide for how each pose works.


Survival

Opt-in gameplay mechanics, each an independently toggleable sub-feature. A mechanic carries a use node uxmessentials.survival.<mechanic> (whether it acts for the player), and the seven with a personal /command toggle also carry uxmessentials.survival.<mechanic>.toggle (whether the player may switch it, from the command or the /survival panel). All are self-service (default: true) — the module itself ships off, and once an operator turns it on the mechanics act for everyone and a player opts out.

NodeDefaultWhat it grants
uxmessentials.survival.treefellertrueTree-feller acts for you — break one log to fell the whole trunk
uxmessentials.survival.treefeller.toggletrue/treefeller — switch your personal tree-feller on or off
uxmessentials.survival.veinminertrueVeinminer acts for you — break one block to mine the connected vein
uxmessentials.survival.veinminer.toggletrue/veinminer — switch your personal veinminer on or off
uxmessentials.survival.farmprotecttrueFarmland protection acts for you — you won't trample your crops
uxmessentials.survival.farmprotect.toggletrue/farmprotect — switch your personal farmland protection on or off
uxmessentials.survival.farmassisttrueRight-click a mature crop to harvest and replant it, spending one seed
uxmessentials.survival.autopickuptrueAuto-pickup acts for you — mined drops go straight to your inventory
uxmessentials.survival.autopickup.toggletrue/autopickup — switch your personal auto-pickup on or off
uxmessentials.survival.autosmelttrueAuto-smelt acts for you — ores are smelted as you mine them
uxmessentials.survival.autosmelt.toggletrue/autosmelt — switch your personal auto-smelt on or off
uxmessentials.survival.autoselltrueAuto-sell acts for you — priced drops are sold for coin as you mine
uxmessentials.survival.autosell.toggletrue/autosell — switch your personal auto-sell on or off
uxmessentials.survival.autotooltrueAuto-tool acts for you — the best tool swaps to hand as you mine
uxmessentials.survival.autotool.toggletrue/autotool — switch your personal auto-tool on or off
uxmessentials.survival.guitrue/survival — open your personal survival mechanics settings panel

Fast leaf decay, the anvil unlocker, one-player sleep and head drops are world-side effects with no permission node — they're governed only by their config blocks. See the Survival Mechanics guide for what each mechanic does.


Security

Account security — an optional second factor a player enrols themselves, join verification, op-command protection, and a same-IP alt / ClientID guard. Not a login system: there's no password or first-join gate, and on an offline-mode server it waits for your login plugin rather than replacing it. The two self-service nodes ship true; the staff reads and the bypass default to op. See the Account Security guide for the flows.

NodeDefaultWhat it grants
uxmessentials.security.2fatrue/2fa — set up, confirm or disable the authenticator second factor on your own account
uxmessentials.security.pintrue/pin — set, change, remove or lock the numeric PIN second factor on your own account
uxmessentials.security.pin.requiredfalseHolders must have a PIN: a holder with no factor is shown the create pad on join and cannot play until they set one
uxmessentials.security.adminop/security — inspect and manage another player's second factors. Gates the whole tree
uxmessentials.security.bypassopExempt from the join-verification freeze and the op-command re-auth checks
uxmessentials.security.forceop/security force <player> — make a player re-verify their second factor on their next action or join
uxmessentials.security.resetop/security reset <player> [totp|pin|all] — clear a factor a player can no longer prove
uxmessentials.security.altsop/ipalts <player> — list the accounts that share an IP with a player
uxmessentials.security.clientinfoop/clientinfo <player> — show the client brand a player reported
uxmessentials.security.alts.notifyopReceive the staff notice when a join shares an IP with other accounts or reports a flagged client

Command Control

Command whitelist / blacklist gating, tab-completion filtering, plugin-hide, and the namespace-bypass block — the PlHidePro / CommandWhitelist feature set. It ships enabled but inert (a blacklist with empty lists, plugin-hide off), so both nodes default to op and gate nobody until you name commands. See the Command Control guide.

NodeDefaultWhat it grants
uxmessentials.commandcontrol.bypassopExempt from the whitelist/blacklist gate and the tab-completion / plugin-hide scrub (namespaced forms included)
uxmessentials.commandcontrol.viewpluginsopSee the plugin-listing / help commands (/plugins, /pl, /help, ...) hidden by plugin-hide
uxmessentials.commandcontrol.channelhide.bypassopExempt from the plugin-channel hider — the full channel-registration list is sent to this player
uxmessentials.commandcontrol.spam.bypassopExempt from the command-spam rate limiter — commands are never counted and no spam action fires

Villagers

Villager trade management — trades that never lock out, a restock timer, a staff trade editor, click-to-trade, a villager saver, pickup, follow, and leashing. The module ships disabled, so all six action nodes default to op and grant nothing until you turn the module on and then the matching feature with it. The four trade-availability switches (infinite trading, restock, instant restock, disable trades) take no permission — they're config-only. See the Villagers guide.

NodeDefaultWhat it grants
uxmessentials.villagers.useop/villager — the root command's base node; each subcommand gates further on its own node below
uxmessentials.villagers.managerop/villager manager — open and edit the trades of the villager you're looking at
uxmessentials.villagers.tradeopOpen a villager's trade window directly on right-click, when click-to-trade is enabled
uxmessentials.villagers.protectop/villager protect — toggle whether the villager you're looking at is protected from death and despawn
uxmessentials.villagers.bucketopSneak-right-click a villager to pick it up into a captured-villager item, and place it back later
uxmessentials.villagers.followop/villager follow — toggle whether the villager you're looking at pathfinds after you
uxmessentials.villagers.leashopRight-click a villager with a lead to leash it, when leashing is enabled

Inventory Rollback

Inventory snapshot and restore — the plugin freezes a player's inventory on death and (by config) on logout, keeps a bounded history of those snapshots in the database (never PDC, so they survive a world rollback), and lets staff browse and restore them from a GUI. The module ships disabled; turn it on and it captures on death and logout straight away. A restore acts on a live inventory, so the target must be online. See the Inventory Rollback guide.

NodeDefaultWhat it grants
uxmessentials.invrollback.restoreop/invrestore <player> — open the inventory-snapshot restore GUI, then preview and restore one of that player's snapshots
uxmessentials.invrollback.exportop/invrestore export <player> <index> — pack a snapshot into shulker boxes and hand them to you
uxmessentials.invrollback.teleportop/invrestore tp <player> <index> — teleport to where the snapshot was captured

Regions

WorldGuard region management — a menu over an installed WorldGuard to browse regions, define cuboids, cycle their state flags, and edit their member/owner rosters. WorldGuard is a soft-dependency: with it absent the module is inert and every command answers "WorldGuard not installed" (WorldEdit is a further optional soft-depend, used only for selection-based /regions create). Region management is staff work, so all five action nodes default to op. See the Regions guide.

NodeDefaultWhat it grants
uxmessentials.regions.listop/regions [world] — browse a world's regions and open a region's detail panel
uxmessentials.regions.createop/regions create <id>, /regions pos1, /regions pos2 — define a new cuboid region
uxmessentials.regions.flagsopThe flag editor (/regions flags <id>) — cycle a region's state flags UNSET → ALLOW → DENY
uxmessentials.regions.membersopThe member/owner roster (/regions members <id>), plus /regions addmember / addowner
uxmessentials.regions.adminop/regions priority <id> <value> — set a region's priority

Server Tweaks

A grab-bag of silent server-side infrastructure tweaks — a custom F3 brand, a console-log filter, an unsigned-chat option, and a SignedVelocity backend companion. The module is config-only: it registers no commands, so it has no action permission nodes. Every tweak defaults off and is switched entirely from modules/servertweaks/config.conf. See the Server Tweaks guide. The module's reload tier is uxmessentials.module.servertweaks.


Shared kernel

The kernel owns no feature commands, but carries two cross-cutting self-service verbs.

NodeDefaultWhat it grants
uxmessentials.lang.usetrue/lang [code|reset] — your personal language override
uxmessentials.helptrue/help [page|query] — list the commands you can run (per-line permission-filtered)

Numbered and Tiered Nodes

Some limits are values, not yes/no flags: how many homes a player may own, how long their teleport cooldown is. Instead of hard-coding these per group, uxmEssentials encodes the value in the node and reads the best-matching one the player holds, falling back to a config default.

Node familyMeaningReduction rule
uxmessentials.home.limit.<n>Home quotamax — highest <n> wins
uxmessentials.vault.amount.<n>Vault countmax
uxmessentials.vault.size.<rows>Per-vault rows (1–6)max
uxmessentials.pwarp.limit.<n>Player-warp quotamax
uxmessentials.tp.warmup.<seconds>Teleport warmupmin — lowest wins; 0 removes the warmup
uxmessentials.tp.cooldown.<seconds>Teleport cooldownmin
uxmessentials.warp.cooldown.<seconds>Warp cooldownmin
uxmessentials.kit.cooldown.<seconds>Per-kit cooldownmin
uxmessentials.warp.use.<warp>Per-warp gate (when the warp sets permission: true)boolean
uxmessentials.kit.<id>Per-kit gate (when the kit sets permission: true)boolean
uxmessentials.economy.currency.<id>Per-currency gate (when permission-required = true)boolean
uxmessentials.itemworld.give.<material> / .enchant.<enchant> / .spawnmob.<mob>Per-type opt-out (wildcard parents default true)boolean, opt-out
uxmessentials.moderation.ban.maxduration.<seconds> / .mute.maxduration.<seconds>Max sanction duration a holder may issuemax; none = unlimited
uxmessentials.vanish.use.level<N> / .see.level<N>Vanish use level / see level (a viewer sees a target when see ≥ use)max — highest <N> wins
uxmessentials.communication.info.<name>Per info-page gateboolean

How they resolve

Every value-bearing node passes through the shared Permissions port and a single QuotaNodeReducer, so the semantics are identical across contexts:

  • Quota families (home.limit, vault.amount, vault.size, pwarp.limit, *.maxduration) reduce to the maximum — more is better, the most generous node wins.
  • Cooldown / warmup families (*.cooldown, *.warmup) reduce to the minimum — less is better; 0 means "no wait".
  • -1 is the unlimited sentinel for quota families (a home.limit.-1 means no quota at all). It is never used for cooldown/warmup families, where 0 is "no wait".
  • A player with no numbered node and no meta falls back to the per-context config default — never to "unlimited".

A numbered node may carry an optional <world> segment between the family and the value, so a quota or cooldown can differ per destination world:

uxmessentials.home.limit.creative.20
uxmessentials.tp.warmup.nether.0
uxmessentials.warp.cooldown.<world>.<seconds>

The unscoped form applies everywhere; the world-scoped form applies only when that world is the one being resolved against. Matching scoped and unscoped nodes are simply folded into the same reducer.

LuckPerms meta is an alternative, never a requirement

When LuckPerms is installed, these same quotas can also be expressed as LuckPerms meta (for example meta.home-limit, meta.warp-cooldown). A meta value takes precedence over the numbered node when present. With no permission plugin, only the numbered node and the config default apply — the numbered form is the portable baseline.

Because the value spaces (<n>, <seconds>, <rows>, and so on) are open, these nodes are not enumerated in paper-plugin.yml; operators grant the specific instances they need.


Bypass Nodes

Bypass nodes let a trusted player cut through a gate — a cooldown, warmup, cost, lock, or restriction — that would normally reject them. They all default to op, except the two vault/marker exempt nodes noted below.

NodeWhat it bypasses
uxmessentials.tp.warmup.bypassTeleport warmup (immune to move-cancel)
uxmessentials.tp.cooldown.bypassThe shared teleport cooldown
uxmessentials.home.bypass.unsafeThe unsafe-destination confirm on a home teleport
uxmessentials.home.bypass.costThe per-action economy cost for home create/relocate/teleport
uxmessentials.warp.bypass.lockA locked warp
uxmessentials.warp.bypass.passwordA password-protected warp
uxmessentials.warp.bypass.safetyA warp whose destination fails the safety check
uxmessentials.warp.cooldown.bypassThe warp teleport cooldown
uxmessentials.warp.cost.bypassThe optional per-warp cost
uxmessentials.pwarp.bypass.banA player warp you are banned from
uxmessentials.pwarp.bypass.passwordA password-protected player warp
uxmessentials.pwarp.bypass.whitelistA whitelist-only player warp
uxmessentials.pwarp.bypass.safetyAn unsafe player-warp destination
uxmessentials.pwarp.bypass.costA player warp's entry price
uxmessentials.economy.pay.confirm.bypassThe /payconfirm prompt above the confirm threshold
uxmessentials.economy.tax.bypassThe /pay tax cut (renameable via pay.tax.bypass-permission)
uxmessentials.economy.bypasscmdcostThe configured per-command economy charge
uxmessentials.vault.bypass-blacklistThe vault material blacklist
uxmessentials.vault.free (default false)Every vault economy fee (no refund on delete)
uxmessentials.msg.bypass.ignoreA player who has ignored you
uxmessentials.moderation.lockdown.bypassThe /lockdown login refusal
uxmessentials.communication.chat.bypassA /togglechat chat lock
uxmessentials.cooldown.bypass.<label>A generic per-command cooldown registered under <label>
uxmessentials.world.access.bypassPer-world entry restrictions on every world
uxmessentials.world.gamemode.bypassA world's forced gamemode
uxmessentials.world.command-bypassThe per-world command blocker
uxmessentials.playerstate.fly.allworldsThe no-fly-world restriction on /fly

Module Gates and Admin Roots

uxmessentials.module.<id> — per-module reload tier

Every bounded context is a first-class feature module. Each owns a node tier uxmessentials.module.<id> (default op) — not the feature's runtime permission, but the per-module administrative gate: who may inspect and hot-reload that one module via /uxmess reload <id> without holding the blanket uxmessentials.admin.reload. <id> is the module id used everywhere else (config path modules.<id>, the reload command, the tier node):

teleport   worlds     homes       economy    warps      kits
playerstate messaging presence    moderation itemworld  vaults
communication holograms playerwarps scoreboard tablist  nametags
vote       discordlink staff       npc        custommenus
poses      survival    ranks       trade      vanish
security   commandcontrol villagers   invrollback
regions    servertweaks

/uxmess reload <module> accepts either uxmessentials.admin.reload (blanket) or the matching uxmessentials.module.<id> (delegated), so you can hand a junior staffer reload rights over one module without the keys to the whole plugin.

/uxmess admin tree

NodeDefaultWhat it grants
uxmessentials.adminop/uxmess read-only subcommands: status, doctor, help
uxmessentials.admin.reloadop/uxmess reload (all or one module)
uxmessentials.admin.importop/uxmess import <source> — the one-shot idempotent importer
uxmessentials.admin.backupop/backup — snapshot the plugin data directory
uxmessentials.guiop/uxmess gui — the central management hub

Management-GUI nodes

The management hub gathers each module's management GUI behind one menu. Each module registers its entry under uxmessentials.<module>.gui (for example uxmessentials.holograms.gui, uxmessentials.npc.gui, uxmessentials.economy.admin). Each defaults to op, the hub shows a viewer only the entries whose node they hold, and a module's own /<module> GUI entry point opens directly for a holder of the same node — so you can delegate one module's panel without granting the rest.


Granting with LuckPerms

All of these are ordinary permission nodes. To hand a donor group extra homes and free flight, for example:

/lp group donor permission set uxmessentials.home.limit.10 true
/lp group donor permission set uxmessentials.fly.use true
/lp group donor permission set uxmessentials.tp.warmup.bypass true

Restrict a single per-type node by negating it (the opt-out families default true):

/lp group default permission set uxmessentials.itemworld.spawnmob.wither false

Or express a quota as meta instead of a numbered node:

/lp group donor meta set home-limit 10

Next Steps