Permissions¶
Every action UniversalAdmin can perform has its own node, so you can give a
helper "kick and mute" without "ban", or a builder "world time and weather"
without anything else. Nodes are registered at runtime (including those of
extensions), so LuckPerms and other permission plugins list and
auto-complete them. Without a permission plugin, every node except
universaladmin.reports.create is available to operators only.
Wildcards work as usual - universaladmin.* grants everything,
universaladmin.moderation.* all of moderation.
Role templates¶
Copy-paste starting points for LuckPerms (/lp group <group> permission set
<node>). Adjust to taste.
Helper - answers reports, warns, mutes, kicks:
universaladmin.menu.open
universaladmin.reports.view
universaladmin.reports.manage
universaladmin.chat.staff
universaladmin.moderation.use
universaladmin.moderation.view
universaladmin.moderation.notify
universaladmin.moderation.notes
universaladmin.moderation.kick
universaladmin.moderation.warn
universaladmin.moderation.mute
universaladmin.moderation.tempmute
universaladmin.moderation.unmute
universaladmin.moderation.freeze
universaladmin.moderation.unfreeze
universaladmin.moderation.vanish
universaladmin.bypass.vanish
universaladmin.players.view
universaladmin.players.teleport
universaladmin.network.view
universaladmin.network.goto
Moderator - everything a helper can, plus bans, staff mode and inventories:
universaladmin.moderation.*
universaladmin.bypass.vanish
universaladmin.reports.*
universaladmin.chat.*
universaladmin.players.view
universaladmin.players.teleport
universaladmin.players.inventory.view
universaladmin.players.enderchest.view
universaladmin.audit.view
universaladmin.whitelist.view
universaladmin.whitelist.add
universaladmin.network.view
universaladmin.network.goto
universaladmin.network.send
The network.* nodes only matter with network mode.
Admin - everything:
universaladmin.*
Every node¶
| Node | Default | What it allows |
|---|---|---|
| Core | ||
universaladmin.menu.open |
op | Open the /admin main menu |
universaladmin.status |
op | /admin status, /admin modules |
universaladmin.reload |
op | /admin reload |
universaladmin.update.notify |
op | Be told when a new version is out |
universaladmin.update.apply |
op | /admin update |
universaladmin.settings.manage |
op | Settings GUI and /admin settings |
| Players | ||
universaladmin.players.view |
op | Player browser, profiles, /admin info |
universaladmin.players.ip |
op | See a player's IP address |
universaladmin.players.teleport |
op | Teleport to/with players |
universaladmin.players.heal / .feed / .extinguish |
op | Heal, feed, extinguish |
universaladmin.players.effects.add / .remove / .clear |
op | Potion effects |
universaladmin.players.set.health / .food / .xp / .level |
op | Set values |
universaladmin.players.fly.toggle / .fly.speed / .walk-speed |
op | Flight and speed |
universaladmin.players.glow / .gravity / .collision |
op | Toggles |
universaladmin.players.gamemode |
op | Gamemode |
universaladmin.players.inventory.view / .inventory.edit |
op | Inventory editor (edit includes clearing) |
universaladmin.players.enderchest.view / .enderchest.edit |
op | Ender chest editor |
| Moderation | ||
universaladmin.moderation.use |
op | Moderation GUI, punishment wizard |
universaladmin.moderation.view |
op | Punishment history, /check |
universaladmin.moderation.kick |
op | Kick |
universaladmin.moderation.ban / .tempban / .ipban |
op | Bans |
universaladmin.moderation.mute / .tempmute |
op | Mutes |
universaladmin.moderation.warn / .removewarn |
op | Warnings |
universaladmin.moderation.punish |
op | Punishment templates (/punish); each step also needs its own punishment's node |
universaladmin.moderation.alts / .alts.forget |
op | Possible alts and the alt hint on join / delete a player's stored addresses |
universaladmin.bypass.alt-check |
op | Join although an account sharing the address is banned (with moderation.alts.refuse-banned-alts) |
universaladmin.moderation.unban / .unmute |
op | Lift bans/mutes |
universaladmin.moderation.freeze / .unfreeze |
op | Freeze |
universaladmin.moderation.notes |
op | Staff notes; "player with notes joined" alert |
universaladmin.moderation.import |
op | /admin import - import punishments from other plugins |
universaladmin.moderation.notify |
op | Be told when staff punish or pardon someone |
universaladmin.moderation.vanish |
op | Vanish yourself |
universaladmin.bypass.vanish |
op | See vanished players - also in network lists, /admin find and counts |
universaladmin.moderation.godmode |
op | Godmode for yourself |
universaladmin.moderation.collision |
op | No-collision for yourself |
universaladmin.moderation.staffmode |
op | Staff mode |
universaladmin.moderation.staffmode.recover |
op | /admin staff recover |
| Reports | ||
universaladmin.reports.create |
everyone | /report |
universaladmin.reports.view |
op | See reports, get notified about new ones |
universaladmin.reports.manage |
op | Claim, resolve, reject, teleport to reports |
universaladmin.reports.bypass-limits |
op | No report cooldown or open-report limit |
| Chat | ||
universaladmin.chat.staff |
op | Read and write staff chat |
universaladmin.chat.manage |
op | Lock, slow mode, clear chat |
universaladmin.chat.bypass |
op | Chat while locked/slowed; history survives a clear |
| Nick | ||
universaladmin.nick.use |
op | Nick yourself |
universaladmin.nick.others |
op | End other players' nicks |
universaladmin.nick.see |
op | See the real name behind a nick (player list, profile, /nick list) |
| Server | ||
universaladmin.server.view |
op | Server dashboard, /admin server status |
universaladmin.server.broadcast |
op | Broadcasts, titles, action bars |
universaladmin.server.maintenance |
op | Maintenance mode and its allow-list |
universaladmin.server.maintenance.network |
op | The whole network's maintenance and its allow-list (network mode; also needs server.maintenance) |
universaladmin.server.shutdown / .restart |
op | Shutdown/restart with countdown |
universaladmin.bypass.maintenance |
op | Join during maintenance - this server's and the network's |
| Worlds | ||
universaladmin.worlds.view / .view.seed |
op | World browser; the seed separately |
universaladmin.worlds.teleport |
op | Teleport to a world's spawn |
universaladmin.worlds.spawn.set / .time.set / .weather.set / .difficulty.set |
op | World settings |
universaladmin.worlds.border.manage / .gamerule.manage |
op | Border, gamerules |
| Whitelist | ||
universaladmin.whitelist.view / .toggle / .add / .remove |
op | Whitelist |
universaladmin.whitelist.temporary |
op | Whitelist with an expiry date |
universaladmin.whitelist.network |
op | Manage the network whitelist (with .toggle/.add/.remove) |
universaladmin.bypass.network-whitelist |
op | Join while the network whitelist is on without being on it |
| Performance | ||
universaladmin.performance.view |
op | Dashboard, /admin perf; receives performance alerts |
universaladmin.performance.entity-clear |
op | Entity clear |
| Audit log | ||
universaladmin.audit.view |
op | Audit log list, /admin audit |
universaladmin.audit.details |
op | Full detail of an entry (old/new values, metadata) |
| Network (only with network mode) | ||
universaladmin.network.view |
op | Network menu, /admin network, /admin find |
universaladmin.network.goto |
op | Go to another server or to a player there (/admin tp, /admin connect) |
universaladmin.network.send |
op | Move other players between servers (/admin tphere, /admin send) |
universaladmin.network.alert |
op | /admin alert on every server |
| Discord extension | ||
universaladmin.discord.manage |
op | /admin discord |
| Proxy plugins (on the proxy) | ||
universaladmin.velocity.status |
- | /uavelocity (Velocity) |
universaladmin.bungee.status |
- | /uabungee (BungeeCord) |
How checks work¶
GUI buttons and commands only hide what you may not use; the real check
happens when the action runs (ActionExecutor), so a permission can never
be bypassed by a stale GUI or a typed command. Every check goes through
Bukkit's normal permission system, so any permission plugin works.
For developers¶
A module or extension registers its nodes through
ModuleContext#registerPermission - never in plugin.yml. See
docs/extensions/getting-started.md.