Skip to content

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

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; 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.

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):

/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