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:
| Axis | Shape | Typical default |
|---|---|---|
| End-user | uxmessentials.home.use, uxmessentials.balance |
true |
| Admin / staff | uxmessentials.<ctx>.admin, uxmessentials.admin.* |
op |
| Bypass | uxmessentials.<feature>.<gate>.bypass |
op |
| Numbered / tiered | uxmessentials.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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.tpa.use |
true |
/tpa, /tpaccept, /tpdeny, /tpalist — request and resolve teleports |
uxmessentials.tpahere.use |
true |
/tpahere <player> — ask a player to come to you |
uxmessentials.tpa.cancel |
true |
/tpcancel — withdraw your outgoing request |
uxmessentials.tpa.toggle |
true |
/tptoggle, /tpon, /tpoff — refuse or accept incoming requests |
uxmessentials.tpa.auto |
true |
/tpauto — auto-accept incoming requests |
uxmessentials.tpa.block |
true |
/tpblock / /tpunblock <player> |
uxmessentials.tpa.all |
op |
/tpaall — request every online player |
uxmessentials.tpsettings.use |
true |
/tpsettings — your teleport settings panel |
uxmessentials.back.use |
true |
/back, /deathback — return to your last location |
uxmessentials.back.ondeath |
true |
Allow /back//deathback to return to a death location |
uxmessentials.back.others |
op |
/back <player> (staff) |
uxmessentials.rtp.use |
true |
/rtp — random teleport from the pre-warmed safe queue |
uxmessentials.rtp.others |
op |
/rtp <player> (staff) |
uxmessentials.teleport.settpr |
op |
/settpr <min> <max> — set the live /rtp search zone |
uxmessentials.spawn.use |
true |
/spawn — go to server spawn |
uxmessentials.spawn.named |
true |
/spawn <name> — go to a named spawn |
uxmessentials.spawn.set |
op |
/setspawn, /setmainspawn, /removespawn, /mirrorspawn |
uxmessentials.tp.use |
op |
/tp, /tphere, /goto, /bring — direct staff teleport |
uxmessentials.tp.position |
op |
/tppos, coordinate teleport |
uxmessentials.tp.offline |
op |
/tpoffline, /tpofflinehere |
uxmessentials.tp.vertical |
op |
/top, /bottom, /jump, /up, /down, /ascend, /descend, /thru |
uxmessentials.tp.all |
op |
/tpall — pull every online player to you |
uxmessentials.tp.others |
op |
Umbrella for the [player] form of staff teleport verbs |
uxmessentials.teleport.gui |
op |
Teleport 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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.home.use |
true |
/home — open and manage your home grid |
uxmessentials.home.icon |
true |
Pick a custom GUI icon for a home |
uxmessentials.home.visit |
true |
/home visit <player> [slot] |
uxmessentials.home.invite |
true |
/home invite / /home uninvite |
uxmessentials.home.admin |
op |
/home admin <player> … — manage another player's homes (audited) |
Warps¶
Single root /warp; create/move/delete/lock and the editor are subcommands.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.warp.use |
true |
/warp <name> — teleport to a warp |
uxmessentials.warp.others |
op |
/warp <name> <player> — send another player |
uxmessentials.warp.list |
true |
/warp list |
uxmessentials.warp.info |
true |
/warp info <name> |
uxmessentials.warp.set |
op |
/warp create (alias set) |
uxmessentials.warp.move |
op |
/warp move <name> |
uxmessentials.warp.delete |
op |
/warp del <name> |
uxmessentials.warp.lock |
op |
/warp lock <name> |
uxmessentials.warp.password |
op |
/warp password <name> |
uxmessentials.warp.edit |
op |
/warp editor <name> |
uxmessentials.warp.sign.create |
op |
Create a [warp] sign |
uxmessentials.warp.sign.use |
true |
Use 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. Access is by ownership and a per-warp public/private flag, so the base nodes are self-service.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.pwarp.use |
true |
/pwarp <name> [owner] — go to your own or a public warp |
uxmessentials.pwarp.set |
true |
/setpwarp <name> — create/move a warp (capped by the limit tier) |
uxmessentials.pwarp.delete |
true |
/pwarp del <name> |
uxmessentials.pwarp.list |
true |
/pwarps [player] |
uxmessentials.pwarp.public |
true |
/pwarp visibility public\|private <name> |
uxmessentials.pwarp.gui |
op |
Manage every player's warps in the /pwarp GUI |
Economy¶
Balances are DB-backed and routed through the shared EconomyProvider port; eco-admin mutations are always audit-logged.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.economy.balance |
true |
/balance [currency] |
uxmessentials.economy.balance.others |
op |
/balance <player> |
uxmessentials.economy.pay |
true |
/pay <player> <amount> |
uxmessentials.economy.pay.toggle |
true |
/paytoggle |
uxmessentials.economy.payall |
op |
/payall <amount> |
uxmessentials.economy.baltop |
true |
/baltop |
uxmessentials.economy.baltop.exempt |
false |
Hide the holder from /baltop (admin / system accounts) |
uxmessentials.economy.worth |
true |
/worth [item] |
uxmessentials.economy.sell |
true |
/sell, /sellall |
uxmessentials.economy.setworth |
op |
/setworth [item] <price>\|clear |
uxmessentials.economy.admin |
op |
Umbrella for /eco give/take/set (audited) |
uxmessentials.economy.admin.give |
op |
/eco give only |
uxmessentials.economy.admin.take |
op |
/eco take only |
uxmessentials.economy.admin.set |
op |
/eco set only |
uxmessentials.economy.admin.bulk |
op |
/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.
Kits¶
| Node | Default | What it grants |
|---|---|---|
uxmessentials.kit.use |
true |
/kit, /kit list, /kit <name> — claim kits |
uxmessentials.kit.preview |
true |
/kit show <name> |
uxmessentials.kit.others |
op |
/kit <name> <player> |
uxmessentials.kit.edit |
op |
/kit create/del/editor |
uxmessentials.kit.reset |
op |
/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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.vault.use |
true |
/vault, /vault <n>, /vault info, /vault delete <n> (own) |
uxmessentials.vault.rename |
true |
/vault rename <n> [name] |
uxmessentials.vault.icon |
true |
/vault icon <n> [material] |
uxmessentials.vault.others |
op |
/vault <player> [n] — open and audit another player's vault |
uxmessentials.vault.admin.delete |
op |
/vault delete <player> <n> (audited, no refund) |
uxmessentials.vault.free |
false |
Bypass every vault economy fee (no refund on delete) |
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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.god.use |
op |
/god |
uxmessentials.fly.use |
op |
/fly |
uxmessentials.gamemode.use |
op |
/gamemode, /gmc/gms/gma/gmsp |
uxmessentials.speed.use |
op |
/speed, /walkspeed, /flyspeed |
uxmessentials.heal.use / .feed.use |
op |
/heal / /feed |
uxmessentials.foodlevel.use / .health.use |
op |
/foodlevel / /health — set a specific value |
uxmessentials.repair.use / .repair.all |
op |
/repair / /repairall |
uxmessentials.extinguish.use |
op |
/ext |
uxmessentials.clearinventory.use |
op |
/clearinventory (/ci, /clear) |
uxmessentials.clearinventory.confirmtoggle |
true |
/citoggle — self-clear confirmation toggle |
uxmessentials.invsee.use (+.invsee.modify) |
op |
/invsee (modify unlocks editing) |
uxmessentials.endersee.use |
op |
/endersee |
uxmessentials.suicide.use |
true |
/suicide (self only) |
uxmessentials.near.use |
op |
/near [radius] |
uxmessentials.nightvision.use / .glow.use |
op |
/nightvision / /glow |
uxmessentials.ptime.use / .pweather.use |
op |
Per-player time / weather |
uxmessentials.exp.use |
op |
/exp (/xp) |
uxmessentials.air.use / .burn.use / .ice.use |
op |
Air / fire / freeze |
uxmessentials.getpos.use |
op |
/getpos (/coords, /whereami) |
uxmessentials.depth.use .biome.use .seed.use .compass.use .world.use .dimension.use .ping.use |
true |
Read-only info verbs |
uxmessentials.playtime.use / .playtime.reset |
op |
/playtime / reset |
uxmessentials.rest.use |
op |
/rest |
uxmessentials.playerstate.others |
op |
Use 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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.msg.use |
true |
/msg <player> <text> |
uxmessentials.msg.reply |
true |
/reply <text> |
uxmessentials.msg.toggle |
true |
/msgtoggle, /rtoggle |
uxmessentials.msg.ignore |
true |
/ignore, /unignore, /ignorelist |
uxmessentials.mail.use |
true |
/mail read\|send\|clear |
uxmessentials.mail.sendall |
op |
/mail sendall <text> (staff) |
uxmessentials.helpop.use |
true |
/helpop <text> |
uxmessentials.helpop.receive |
op |
Receive /helpop (staff side) |
uxmessentials.msg.color |
op |
Render MiniMessage in PM/mail bodies |
uxmessentials.msg.socialspy |
op |
/socialspy — observe others' PMs and mail |
uxmessentials.msgsettings.use |
true |
/msgsettings |
uxmessentials.messaging.gui |
op |
Messaging 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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.communication.broadcast |
op |
/broadcast <message> |
uxmessentials.communication.broadcastworld |
op |
/broadcastworld (/bcw) |
uxmessentials.communication.broadcasttoggle |
true |
/broadcasttoggle — opt out of rotating announcements |
uxmessentials.communication.me |
true |
/me <action> |
uxmessentials.communication.clearchat |
op |
/clearchat (/chatclear) |
uxmessentials.communication.clearchat.exempt |
false |
Keep your scrollback when staff run /clearchat |
uxmessentials.communication.togglechat |
op |
/togglechat (/mutechat) |
uxmessentials.announce.admin |
op |
/announce reload\|list\|preview\|toggle |
uxmessentials.communication.gui |
op |
Communication admin panel |
uxmessentials.communication.info.<name> |
true for shipped pages, op for custom |
One 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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.moderation.mute |
op |
/mute, /tempmute, /mutehistory |
uxmessentials.moderation.unmute |
op |
/unmute |
uxmessentials.moderation.mutelist |
op |
/mutelist |
uxmessentials.moderation.jail |
op |
/jail, /jails, /jailedplayers, /setjail, /jail del |
uxmessentials.moderation.unjail |
op |
/unjail |
uxmessentials.moderation.togglejail |
op |
/togglejail <player> |
uxmessentials.moderation.ban |
op |
/ban, /unban, /banhistory |
uxmessentials.moderation.banlist |
op |
/banlist |
uxmessentials.moderation.tempban |
op |
/tempban |
uxmessentials.moderation.banip |
op |
/banip, /tempbanip, /unbanip |
uxmessentials.moderation.kick |
op |
/kick, /kickall |
uxmessentials.moderation.warn |
op |
/warn, /tempwarn, /unwarn, /warns |
uxmessentials.moderation.history |
op |
/history <player> — unified disciplinary record |
uxmessentials.moderation.staffhistory |
op |
/staffhistory <staff> |
uxmessentials.moderation.staffrollback |
op |
/staffrollback <staff> [limit] |
uxmessentials.moderation.check |
op |
/checkban, /checkmute |
uxmessentials.moderation.sanction |
op |
/sanction <player> — read-only summary |
uxmessentials.moderation.freeze |
op |
/freeze, /unfreeze |
uxmessentials.moderation.seen |
op |
/seen, /seenip, /alts |
uxmessentials.moderation.commandspy |
op |
/commandspy (/cspy) |
uxmessentials.moderation.lockdown |
op |
/lockdown [on\|off] |
uxmessentials.moderation.sudo |
op |
/sudo <player> <command> |
uxmessentials.moderation.gui |
op |
/mod — moderation management GUI |
uxmessentials.moderation.exempt |
op |
Target-side immunity from lower staff |
uxmessentials.moderation.broadcast.receive |
op |
Receive 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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.staff.mode |
op |
/staffmode [player] — enter staff mode (loadout swap + gadgets + vanish) |
uxmessentials.staff.chat |
op |
/staffchat (/sc) — staff-only channel |
uxmessentials.staff.list |
op |
/stafflist — online-staff GUI |
Presence¶
| Node | Default | What it grants |
|---|---|---|
uxmessentials.afk.use |
true |
/afk [reason] |
uxmessentials.list.use |
true |
/list |
uxmessentials.realname.use |
true |
/realname <player> |
uxmessentials.nick.use |
true |
/nick <name>\|off |
uxmessentials.nick.others |
op |
/nick <player> <name> |
uxmessentials.whois.use |
op |
/whois <player> |
uxmessentials.gc.use |
op |
/gc (/lag, /tps, /mem) |
uxmessentials.staff.use |
op |
/staff — list online staff |
uxmessentials.staff.member |
op |
Marks a player as staff for /staff (a marker, not a command) |
uxmessentials.afk.kick.exempt |
op |
Never auto-kicked for being AFK |
uxmessentials.vanish.use |
op |
/vanish |
uxmessentials.vanish.see |
op |
See other vanished players (and /tp to them) |
uxmessentials.vanish.persist |
op |
Stay vanished across a relog |
uxmessentials.presencesettings.use |
true |
/presencesettings |
uxmessentials.presence.gui |
op |
Presence 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).
| Node | Default | What it grants |
|---|---|---|
uxmessentials.world.use |
true |
/worlds |
uxmessentials.world.list / .info |
op |
/worlds list / info |
uxmessentials.world.create / .import |
op |
/worlds create / import |
uxmessentials.world.load / .unload / .unregister |
op |
Load / unload / unregister |
uxmessentials.world.delete |
op |
/worlds delete + /worlds confirm |
uxmessentials.world.set / .gamerule |
op |
Properties / gamerules |
uxmessentials.world.setspawn |
op |
/worlds setspawn |
uxmessentials.world.spawn |
true |
/worlds spawn [name] |
uxmessentials.world.tp (+.tp.others) |
op |
Teleport self / another to a world |
uxmessentials.world.gui |
op |
/worlds gui |
uxmessentials.world.pregen |
op |
/worlds pregen |
uxmessentials.world.backup / .restore |
op |
Backup / restore |
Per-world entry uses uxmessentials.world.<name>.enter (a world with access restrictions). Bypass nodes are listed under Bypass Nodes.
Holograms¶
Named, world-placed native-Display holograms. The whole /hologram surface is gated as one operator tool.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.hologram.use |
op |
/hologram — create, edit, move, style, restrict, and delete holograms |
uxmessentials.holograms.gui |
op |
/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.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.npc.admin |
op |
/npc — create, skin, equip, pose, bind actions, and manage NPCs |
uxmessentials.npc.use |
true |
Interact with (click) an NPC. Reserved for a future per-NPC gate; the click currently runs for everyone |
uxmessentials.npc.gui |
op |
/npc (no args) opens the management GUI; the npc entry on the /uxmess gui hub |
Menus¶
The operator surface over the built-in menu engine.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.menu.use |
true |
/menu open <name>, /menu list, /menu last |
uxmessentials.menu.open.others |
op |
/menu open <name> <target> — open a menu for another player |
uxmessentials.menu.admin |
op |
/menu reload, /menu execute, /menu dump, /menu meta, /menu convert |
Vote¶
| Node | Default | What it grants |
|---|---|---|
uxmessentials.vote.use |
true |
/vote, /vote claim, /vote total\|streak, reminders |
uxmessentials.voteparty.use |
true |
/voteparty — progress to the next party |
uxmessentials.vote.top |
true |
/vote top [period] |
uxmessentials.vote.testreward |
op |
/vote testreward |
uxmessentials.vote.admin |
op |
/vote admin givevote\|reset |
uxmessentials.voteparty.admin |
op |
/voteparty force\|set\|add |
Scoreboard, Tablist & Nametags¶
The tablist and nametags modules register no commands — both are packet/config-driven.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.scoreboard.use |
true |
/scoreboard (/sb) — toggle whether you see the sidebar |
uxmessentials.scoreboard.gui |
true |
/scoreboard gui — per-player settings panel |
Discord Linking¶
| Node | Default | What it grants |
|---|---|---|
uxmessentials.discord.link |
true |
/discordlink, /discordlink status, /discordunlink (own account only) |
uxmessentials.discord.gui |
true |
/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.
Shared kernel¶
The kernel owns no feature commands, but carries two cross-cutting self-service verbs.
| Node | Default | What it grants |
|---|---|---|
uxmessentials.lang.use |
true |
/lang [code\|reset] — your personal language override |
uxmessentials.help |
true |
/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 family | Meaning | Reduction rule |
|---|---|---|
uxmessentials.home.limit.<n> |
Home quota | max — highest <n> wins |
uxmessentials.vault.amount.<n> |
Vault count | max |
uxmessentials.vault.size.<rows> |
Per-vault rows (1–6) | max |
uxmessentials.pwarp.limit.<n> |
Player-warp quota | max |
uxmessentials.tp.warmup.<seconds> |
Teleport warmup | min — lowest wins; 0 removes the warmup |
uxmessentials.tp.cooldown.<seconds> |
Teleport cooldown | min |
uxmessentials.warp.cooldown.<seconds> |
Warp cooldown | min |
uxmessentials.kit.cooldown.<seconds> |
Per-kit cooldown | min |
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 issue | max; none = unlimited |
uxmessentials.communication.info.<name> |
Per info-page gate | boolean |
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;0means "no wait". -1is the unlimited sentinel for quota families (ahome.limit.-1means no quota at all). It is never used for cooldown/warmup families, where0is "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.
| Node | What it bypasses |
|---|---|
uxmessentials.tp.warmup.bypass |
Teleport warmup (immune to move-cancel) |
uxmessentials.tp.cooldown.bypass |
The shared teleport cooldown |
uxmessentials.home.bypass.unsafe |
The unsafe-destination confirm on a home teleport |
uxmessentials.home.bypass.cost |
The per-action economy cost for home create/relocate/teleport |
uxmessentials.warp.bypass.lock |
A locked warp |
uxmessentials.warp.bypass.password |
A password-protected warp |
uxmessentials.warp.bypass.safety |
A warp whose destination fails the safety check |
uxmessentials.warp.cooldown.bypass |
The warp teleport cooldown |
uxmessentials.warp.cost.bypass |
The optional per-warp cost |
uxmessentials.playerwarp.bypass.lock |
A locked player warp |
uxmessentials.playerwarp.bypass.password |
A password-protected player warp |
uxmessentials.playerwarp.bypass.safety |
An unsafe player-warp destination |
uxmessentials.economy.pay.confirm.bypass |
The /payconfirm prompt above the confirm threshold |
uxmessentials.economy.bypasscmdcost |
The configured per-command economy charge |
uxmessentials.vault.bypass-blacklist |
The vault material blacklist |
uxmessentials.vault.free (default false) |
Every vault economy fee (no refund on delete) |
uxmessentials.msg.bypass.ignore |
A player who has ignored you |
uxmessentials.moderation.lockdown.bypass |
The /lockdown login refusal |
uxmessentials.communication.chat.bypass |
A /togglechat chat lock |
uxmessentials.cooldown.bypass.<label> |
A generic per-command cooldown registered under <label> |
uxmessentials.world.access.bypass |
Per-world entry restrictions on every world |
uxmessentials.world.gamemode.bypass |
A world's forced gamemode |
uxmessentials.world.command-bypass |
The per-world command blocker |
uxmessentials.playerstate.fly.allworlds |
The 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
/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¶
| Node | Default | What it grants |
|---|---|---|
uxmessentials.admin |
op |
/uxmess read-only subcommands: status, doctor, help |
uxmessentials.admin.reload |
op |
/uxmess reload (all or one module) |
uxmessentials.admin.import |
op |
/uxmess import <source> — the one-shot idempotent importer |
uxmessentials.admin.backup |
op |
/backup — snapshot the plugin data directory |
uxmessentials.gui |
op |
/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):
Or express a quota as meta instead of a numbered node:
Next Steps¶
- Command Overview — how commands are registered, aliased, renamed, and disabled
- LuckPerms Integration — meta-based quotas and group resolution
- Developer API — integrate with uxmEssentials at runtime