uxmEssentials 0.3.0 Release Notes
Data-driven menu/GUI engine (headline feature)
A brand-new HOCON-spec + code-bound menu engine now powers every GUI in the plugin, replacing the old bespoke per-menu code.
- Engine core: typed spec records, HOCON spec loader, slot-range expansion, view-gated priority layering, pure pagination maths, binding registries with startup validation, a single MenuHolder/listener/closeMenu runtime with a leak-balanced refresh task, and ArchUnit fences locking the engine's internals.
- Operator custom menus: a custommenus module + /menu open|list|reload build your own menus from a generic action/condition/placeholder vocabulary; console actions are config-gated and off by default; bad menu files are skipped with a warning, never hide the rest.
- PlaceholderAPI bridge into menu placeholders (papi-compare), with a prefix fallback.
- Every built-in menu migrated onto the engine: homes, warps (browse/manager), kits (browse/manager/settings/category), economy (wallet, baltop, transactions, banks, exchange, loan, admin, target/bulk, pay-confirm, currency picker), moderation (history, jailed, active punishments, jail edit, punishment confirm), worlds (list + 4-screen editor), staff, holograms, npc, playerwarps, vaults, messaging (mailbox/ignore/settings), communication, itemworld (/recipe, /entitycount, utilities hub), vote sites, and the shared player/duration pickers.
- Property-editor framework: a typed-property editor runtime (openEditor), an engine confirm menu, and enum / list / colour / NPC-equipment child menus all on the one runtime.
- Engine capabilities added along the way: off-thread list sources cached per-holder, %max_page%, subject-driven titles, multi-line lore expansion, and pinned list slots.
- Two ArchUnit fences now guarantee no future GUI can bypass the engine (one for uxmLib GUI, one for raw-Bukkit inventories) only genuine item containers (vaults, disposal, invsee/endersee, workstations) and the anvil text-input stay outside.
Cross-server clustering & Redis bus (0.3.0 core)
- The entire cross-server bus now runs over Redis pub/sub (relocated Jedis shipped in the jar), selectable via network.transport.
- Bus split into a transport SPI + transport-agnostic core; plugin-messaging machinery moved into a PluginMessagingTransport (proxy-matching bus_v1 channel).
- Redis transport shipped as a separate companion jar, loaded as a plugin (not a JarLibrary).
- Cross-server sync on write for homes, vaults, player-warps, NPCs, holograms, and the messaging ignore list.
- ServerPing wired as a cluster-presence heartbeat; standalone Redis cache side-channels retired.
- Bus transport state surfaced in /uxmess doctor; transport parity proven byte-identical across both transports with frame-decode tests.
Folia readiness (100%)
- Fixed the four Folia-blocking cross-region operations.
- Whole-world entity reads, the online roster, advancement reads, and staff-alert reads all marshalled onto the correct region/global threads; /near made fully async; foreign entity state read on its owning region thread.
- New Folia drift guards to keep it that way.
Command UX overhaul
- Bare commands now open a GUI (gated by a per-command flag): /eco, /jail, /worlds, /list, /entitycount, /recipe, /ban, /mute, /tempban, /tempmute, /warn, /banip, /banlist, /banhistory, /checkban, /checkmute.
- Player-target verbs fan out across selectors, and only player-valid selectors are suggested (no more useless @e); nuke/lightning self-aim and /entitycount <radius> fixed.
- Missing tab-completion filled in across a batch of commands; Turkish aliases dropped in favour of registry-driven completion; /nick completion and /ignore offline targeting made discoverable; every /tpa rejection now gives clear feedback.
New & overhauled features
- Announcements: DB-backed announcement editor GUI behind /announce, an announcer-settings screen, and editor announcements shown in /announce list.
- Playtime: overhauled into an AFK-aware DB-backed tracker with its own panel.
- Warps: kit-style manager GUI + category system; /warp set → /warp create, /warp edit → /warp editor.
- Jail: fully GUI-driven jail system.
- Economy: admin GUI on /eco, eco-admin ops logged to transaction history, unified currency selection, per-item payout currency for /sell, banks get a random id + in-GUI currency picker.
- NPCs: each type shows its spawn egg in the editor selector; a go-to teleport action + coordinates added across the NPC, hologram, warp and jail GUIs.
- Worlds: right-click a world's icon to teleport; create worlds straight from the GUI.
- Text input unified behind one configurable anvil/chat seam.
- Online /endersee routed through a managed copy menu; staff loadout keyed per-server; jail/pwarp deletion folded into their parent commands; world delete behind a /worlds confirm.
Fixes & polish
- Discord link code only issued when the bridge is connected.
- Fake-player tab entry kept unlisted instead of removed.
- Player-warp visits recorded atomically off the sync path; vacuous striped wallet lock removed.
- Three message/gamemode behaviour quirks fixed; set-icon buttons show the configured material; cleaner anvil titles; coloured lore glyphs and neutral GUI filler panes.
Docs & release
- Bumped to 0.3.0; README rewritten (Paper 26.1.2, module toggles documented per config.conf, Velocity add-on described as the bus broker); changelog replaced by release notes.
New modules
Worlds — a full multi-world manager
NPCs — packet-based fake-player & entity NPCs (no real entities, our own packet layer)
- Create / import / load / unload / delete worlds (with confirm-staged deletion)
- Per-world properties & gamerules, applied live and on load; force per-world gamemode
- Built-in void and flat generators, selectable at create time
- Access control: per-world entry permissions, economy entry fees, restricted-join redirect
- /world tp / /world spawn, per-world spawn points & aliases
- Portals linked across worlds with coordinate scaling
- World editor GUI (list / settings / generation / rules / access)
- Pre-generation engine with /worlds pregen progress
- Backup & restore with a zip-slip-guarded archiver
- Idle-world auto-unload, plus worlds placeholders
Staff Mode — a dedicated staff context
- Any entity type: players, mobs, and display entities (text / block / item / interaction-hitbox)
- Skins by username, MineSkin (v2), URL, or raw texture; slim-variant support
- Click-action chains (delay, chance, condition, cost, give, command, player_op, random-pick, title, sound…) with full chain editing
- Equipment, glowing + glow colour, poses, non-uniform scale & translation, look-at-player
- Deep per-type metadata (horse/sheep/cat/frog/wolf/axolotl/panda/shulker… variants & states)
- Ownership: per-owner creation quota, command blocklist, owner recorded on create
- Tools: /npc copy/info/nearby/teleport/center/fix/help/list, typed /npc create
Nametags — above-head nametags via display entities
- Toggle with loadout swap (saved & restored), vanish, examine, freeze, follow, navigator, compass
- Staff chat, online-staff list, mode alerts, flight + night vision
- Rollback to revoke an actor's active sanctions, server lockdown, targeted socialspy
Tablist — split out of Scoreboard into its own module
- Hides the vanilla name, respects vanish, separate view-range vs cull distance, packet-rendered
- Per-player tab name formatting & sorting, animated header/footer
- Fixed-slot layouts with filler entries, optional synthetic tablist that hides real players, custom skins via packets
Major expansions to existing modules
Holograms — action chains on click, multi-page holograms (per-viewer click-to-cycle), leaderboard holograms (e.g. balance), per-player visibility & per-hologram blacklist, inline animations (rainbow/typewriter/scroll), player-head/item/block/frozen-entity types, glow colour & text opacity, alignment/see-through/3-axis scale/shadow, text macros + built-in tokens + PAPI/MiniPlaceholders, link-to-NPC follow, /hologram moveto, FancyHolograms & DecentHolograms importers.
Homes — rewritten to a slot-based GUI model; home visibility + invites (/visit, /invite); land-claim gating across 9 providers (Lands, GriefPrevention, uxmClaims…); optional economy charge; death-respawn chain (home/bed/spawn); /homeadmin; unsafe/blacklisted-world guards; EssentialsX import into slots.
Vote — VotingPlugin-class overhaul: vote totals + /vote top, config-driven reward engine, vote party (escalation, admin, rewards, cross-server sync), voting streaks, per-site cooldowns + reminders (/vote next/last), vote-sites GUI, multi-channel broadcasts, Discord webhook notifications, offline queue + /vote claim.
Vaults — /vault delete + economy cost, item blacklist, selector GUI, per-vault name & icon, overflow rescue, inactive-vault purge, open sound.
Moderation — silent sanctions, duration limits, warn escalation, unified /history /staffhistory /checkban /checkmute, IP history + address-strictness, cross-server ban kicks, LiteBans importer.
Messaging & Announcements — AFK notices, offline-message mail fallback, /mail sendall, multi-channel auto-announcements (placeholders, conditions, cadence), custom advancement notifications.
Scoreboard — condition-selected sidebar boards (per-player by priority), animated & conditional lines, hide score numbers, re-render on world/gamemode change.
Teleport — configurable arrival sound/particle effects.
Server management & UI
- Config-driven management GUI for every module + a /uxmess gui hub and shared framework — edit holograms, NPCs, warps, vaults, moderation, settings panels, etc. entirely in-game
- A reusable colour-picker widget (glass swatches + hex), now used consistently everywhere
- Full UI restyle: blue palette, no bold/gradients, &8 titles, single uxmEssentials » prefix, glyph/emoji cleanup — driven by one shared style-token resolver
PlaceholderAPI
Broad placeholder coverage added across every module — economy (per-currency, indexed baltop), homes, presence/nickname, teleport, moderation (ban/mute/freeze/warn), vaults, kits, warps & player-warps, messaging, staff, Discord, communication, holograms, and server-metric tokens.
Platform & importers
- Base raised to Paper 26.1.2 / Java 25
- Our own GPL-free packet layer for NPCs, nametags & tablist skins
- Importers: EssentialsX (homes), FancyHolograms, DecentHolograms, LiteBans
Notable fixes
- NPCs/nametags now render on 1.21.11 — fixed the packet channel resolver (inherited-field walk + fail-closed on uniterable connection-graph collections)
- Management-GUI polish: coloured lore icons, grey titles, reordered list clicks, populated "Current" hints
- Anvil text-input no longer returns the prompt item to the player
- Flyway self-heals checksum drift before migrating
