Repository navigation
Releases: universaladmin-mc/UniversalAdmin
Release list
UniversalAdmin 1.9.0
The second half of the menu overhaul, and a look over everything else:
compatibility, migrations and how easy UniversalAdmin is to use.
Added
- Server, worlds and performance as hubs, like the player profile: what
you see in a light blue row, what you do in rows behind coloured labels -
green harmless, orange with an effect on players, red dangerous. - Live values: the main menu, server, worlds, a world and performance
update once a second while open. - Traffic lights on the performance page: TPS, MSPT and memory in green,
yellow or red, measured against your alert thresholds. - A world's settings show their value: time (as a clock), weather,
difficulty, spawn and world border show what they are now and change on a
click. - The audit log reads in the server's language: "Ban - Admin banned
Notch for 7d: Griefing" instead ofcore:moderation.banand an English
sentence. See ADR 0028. - Minecraft's names in your game's language: game modes, difficulties,
effects and entities ("Überlebensmodus", "Eile") instead ofSURVIVAL,
SPEED. - New options reach your config.yml: an update writes options it brings
into your existing file with their explanation; the console lists them. - A hint for staff on their first join:
/adminopens the menu - and if
your game runs in a language UniversalAdmin ships that the server does not
use, one click switches it.
Fixed
- Heal, feed, extinguish, clear effects and the flight, glow, gravity and
collision switches wrote their raw input into the audit log
(PlayerTargetInput[targetId=...]). - The used deprecated
getBedSpawnLocationand effectgetNameare
replaced.
For extension developers
- API 1.8:
GuiRows,GuiButton#display,GuiPage#live(),
ActionDefinition.Builder#auditArgs,Migration#namespace()(your own
numbering inua_extension_migrations),MessageService#get(locale, ...).
Everything has a default; extensions built against API 1.7 keep working. ./gradlew buildchecks the jar against the Paper API of 1.21.7, 1.21.11
and the version compiled against (binaryCompatibility).
What's Changed
Full Changelog: v1.8.0...v1.9.0
UniversalAdmin 1.8.0
The menus got a new look: a frame in every module's colour, glass panes
that always mean the same, and hubs instead of long lists of buttons. See
ADR 0027.
Added
- Main menu as a dashboard: players online, open reports, TPS,
maintenance and the network at a glance, the modules in three groups,
and a "My status" row to switch vanish, staff mode, godmode, staff chat
and your nick on and off. - Status line: staff see what they have switched on in the action bar,
e.g.Vanish · Godmode · Nick Notch, while something is on. In staff
mode the target display keeps the action bar. Off with
gui.status-line: false. - A player's profile is the place for everything about them: who,
where, playtime and condition on the left, then rows to moderate (warn,
temp mute, kick, temp ban, freeze/unfreeze right there), view (inventory,
ender chest, effects, history, reports, notes, alts), help (teleport,
bring, heal, feed, flight, all actions) and more. The previous and next
online player are one click away, the UUID can be copied. - Player lists as tabs: the Players button opens the online players;
Online, Offline and Recently seen switch in the header. - A freeze is visible: the frozen player sees a title until they are
free (moderation.freeze.show-title), and staff who may freeze see a
marker above their head with who froze them and for how long
(moderation.freeze.staff-marker). - Settings with readable names and descriptions in English and German;
the config path is still shown below.
Changed
- Every page has the same frame: the header in the module's colour with
back, main menu, the page's icon, refresh and close; tools and paging at
the bottom; empty slots are black. Glass colours mean the same on every
page - green on/confirm, red off/danger, orange warning, white "nothing
here". - Switching pages no longer closes and reopens the inventory - no flicker,
the mouse stays where it is. - Confirmations have a frame in the colour of what is at stake: red for a
ban, orange for a kick or mute.
For extension developers
- API 1.7:
GuiGlass,MenuGroup,GuiWindow,GuiStyle,
StatusToggle/StatusToggleRegistry/ActionStatusToggle,
PlayerMenuGroup,PlayerMenuEntry#group(),GuiClickContext#page(),
ModuleDescriptor#menuGroup/#color. Everything has a default -
extensions built against API 1.6 keep working unchanged.
What's Changed
Full Changelog: v1.7.2...v1.8.0
UniversalAdmin 1.7.2
Fixed
- Godmode showed as "on" after every join on Paper 26, and the first
click only switched it off. 1.7.1 read the player's invulnerability, which
Paper also reports for the few seconds of protection after joining or a
hit. Godmode is now kept as a mark in the player's data. A player with
the godmode permission who still has godmode from an older version is
recognised a few seconds after joining, once that protection is over.
What's Changed
Full Changelog: v1.7.1...v1.7.2
UniversalAdmin 1.7.1
Fixed
- Corrected texts now reach every server.
lang/<locale>.ymlholds only
your own texts; every other text comes from the plugin and follows its
updates. Up to 1.7.0 the whole built-in file was copied there once and hid
every later correction - such a copy is cleaned once (your changes stay,
the original is kept aslang/<locale>.yml.before-1.7.1). Every built-in
text is inlang/reference/to copy from. See
ADR 0026. - Godmode after a restart: a player who still had godmode on when the
server restarted stayed invulnerable while the menu said "off", and needed
two clicks to turn it off. Godmode now follows the player's real
invulnerability. - Empty lists show a white "Nothing here." instead of a grey pane that
looked like filling.
What's Changed
Full Changelog: v1.7.0...v1.7.1
UniversalAdmin 1.7.0
Staff can play incognito now.
Added
- Nick system, a new built-in module:
/nick Notchshows you as Notch,
with Notch's skin, in the chat, the tab list, above your head, in join,
quit and death messages and to other plugins. Name and skin can be chosen
separately (/nick Bob Notch), or both at random (/nick random);
/unnickends it, also from the new Nick menu. Names of players who
have played here, of online players and of other nicks are refused. Staff
withuniversaladmin.nick.seesee the real name in the player list, on
the profile and in/nick list; punishments, notes, reports and the
audit log keep the real identity, and actions a nicked staff member takes
run under their real name. A nick survives rejoining
(nick.restore-on-rejoin) and follows its player through a network. See
docs/user/modules/nick.md and
ADR 0025. - UniversalAdmin TAB, an official extension for TAB: nicked players are
shown in an ordinary TAB group, vanished staff and players in staff mode
get a marker. Its own repository:
universaladmin-mc/universaladmin-tab. - Extension API 1.6: the
Nicksservice (dev.universaladmin.status),
PlayerNames.real(...)andPlayerNames.revealedTo(...). - Vanish sets the
vanishedplayer metadata vanish plugins share, so TAB,
map plugins and others recognise UniversalAdmin's vanish.
Fixed
- On Java 21 the update check and the anonymous statistics did not start
("No implementation of the random number generator algorithm"). - A player who left while vanished came back invisible when
moderation.vanish.restore-on-reconnectwas off.
What's Changed
- docs: Modrinth wiki links point to the documentation website by @nicki41 in #14
- UniversalAdmin 1.7.0 by @nicki41 in #15
Full Changelog: v1.6.0...v1.7.0
UniversalAdmin 1.6.0
Updates install themselves, the project has a home of its own - and a new
look.
Added
- Automatic updates: a new release (of UniversalAdmin or of an
installed official extension) is downloaded, checked against its SHA-256
checksum and installed on the next restart. Only within the same major
version - a major update waits for/admin update. Switch it off with
update.auto-download: false. Staff withuniversaladmin.update.notify
get a notice on join; the console logs it on every check. See
docs/user/configuration.md and
ADR 0024. /admin updateinstalls every available update at once - the plugin and
the extensions, a major update too.- The proxy plugins (Velocity, BungeeCord) check for updates as well and
log a notice (update-check.enabledin theirconfig.yml). They never
download anything. - Documentation website:
universaladmin-mc.github.io/UniversalAdmin,
built fromdocs/whenever it changes onmain. - New logos for UniversalAdmin, its extensions and the proxy plugins.
- API 1.5:
ExtensionManager#updatesFrom(Plugin, String, String)- an
extension names the GitHub repository it is released from, and
UniversalAdmin keeps it up to date too.
Changed
- The project moved to the GitHub organization
universaladmin-mc. Old links to
nicki41/UniversalAdminredirect. JitPack coordinates are now
com.github.universaladmin-mc.UniversalAdmin. - The official extensions have repositories of their own
(Discord,
Placeholders,
Voice Chat),
with their own releases. Their jars are no longer attached to the
UniversalAdmin release; Modrinth is unchanged.
Fixed
/admin updatepicked the first jar of a release - the API javadoc - and
refused it over the checksum. It now takes the plugin jar by name./admin updatereports every plugin on its own line: one whose release
cannot be fetched (for example an extension without a published release)
no longer stops the others. A missing release and a used-up GitHub request
limit are named as such.- "The details are in the server log" now holds for every internal error an
action reports - its reason is logged.
What's Changed
- docs: roadmap for automatic updates and extension repositories by @nicki41 in #11
- UniversalAdmin 1.6.0 by @nicki41 in #13
Full Changelog: v1.5.0...v1.6.0
UniversalAdmin 1.5.0
Mute in the chat, in the voice chat or both, forms instead of one prompt
after another, the whole network in the player menu - and a new license.
Added
- Chat, voice and full mutes:
/chatmuteand/voicemute(each with an
optional duration) next to/mute, which stays a full mute. With a voice
chat connected the punish form asks where to mute, and templates take
chatmute [duration]andvoicemute [duration]steps. The player's
notice, the staff notification, the history and/checkbanname the
kind;/unmutelifts every kind. In a network a mute takes effect on
every server at once. See
docs/user/modules/moderation.md
and ADR 0022. - UniversalAdmin Voice Chat, an official extension for Simple Voice
Chat: voice and full mutes silence the microphone, vanished staff cannot
be heard (voicechat.silence-vanished), a hidden, isolated staff voice
group (/admin voicegroup), the voice status on the profile with a
click to take a player out of a group. New permissions
universaladmin.voicechat.staffgroupand.manage. See
docs/extensions/voicechat.md. - The whole network in the player menu: in network mode Online
Players lists every player of the network with the server they are on,
with a Server filter and sorting by name or by server. A profile says
where the player is and offers Teleport to player, Bring to me and
Send to server... - also for players on this server. - API 1.4:
MuteKind,PlayerStatus#chatMute/#voiceMute, the
VoiceChatservice andGuiForm.
Changed
- Forms instead of one prompt after another
(ADR 0023): punishing
(reason, duration and mute kind in one form), adding to the whitelist
(reason, notes, expiry), title broadcasts (title and subtitle), chat
broadcasts (multi-line), enabling maintenance (reason, the message for
players, whether to kick), the world border (one field per value, a
transition slider, "use my position"), health, food, XP and speeds as
sliders, and teleporting to coordinates (X, Y, Z and a world list). - Text prompts accept up to 255 characters - the dialog's own limit of 32
cut longer reasons short. - The punishment list and detail pages show the localized type.
- License: GPL-3.0-or-later from this version on, for the plugin, the
proxy plugins and the official extensions. The extension API
(universaladmin-api) and the example extension stay under Apache-2.0, so
extensions can still use any license. Versions up to 1.4.0 remain
available under Apache-2.0. Every jar now carries its license text under
META-INF/- see docs/release/licensing.md.
Upgrading
- Replace the jars and restart; a database column is added automatically.
Every existing mute is a full mute. For voice mutes, add
universaladmin-voicechat-<version>.jarnext to Simple Voice Chat on every
server where players talk.
What's Changed
- docs: fix two line breaks in the Modrinth page text by @nicki41 in #7
- docs: statistics badges at the top and on Modrinth, roadmap for 1.5.0 by @nicki41 in #8
- chore: license under GPL-3.0-or-later, the extension API stays Apache-2.0 by @nicki41 in #9
- UniversalAdmin 1.5.0 by @nicki41 in #10
Full Changelog: v1.4.0...v1.5.0
UniversalAdmin 1.4.0
Find second accounts of banned players - without storing addresses - and
the proxy checks for BungeeCord networks too.
Added
- Alt detection (opt-in,
moderation.alts.enabled): every login stores
a keyed hash of the address - never the address itself; IPv6 counts by its
/64 network - and accounts that share one show up as possible alts:
/admin alts <player>, the Possible Alts button on a profile, and a
staff hint when a player joins who shares an address with a banned
account (on every server of a network). Optionally refuse such players
(moderation.alts.refuse-banned-alts, off by default;
universaladmin.bypass.alt-checkexempts players). Addresses are forgotten
aftermoderation.alts.retention(90 days);/admin alts <player> forget
deletes a player's on request; viewing and forgetting are audited. New
permissionsuniversaladmin.moderation.alts,.alts.forgetand
universaladmin.bypass.alt-check. See
docs/user/modules/moderation.md
and ADR 0020. - UniversalAdmin BungeeCord: the proxy plugin for BungeeCord networks -
bans, network maintenance, the network whitelist and the server-list text,
the sameconfig.ymlas the Velocity plugin,/uabungee. On GitHub and as
the-bungeeversion on Modrinth
(ADR 0021).
Changed
- The proxy checks live in one place (
proxy/common) for both proxy
plugins; UniversalAdmin Velocity behaves as before.
Upgrading
- Replace the jars and restart; a new table is created automatically. Alt
detection stays off until you switch it on. On a BungeeCord proxy, add
universaladmin-bungee-<version>.jarand fill in itsconfig.ymllike the
Velocity plugin's.
What's Changed
Full Changelog: v1.3.0...v1.4.0
UniversalAdmin 1.3.0
Consistent punishments that escalate on their own, and a network that can
be whitelisted and keeps vanished staff hidden.
Added
- Punishment templates with escalation:
/punish Steve spamwarns Steve
the first time, mutes him for an hour the second time, and so on - steps
per template inpunishment-templates.yml(five examples in the server's
language), counting earlier uses of the same template within 90 days (per
template;0= forever). Also as Punish with Template in the moderation
menu and/punishin the Discord bot./punish <player>still opens the
moderation menu (now with the templates first); from the console it lists
what each template would do. Each step still needs its own permission. New
permissionuniversaladmin.moderation.punish. See
docs/user/modules/moderation.md
and ADR 0018. - Network whitelist (
/admin whitelist network on|off|status|add|remove|list):
one list for every server of the network, on top of each server's own,
also enforced at the proxy by UniversalAdmin Velocity
(whitelist-check). New permissionsuniversaladmin.whitelist.network
anduniversaladmin.bypass.network-whitelist. See
docs/user/modules/whitelist.md. - Vanish across the network: vanished players are left out of the
network list,/admin find, player counts, tab completion and the
network placeholders for everyone withoutuniversaladmin.bypass.vanish,
and stay vanished when switching servers even with
vanish.restore-on-reconnect: false
(ADR 0019). - Extension API 1.3:
NetworkService#vanished(UUID).
Fixed
- Whitelist metadata in network mode was one table for every server, so
one server's expiry sweep could remove a player from another server's
whitelist. Each server now keeps its own; temporary entries keep their
expiry after the upgrade. %universaladmin_network_online%and%universaladmin_network_online_<server>%
no longer count vanished players.
Upgrading
- Replace the jars - the plugin on every server, UniversalAdmin Velocity on
the proxy, and the extensions (UniversalAdmin Placeholders 1.3 needs
UniversalAdmin 1.3) - and restart. New tables and columns are created
automatically,punishment-templates.ymlis written on the first start.
In a network, give the servers a minute to restart together: a server
that is still on 1.2 keeps working, but does not know the network
whitelist.
What's Changed
Full Changelog: v1.2.1...v1.3.0
UniversalAdmin 1.2.1
Maintenance done right in a network: one server or all of them.
Added
- Network maintenance:
/admin maintenance network on [kick] [reason]
closes every server of the network at once (and the proxy with
UniversalAdmin Velocity), with its own reason, message and allow-list;
off,status,list,allowanddenylikewise. The GUI page has a
second row for it. New permission
universaladmin.server.maintenance.network. See
docs/user/network.md and
ADR 0017. - UniversalAdmin Velocity refuses logins during network maintenance
(bypass permission on the proxy or the network allow-list still get in)
and shows "Maintenance" in the server list (maintenance-checkin its
config.yml)./uavelocityshows both checks. - A server in network mode without LuckPerms says at startup that OP and
permissions count per server, and how to share them
(network.md).
Fixed
- Maintenance in network mode was shared by accident: every server used
the same stored state, so putting one server into maintenance closed the
others after their next restart. Each server now keeps its own. /admin maintenance statusand the dashboard tile also show the
network's maintenance.- Import summary and allow-list audit entries no longer say "1 punishments"
or "1 players". - UniversalAdmin Velocity names its author in the proxy log, and no longer
uses the deprecated event order API. - Javadoc of the extension API: no more links to classes that only exist in
the plugin.
Upgrading
- Replace the jars (plugin on every server, and UniversalAdmin Velocity on
the proxy if you use it) and restart. A new table (ua_maintenance) is
created and the old maintenance state copied into it - every server keeps
the maintenance it had. In a network, give every server a
network.server-nameif you have not yet.
What's Changed
Full Changelog: v1.2.0...v1.2.1