
uxmEssentials
A modern, modular essentials plugin for Paper 26.2+. Homes, warps, teleports, economy, kits, moderation, vaults and the rest of the day-to-day toolkit clean, Folia-ready and fully translatable. Turn any module off and it wires nothing; rename or alias an
Tags
Creators
Details
0.3.0
Compatibility
Changes
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/closeMenuruntime with a leak-balanced refresh task, and ArchUnit fences locking the engine's internals. - Operator custom menus: a
custommenusmodule +/menu open|list|reloadbuild 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-matchingbus_v1channel). - 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.
ServerPingwired 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;
/nearmade 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;
/nickcompletion and/ignoreoffline targeting made discoverable; every/tparejection 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
/enderseerouted 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.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:QVeOROXV:i5k9GML7"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:QVeOROXV:i5k9GML7"
}
