Sueta

uxmEssentials

0.10.1

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 a

·Plugin
  1. 0.10.1latestuxmEssentials 0.10.1yesterday

    Upgrading from 0.10.0

    Replace the jar and restart. Nothing has to be edited by hand. - Your data stays where it is. The database keeps its tables under their current names, and the migrations that were already applied are recognised and not run again. - Your files are kept. A setting or a message line you changed is not touched. New settings and new message lines are added to your files. A message line you never changed is brought to its new wording. - The storage block has new names, type and pool-size, shared with the rest of the plugin family. A file that still writes backend and read-pool-size keeps working as it is. - A storage word that names no database stops a new install, so a network server cannot quietly start on a file of its own. A server that already runs on its SQLite file under such a word keeps doing so and says it in the console. - No command, permission node or public API was removed or renamed.

    Fixed

    - /lay, /bellyflop and /spin could leave a player invisible for good: after a pose started in spectator mode or under an invisibility potion, and after a reload or a restart during a pose. A pose now gives the body back on every exit, and after a crash on the next join. - /poses reveal <player> (uxmessentials.poses.reveal, operators by default, the console too) gives back a body an older version left invisible. - A player's name is filled into an operator's command, click action, kit action, vote reward, NPC command and placeholder currency only when an account could have that name. A server that turns off Paper's name check can let in a name with a space or a bracket, which would add an argument to a command or change a message. Such a line is now skipped and the console says so. - A chat message keeps the colour another plugin put on it. - A world's day and weather cycles are left alone when nothing locks them. - Floodgate is found even though it enables after this plugin.

    New

    - storage.table-prefix for a new install, storage.local-only for the one server of a network that keeps its own rows, and storage.copy-from-file to move a SQLite file into a network database on the first start. - Holograms are drawn for each viewer with packets, in their own language, and redrawn on /uxmess reload. A click reaches a hologram from 12 blocks by default. - Nametags, tab names and chat prefixes are drawn for each reader, with relational placeholders and ranks written as catalogue lines in the reader's language. - An NPC turns back to its placed facing when its viewer walks away. - %uxmessentials_player_language%, the language a player reads in. - A chat line that opens with <center> is centred, and an announcement can set centered = true. - /uxmess reload reads the custom menus again. - Admin commands answer in the operator's own language.

    Faster

    - The scoreboard and the tab list spread their work over the refresh interval and parse each line once. - An NPC turns in one packet per viewer, and only when its look changes. - PlaceholderAPI is asked only about text that holds a placeholder.
    6 downloads
  2. 0.10.0uxmEssentials 0.10.0last week

    uxmEssentials 0.10.0

    A server can now keep its players in its own language, and a staff member can set another player's language. Requires Paper 26.2 on Java 25, same as 0.9.0.

    Read this before you update

    `messages.default-locale` becomes the `language` block. config.conf now carries this block, the same one every UXPLIMA plugin reads:
    language {
      default = "en"
      follow-client = true
      force = ""
    }
    Your old messages.default-locale keeps working. When the update appends the block to your file, your old value still wins over the shipped "en". If you write a default in the new block and it differs from the old line, the console warns you: remove the old line then. A player's choice moves. /lang now keeps the choice on the player's own data under uxmlib:language. A choice saved under the old key is moved the first time the player is seen. Nobody has to choose again.

    Languages (#2)

    A server can keep its own language. Before, a player whose client read English read English, even on a server whose default was German. Now: - default is what a player reads when nothing else answers. - follow-client = false starts every player in the default. They may still choose another with /lang. - force = "de" puts everybody in one language, whatever they chose. /lang then says so instead of changing anything. One choice for every plugin of ours. A language chosen with /lang is read by every UXPLIMA plugin on the server, and a choice made in any of them is read here. uxmLang is not needed for this. With uxmLang installed, the choice also follows the player between servers. Set another player's language. - /lang set <player> <language> - /lang reset <player> Both work for a player who is offline: the choice is kept and applied when they next join. Both need uxmessentials.lang.others. Every new line is in all twelve catalogues.

    Under the hood

    - On uxmLib 0.163.0. - The order a language is picked in lived in four places and now lives in one.
    86 downloads
  3. 0.9.0uxmEssentials 0.9.03 weeks ago

    uxmEssentials 0.9.0

    A large release: the plugin starts on MySQL, MariaDB and PostgreSQL again, every menu now runs on the uxmLib menu engine with native Bedrock forms, the colours come from a theme file, and window titles keep the MiniMessage you write in them. Requires Paper 26.2 on Java 25, same as 0.8.2.

    Read this before you update

    Discord account linking is gone. /link and the linked-account tables are removed. The V85 migration drops both tables and the rows in them. The Discord bridge itself stays: chat, the audit channel and the rest work as before. Old message files and window titles. The vault, shulker box and disposal titles now ship without a colour tag. A messages file extracted by an older version keeps its <title> tag, and since titles are no longer flattened, that tag now colours them. Delete the tag from those lines if you want them plain. New settings are added to your files, not over them. A setting this release adds is appended to the end of your existing config.conf and module files as a commented block. Nothing you wrote is overwritten.

    Fixes

    MySQL, MariaDB and PostgreSQL start again. Three migrations could not run on a network database: a comment MySQL does not accept, a column named with a reserved word, and a column type PostgreSQL does not have. Every migration now runs on all three, and a first start on MariaDB no longer prints a wall of "ignored for PRIMARY key" warnings. Window titles keep their MiniMessage (#1). Every title used to be flattened to plain text, so a <lang:...> key showed as its raw name and a <font:...> was dropped. Titles are now drawn as written. Titles drawn with a resource pack line up. A title containing a translated key, a pack font or a keybind is never padded, because its width cannot be measured. A server that wants every window title on the left writes this in plugins/uxmTheme/theme.conf (shared by all our plugins) or plugins/uxmEssentials/theme.conf:
    menu-titles = left
    Chat and moderation - A muted player is kept out of public chat. - A sanction with no end reads as permanent, in the reader's language. - A long issuer name is cut to fit its column rather than losing the sanction. Commands - A bare command answers the console, and every usage line is built from the catalogue, with optional branches bracketed whole. - /mail send, /unignore and the ignore window reach a player who is offline. - Playtime is read for a player who has logged off, and the leaderboard prints to the console. - /bottom stands you in open space, and /up gives you a floor. - /lang offers every language that has a catalogue. - /clearchat tells the console it ran. - The join message no longer suggests a /sethome that is not registered. - A custom command names the player it could not find. - Every command is described in the reader's language, in all twelve catalogues. Economy and selling - The native ledger is published as a Vault economy, and Vault is bound once the server has loaded. - A sale takes the items before it pays for them, and sells only plain stacks. - The wallet events fire on every change of money. Worlds - World files are found where Paper 26.2 keeps them, and our generators are served to the default world. REST API - A missing resource answers 404 not-found with a plain reason. - A negative amount is refused as a bad request. - A sanction with a field the route does not read is refused. - An event about an offline player is still delivered.

    Menus

    Every menu now renders through the uxmLib menu engine. A Bedrock player gets a native Floodgate form for every window. A layout with fewer slots than things to draw is reported to the operator rather than cutting the list short quietly, and a broken placeholder costs its own token rather than the whole window.

    Theme

    The colours, the title glyph and the window title alignment come from a theme file. plugins/uxmTheme/theme.conf is shared by every UXPLIMA plugin on the server, and plugins/uxmEssentials/theme.conf overrides it for this plugin alone. /uxmess reload reads it again.

    Diagnostics

    /uxmess doctor reports the schema version the database is really on.
    100 downloads
  4. 0.8.2uxmEssentials 0.8.2Aug 28, 2026

    uxmEssentials 0.8.2

    A bug-fix release for two faults in 0.8.1 that could stop a server dead, plus the new Custom Commands module and a per-world void rescue. Requires Paper 26.2 on Java 25, same as 0.8.1.

    Fixes

    The PIN keypad no longer fights itself. On a server that requires a PIN, the create-a-PIN pad looped: the first entry went in fine, then the moment the pad asked for the PIN a second time it tore itself down and rebuilt faster than anyone could tap it, and the entered digits were wiped on every rebuild. Setting a PIN was impossible, and since the player is frozen until they have one, so was joining. Two things were wrong. Showing a window over an open one makes the server close the open one first, so every pad the plugin put up while another was on screen arrived as a keypad close, and the listener that guards against a frozen player escaping read that as an escape and reopened. The guard meant to prevent exactly this was released before the open it guarded had actually landed, because opening a menu is asynchronous. The plugin now counts the opens it has asked for and not yet seen appear, so a close caused by its own open is told apart from a player walking away. The enrolment flow also no longer puts up a second pad at all: the submit button already clears the entry and redraws in place, so both entries happen at one window. A frozen player who closes the keypad still gets it straight back, exactly once. A custom command no longer stops the plugin from enabling. A definition in commands/custom/ is keyed in the command catalog under a namespace, custom:<id>, and the catalog's identifier type refused the colon, so a single definition file was enough to fail onEnable outright. Namespaced identifiers are accepted now, and the generated commands.conf quotes such a key, since HOCON would otherwise read the colon as the separator between a key and its value.

    Custom Commands

    The 36th module, and a replacement for MyCommand. An operator declares a command in a file under commands/custom/ and the plugin registers it as a real command: typed arguments with tab completion, a usage line, and a place in commands.conf beside the built-in ones.
    command {
      name = "welcome"
      aliases = ["hello"]
      permission = "uxmessentials.customcommand.welcome"
      console = true
      cooldown = "5s"
      cost = 0
    }
    
    arguments = [
      { name = "target", type = online-player }
    ]
    
    actions = [
      "message:<green>Welcome sent."
      "delay:1s"
      "broadcast:<gold>%player% <yellow>welcomes <gold>%arg_target%"
    ]
    - The actions are the menu engine's own. Everything a menu button can do, a custom command can do, plus delay:<duration> between steps. Nothing new to learn if you have written a menu. - Real arguments. string, rest, int, double, bool, material, world, online-player, player, with min and max on the numeric ones, so an out-of-range value is a syntax error before a single action runs. %arg_<name>% and %args% expand inside the actions. - Real gates, in a fixed order: sender kind, permission, chain depth, requirements, cooldown, warmup, cost. The cost is charged after the warmup completes, so a warmup a player walks out of costs nothing. - A one-line alias instead of an action list: alias = "/gamemode creative" passes everything typed after your command straight through. - Written in game if you prefer. /customcmd create <id> asks for the command word, the aliases, the permission, then each argument and each action, and shows you the finished file before it writes anything. /customcmd list, info, test, reload, run and delete cover the rest. - Privileged steps are opt-in and audited. console: and command-as-op: are gated in the module's config, and a chain using a disabled one skips that step and says so rather than failing silently. A bad definition never takes the others down: a file that fails to parse is skipped with a console warning naming it, and everything else still loads.

    Worlds: void rescue

    A player who falls out of a world no longer falls forever. Each world can name an ordered rescue chain (spawn, warp:<name>, at <world> <x> <y> <z>) and the height below which it fires, and the first step that resolves wins. It uses the involuntary-move path, so it leaves no /back point and plays no arrival effects.

    Also

    - The shipped teleport config now documents the spawn { first-join / every-join / respawn / respawn-chain / exempt-permission } block that 0.8.1 introduced. - The build follows uxmLib to its renamed repository and its 0.5.0 line.

    Downloads

    | File | Where it goes | |---|---| | uxmEssentials-0.8.2.jar | Paper plugins/ (required) | | uxmEssentials-velocity-0.8.2.jar | Velocity plugins/ | | uxmEssentials-redis-0.8.2.jar | Paper plugins/ on each backend | | uxmEssentials-discord-0.8.2.jar | Paper plugins/ | | uxmEssentials-rest-0.8.2.jar | Paper plugins/ | Upgrading from 0.8.1 is a drop-in: settings new in this version are appended to your existing config files under a header naming the version, and nothing you have edited is touched.
    243 downloads
  5. 0.8.1uxmEssentials 0.8.1Aug 27, 2026

    uxmEssentials 0.8.1

    A maintenance release that finishes several surfaces 0.8.0 left half-built: the sidebar and tab list are rebuilt around per-viewer lines, /uxmess reload no longer runs on the tick thread, almost every administration command now works from the console, the doctor can repair what it finds, and spawn placement on join and on death is configurable in one block. Requires Paper 26.2 on Java 25, same as 0.8.0.

    The sidebar and tab list, rebuilt

    The scoreboard renderer was rewritten around one idea: a line belongs to a viewer, not to the board. - Write more lines than fit. Up to 128 candidate lines may be authored. Conditions and hide-when-empty are evaluated per player, and the first 15 that survive are what that player sees. A line that disappears no longer shifts the ones below it into the wrong identity. - Typed lines. A line can now be an object with a stable id, so the renderer updates or moves that exact row instead of tearing down the rows around it. Plain strings still work and get an automatic id. - Right-aligned values. "<gray>Balance||<gold>{coins}" renders the right side through animations, built-in tokens, PlaceholderAPI and MiniMessage, and sends it as that row's fixed number format. Typed lines can say the same thing with number-format = { type = "fixed", text = "..." }. - It yields. When another plugin displays its own sidebar objective, uxmEssentials steps aside; when that objective is cleared, its frame comes back. No more two plugins fighting over one slot. - Tab list `exact` mode. With exact = true all 80 cells are materialized, including the ones you did not author, so a filler grid stays a grid. It requires suppress-real-players = true and refuses to enable itself otherwise, because a native roster and a full synthetic grid cannot both decide the shape.

    /uxmess reload behaves like an operator tool

    - It reads and validates files off the tick thread, so a reload no longer stalls the server while it parses. - /uxmess reload <module> takes a module name with completion, instead of reloading everything. - A second reload while one is running is refused rather than queued. - Each step that fails keeps its last known good values, and the report says which ones failed and how long the run took. - Changes that are structural (a module turned on or off) are reported as needing a restart instead of half-applied to a running wiring.

    Administration from the console

    Roughly a hundred command classes were reworked so that a server owner without a player body can still run them. Anything that used to answer "players only" now either takes an explicit target or an explicit place: - Placement commands take coordinates: /setjail <name> at <world> <x> <y> <z> [yaw] [pitch], and the same shape for spawns, warps, worlds, holograms and NPCs. - Player-affecting commands take the player: /heal, /feed, /god, /fly, /speed, /burn, /ice, /air, /clearinventory, /experience, /gamemode, /kit, /playtime, /ping and the rest. - The console is a real audience now: messages addressed to the actor reach it, and actions it takes are attributed to the console rather than to nobody. Economy, holograms, NPCs, worlds, regions, kits, warps, player warps, jails and the item utilities are all covered.

    The doctor can repair

    /uxmess doctor gained a relational integrity probe over the whole database, and a repair for what it finds. /uxmess doctor repair is a preview that changes nothing; /uxmess doctor repair confirm is the one that writes, behind its own uxmessentials.admin.doctor.repair node. Several child tables carry no database foreign key on purpose, because the same migrations have to run on SQLite, MySQL/MariaDB and PostgreSQL. Repositories delete children transactionally, but an interrupted import or a hand-edited database can still leave ownerless rows behind. The check finds them without loading a single domain object. The repair deletes only unambiguous orphans and clears nullable links whose target is gone; it runs in a transaction and rolls back on failure. Parent records are never deleted: a reference to a missing world may become valid again once that world is restored, so the doctor reports it and keeps it.

    Spawn on join and on death, in one block

    Join placement and respawn placement used to be two unrelated toggles in two places. They are now one policy, and both share the exact chain /spawn walks: a mirror redirect, then the world's own /setspawn, then the main spawn, then the vanilla world spawn.
    spawn {
      first-join = true
      every-join = false
      respawn = true
      respawn-chain = ["bed", "anchor", "spawn"]
      exempt-permission = "uxmessentials.spawn.join.exempt"
    }
    - One listener owns every automatic join move, so two independently configured handlers can no longer race each other. First-join RTP still wins when it is on. - Automatic moves are involuntary: they do not write a /back point, and they play no arrival title, sound or effect. Logging in should not overwrite the last place you chose to be. - respawn.chain.<world> still works and still wins for that world; an explicitly empty list opts a world back into vanilla respawning. - The warp:<name> step resolves from the warps module's warmed snapshot, and the spawn directory is cached, so a death never waits on the database. - A permission exempts a player from automatic join movement entirely.

    One commands.conf, and aliases per language

    The command catalog moves from commands/commands.conf to commands.conf at the root of the data folder. If your install has the old single file, it is moved on first load. An install that deliberately split the catalog across several files keeps working as a deprecated fallback, because losing an operator's edits to force a layout is not a trade worth making. Commands can also carry aliases that only exist for a given language:
    commands {
      home {
        localized-aliases {
          tr = ["ev"]
          de = ["zuhause"]
        }
      }
    }
    Every alias is registered globally, so dispatch, console use and Geyser translation stay ordinary Brigadier paths. What changes is visibility: when Paper builds a player's command list, aliases belonging only to other languages are hidden from it. Canonical names and ordinary aliases are never hidden.

    Fixes

    - PIN enrolment could be escaped. The keypad close listener only recognised the verification keypad, not the one used to create a PIN. Both are covered now. - PIN length refusals said nothing useful. "Too short" and "too long" now render the actual minimum and maximum from your policy. - A managed portal link could bypass the server's own policy. A nether or end portal is now cancelled when allow-nether or allow-end is off, before any configured link is resolved.

    Upgrading

    Drop the new jars in and restart. Configs, permission grants and menus are untouched, and commands/commands.conf moves itself. Two defaults are worth a look before you restart a live server: - `spawn.first-join` is on. A genuinely new player is placed at the resolved spawn. If you already handle first join with another plugin, set it to false. - `spawn.respawn` is on, with the chain bed, anchor, spawn. A valid bed or respawn anchor is still preserved; what changes is that a player without one lands on your /setspawn instead of the vanilla world spawn. Set spawn.respawn = false for the old opt-in behaviour, or give a world an empty respawn.chain.<world> list to leave that one world vanilla.
    11 downloads
  6. 0.8.0uxmEssentials 0.8.0Aug 19, 2026

    uxmEssentials 0.8.0

    0.8.0 is the release where the plugin stops speaking only English and starts looking like one product. Twelve languages ship in the box, every menu and every message is drawn from one design system, players can wear a skin of their choosing, and the base moves to Paper 26.2. Requires Paper 26.2 on Java 25. Paper 26.1 is no longer supported: see Upgrading.

    Twelve languages, in the box

    All 2837 player-facing lines now exist in twelve languages: English, Turkish, German, Russian, Spanish, Brazilian Portuguese, French, Polish, Ukrainian, Simplified Chinese, Japanese and Korean. Every one of them is written into plugins/uxmEssentials/messages/ on first run and is yours to edit. A player picks their own with /lang, a client that reports a locale we ship gets it without asking, and default-locale in config.conf decides the rest. The typography moved out of the files. The small capitals the interface is drawn in used to be typed into the catalog itself, which made a line hard to read for a translator and impossible to write in a language that has no small capitals at all. They are applied when a language loads now: the file is ordinary text, and a meta.small-caps switch at the top of each catalog says whether that language wants them. Text a player has to be able to type back is wrapped in <plain>, so a command, a permission node or a state word keeps its own letters wherever it appears. English stays the key set every other catalog is measured against. The build fails if one of them drifts, and a key a translation has not filled in reads in English rather than showing a player a raw key name.

    Skins: the thirty-fifth module

    /skin <player> wears the skin of any account, /skin url <link> takes an image you host, /skin clear goes back to your own, /skin update pulls the current one again, and /skin info says where the skin you are wearing came from. The choice is stored, so it survives a rejoin and a restart, and it is applied as the player logs in rather than a second later. - Signed properly. Uploads go through MineSkin, so a url or a server-side file becomes a signed texture the client accepts. - Bedrock included. A Floodgate player keeps the skin Geyser knows them by, without configuration. - Cracked servers included. Name lookups and texture fetches go through the same seams the rest of the plugin uses offline, so an offline-mode server is not a second-class case. - You decide what is allowed. Each source (a player name, a url, a file) has its own switch, urls are limited to the image hosts you list, a blocklist refuses individual skins, and a cooldown limits how often a player may change. - Staff verbs. Set or clear somebody else's skin, drop a stored choice, and purge a cached lookup. The module ships off, like the other nine that touch something a server may already have covered.

    One design system for every screen

    The interface had grown three looks at once: one palette in chat, several lore shapes across the module GUIs, and menu titles sitting wherever Minecraft happened to left-align them. This release lands one canon across all of them. - One palette. Colour and emphasis resolve from a single set of semantic roles, and every chat line opens with its module name in small capitals followed by a dim separator, so you know what is talking before you read the sentence. - One lore skeleton. Every menu item is written the same way: a title, a breadcrumb, a description, the labelled facts, then what a click will do. - Titles that sit still. A window title is centred against the client's real glyph widths rather than guessed at, and a tile's own title lives inside its tooltip instead of fighting the window's. - Sound the engine plays. A menu opens with a page turn; an accepted click, a page turn and a refusal each answer differently, and a filler pane stays silent. A new menu cannot ship in silence: a build guard says so.

    Poses, fixed

    Sit, lay, belly-flop, spin and crawl each got the fix they needed: a pose ends when you dismount the seat, a crawl is held with a real pose and a client-only ceiling instead of a block other players could see, and lay, belly-flop and spin render on a stand-in copy that stays off the bed even at the bottom of the world.

    Smaller things

    - `/glow` takes a colour and a target. /glow still toggles the plain outline, /glow red picks one of the sixteen vanilla colours, and a trailing name does it to somebody else. A vanished staff member can still glow. - Argument shapes lined up. /nightvision gained the [player] the other toggles have, and /ice reads <seconds> [player] like /air and /burn. - CraftEngine items as icons. CraftEngine joins ItemsAdder, Oraxen, Nexo, MMOItems and ExecutableItems, so craftengine:default:topaz renders anywhere a material is asked for. A server without the plugin loads none of its classes.

    Upgrading

    Paper 26.2 is required. Paper 26.2 moved Adventure to its 5.x line, and 4 and 5 are not binary compatible, so a single jar cannot serve both server versions. 0.8.0 runs on 26.2 and above; on 26.1 keep running 0.7.0. Otherwise: drop the new jars in and restart. The twelve catalogs appear next to your existing messages_en.conf, which keeps whatever you edited into it, key by key. Configs, permission grants and menus are untouched.
    50 downloads
  7. 0.7.0uxmEssentials 0.7.0Aug 12, 2026

    uxmEssentials 0.7.0

    0.7.0 is about the two surfaces every server touches and nobody ever ships as a feature: what a player is allowed to do, and what a HUD is able to say about them. Both are now written down once inside the plugin, checked against the running code on every build, and the published reference is generated from that same source. The developer API finishes its sweep at the same time. Requires Paper 26.1.2+ on Java 25.

    Permissions: one catalogue, 508 nodes

    A permission node used to be written in three places that nothing kept together: the literal the code checks, the entry in paper-plugin.yml, and the row on the reference page. The yml had drifted exactly the way that arrangement invites: 39 nodes the code reads were never declared, 2 were declared under names nothing reads, 4 were dead. There is one catalogue now, in code, carrying every node with its description, its default and its shape (fixed, quota, tier or label). Enable registers what it declares and disable takes back exactly what it registered, so the yml permissions block is gone and a second writing site cannot grow back. A build guard walks it in both directions: every node the sources check has to be in the catalogue, and every catalogued node has to be reached from production. - A node per capability. /itemedit gated nine distinct edits behind one editor node, /npc and /hologram gated everything from creating to merely listing behind their base node, and /bank gated depositing and withdrawing alike, so delegation was all or nothing. Each of those carries capability nodes now (create, delete, move, appearance, action, visibility, the read-only verbs, the settings), and so do /loan take, the five /announce verbs and /pwarp edit. Every new node defaults to true and the base node is still required, so an existing grant behaves exactly as it did and you narrow by negating the one node you mean. - Acting on somebody else was the other coarse edge: twenty playerstate commands shared a single others node, so trusting a moderator with /heal <player> also trusted them with /gamemode <player>. Each reads its own <verb>.others now, and the shared node still grants them all. - /uxmess permissions [area] [page] lists the catalogue in game and /uxmess permissions export writes permissions.md into the plugin folder. - uxmessentials.msg.color, described in the docs and read by nothing, now decides whether a sender's tags render. Until this release any player could put a click tag into a private message and have it run. Full list: [docs.uxplima.com](https://docs.uxplima.com/minecraft/uxmessentials/permissi…

    Placeholders: 338 keys, and every module answering

    The same treatment, with the same result: the published list was written from memory and had fallen behind. Every key is declared once in a catalogue that a build guard resolves against the resolver in both directions, the reference page is generated from it, and the surface went from 170 keys to 338. - The player themselves. Ping, op, crouching and sprinting, health, food, armour, absorption, air and burning, gamemode, flight and speeds, experience, first join, last seen, playtime in four units, world time and weather, exact and block coordinates, biome, block below, light level, an eight-point facing, display name, uuid, locale, bed and compass, and the whole vanilla statistic family as stat_<statistic>. - The item in hand. hand_* and offhand_* (type, name, amount, damage, durability, enchantments, lore) plus itemcount_<material>. Item text is flattened to plain text before it leaves the plugin, so a display name or a lore line can never reach a MiniMessage parser as markup. - Somebody else. p_<name>_<key> answers any key on the page about another player, through the same lookup an offline-mode server resolves names with. - A pair of players. rel_uxmessentials_cansee, _ignoring, _ignored_by, _trading, _same_world and _distance, for the per-viewer formats PlaceholderAPI routes under its relational prefix. - Waits and formatting. cooldown_<label>, cooldown_<label>_formatted and cooldown_active_<label> read any cooldown label straight from the shared gate, and reading never stamps. The formatting helpers carry their input in the key: group thousands, shorten a big number to 1.23M, spell a count of seconds, draw a bar out of a value another expansion produced. - The eleven modules that answered nothing. survival reads each mechanic twice, as the player's switch and as whether the server runs it at all; itemworld reads the held item's bindings; npc the population and what is left of a quota; regions the region under the player, its roster and how many cover them; security only the live challenge, never what an account has enrolled, because that answer is a database row and a HUD refresh must not become a query. scoreboard, tablist and nametags each name the format they are actually drawing you from, recorded as they paint rather than re-selected. villagers counts what is following, servertweaks reports the brand clients are told, commandcontrol answers whether a command would be allowed where you stand, invrollback reports the last capture, and module_<id> says whether a module is on at all. - And the gaps in the older families: the active jail sentence (name, reason, issuer, remaining, and whether it burns down on online time), where a player stands on the rank ladder and what the next rung charges, and any loaded world's time and weather rather than only the one you are in. - /uxmess placeholders [area] [page] lists it in game and /uxmess placeholders export writes placeholders.md into the plugin folder. Full list: [docs.uxplima.com](https://docs.uxplima.com/minecraft/uxmessentials/placehol…

    The developer API now covers the whole plugin

    0.6.0 published fourteen contexts to read and twelve to drive. 0.7.0 finishes it: ranks, trade, Discord links, regions, inventory snapshots, security, NPCs, holograms, staff, powertools and the command gate join the read side; vaults, player warps, NPCs, holograms, snapshot restore and the sidebar join the write side. Twenty-seven read surfaces and twenty-three write surfaces, with the REST add-on carrying every one of them. What stays read-only is deliberate, and the docs say why in each case: staff mode swaps a real inventory for a loadout and only the module can be trusted to put the real one back; security reports which factors an account has and never any factor material; regions is an editor sitting on WorldGuard's own API, which already fires its own events. An audit of every published method against the route sources turned up four things Java could do and HTTP could not: publishing a punishment silently, asking whether region support is installed at all, asking whether one player can see another through vanish, and asking whether a player can afford an amount rather than subtracting two numbers yourself. All four are routes now, and a build guard fails when a published verb is named nowhere in the routes.

    Fixes

    - Vaults. An owner and a staff member auditing them could hold the same vault open at once, and whichever window closed last wrote its own snapshot back, restoring what the other had already taken out. A vault is held in one window at a time now. - Security. An authenticator code worked for the whole 30 seconds of its step however often it was presented, so anyone who read the digits could walk in behind their owner; each code is single-use now. The stored IP token was a plain SHA-256 of the address, which is reversible in practice for IPv4, so the promise that no raw address is kept did not hold: it is an HMAC keyed by the server's own secret now. The key file is created with its permissions rather than chmodded a moment later, and the shipped PIN minimum is six digits instead of four. - Alt history.
    61 downloads
  8. 0.6.0uxmEssentials 0.6.0Aug 11, 2026
    This release is about opening uxmEssentials up. Everything it does is now reachable from other software: from a plugin through a published API you compile against, and from anything else at all through a REST add-on.

    The developer API

    com.uxplima.uxmessentials:uxmessentials-bukkit-api is a real artifact now, published from this repository's maven branch, with javadocs and a versioned coordinate. UxmEssentialsApi is the front door, and whenReady runs your registration whether uxmEssentials loaded before your plugin or after it. - Events. Ninety-odd Bukkit events covering everything the plugin does, plus nine you can cancel before they happen: home create, delete and relocate, teleport, warp create and delete, player warp create and hard delete, and kit claim. - Query API. Ask what is true right now across fourteen contexts: homes, balances, warps, player warps, kits, vaults, sanctions and punishment history, playtime, presence, vanish, teleport requests, worlds, votes, mail and ignores. - Action API. Change it across twelve contexts: deposits, withdrawals and transfers, homes and warps, kit grants and claims, bans, mutes, kicks, warns and jails, god, flight, game mode, speed, heal and feed, teleports, world load and unload, votes, messages and mail. - Menu API. Teach the GUI engine your own actions, requirements, placeholders, list sources and icons. Two guards hold the compatibility promise rather than leaving it to memory. The whole published surface, every type and signature, is written down and compared on each build, so a removal shows up as a deleted line in review. A sample consumer plugin is compiled in CI against the artifacts each commit publishes, so a broken coordinate or a POM that forgot a dependency fails on the commit that broke it. Reference: https://docs.uxplima.com/minecraft/uxmessentials/develope…

    The REST add-on

    uxmEssentials-rest is a new companion jar that puts the same reach on a socket, for the programs that are not plugins: a web panel, a Discord bot, a store webhook, a script. - Every read and write above, as GET and POST under /api/v1. - A WebSocket event stream at /api/v1/events carrying all seventy-four things uxmEssentials announces, so nothing has to be found out by polling. Subscribe by name, by context (economy.*), or to everything. - Tokens are issued in game with /uxmapi token create <label>, shown once, stored as a hash, and scoped: read, write, events. - It ships dormant. On first start it writes its config, says in the log where the switch is, and opens nothing. The default bind address is loopback. It is built on the published API and nothing else, which is the rule that keeps the two from drifting apart.

    Also in this release

    - Offline mode is properly supported. A player name now resolves to an account through one shared lookup that works on a cracked server, and skins resolve the same way. A vote credited to a name with different capitalisation reaches the right account. - Nine modules now ship switched off on a fresh install, so a new server starts with what it asked for. Existing servers are untouched. - The menu engine finished its sweep. The kit and warp selectors and managers, both trade windows, the invsee and endersee mirrors, the player and currency pickers, the vote site board and the snapshot preview are all spec-driven now, which means all of them can be re-skinned without touching code.

    Upgrading

    Drop the new jars in and restart. There are no config or database migrations to run by hand.

    Downloads

    - uxmEssentials-0.6.0.jar the plugin, and the only file you need - uxmEssentials-velocity-0.6.0-all.jar the Velocity proxy broker - uxmEssentials-redis-0.6.0.jar the Redis transport, for a network without a proxy - uxmEssentials-discord-0.6.0.jar the Discord bridge - uxmEssentials-rest-0.6.0.jar the new HTTP and WebSocket API
    11 downloads
  9. 0.5.2uxmEssentials 0.5.2Jul 30, 2026
    46 downloads
  10. 0.5.0uxmEssentials 0.5.0Jul 27, 2026

    uxmEssentials 0.5.0

    The biggest release yet. 0.5.0 adds ten new modules, rebuilds Player Warps from the ground up, turns the economy into a true multi-currency system that can sit on any backend, and widens land-claim support to nine providers. It brings the plugin to 34 modules. Requires Paper 26.1.2+ on Java 25.

    Trade cross-server player trading

    A secure, two-sided trade window that also works across a network. - Two-player window with live offers each side stakes items and money, sees the other's offer update in real time, and both must confirm; any change resets the confirmation, so nobody can swap the deal at the last second. - Money across currencies with an item blacklist, so you decide what can and cannot be traded. - Trade requests with a distance limit, a cooldown, and a full audit log of who traded what. - Cross-server trades between backends that share a database, held in escrow and committed with a two-phase commit, so items and money can never be lost or duplicated mid-hop.

    Vanish a dedicated vanish module

    Vanish is now its own module that owns the whole vanish state. - Layered see and use levels higher staff can see lower staff, lower staff cannot, all configurable, with vanish-others and a /vanish list. - Silent interactions, buffs and protections open chests and shulkers without a sound, keep night-vision and flight, and stay untargeted by mobs. - Fake join and quit messages, an action-bar indicator, and a join-vanished option so staff can log in unseen. - Cross-server synchronisation a vanished staff member stays vanished across the network.

    Ranks rankup, prestige and autorank

    A full progression ladder. - A configurable rank ladder with its own player-rank store. - Rank up through requirements, a cost, and configurable command-actions (or LuckPerms groups and permission nodes). - Prestige resets the ladder with its own rewards and actions. - Autorank auto-promotes eligible players on a schedule. - A ladder menu and rank placeholders.

    Survival per-mechanic survival tweaks

    A grab-bag of survival mechanics, each independently toggled and gated behind its own per-player permission. - Tree-feller and veinminer (both player-toggleable by command). - Fast leaf decay, farmland protection and a farm assist that replants for you. - Anvil unlocker, one-player sleep and head drops. - Auto pickup, smelt, sell and tool with a cascade of auto-drops. - A settings menu and a permission node for every mechanic.

    Security server-side account security

    Account protection with no login/auth system attached. - Two-factor enrollment with a PIN or TOTP. - Join freeze and verification with a PIN keypad. - Op-command protection requires re-authentication before protected commands run. - Alt and client guard same-IP alt detection and a client-brand guard.

    Command Control command whitelisting and hiding

    Decide exactly which commands each group can see and run. - A per-group whitelist and blacklist. - Tab-completion filtering and plugin-command hiding. - Namespace-bypass blocking, with Geyser support.

    Villagers villager control

    Full control over villager trading and behaviour. - Infinite trading, a restock timer and trade toggles. - A trade manager GUI and click-to-trade. - Villager protection and villager-in-a-bucket. - Follow and leashing.

    Inventory Rollback death and logout snapshots

    Never lose a player's inventory to a bug or a crash. - Snapshots on death and logout. - A `/invrestore` GUI to browse and restore past snapshots, with a retention sweep.

    Regions a WorldGuard region GUI

    Manage WorldGuard regions from a menu, behind a soft-dependency (inert when WorldGuard is absent). - A region list GUI. - Region creation and a flag-editor GUI. - Member and owner management with region priority.

    Server Tweaks small infrastructure toggles

    A handful of opt-in server tweaks. - A custom F3 server brand and console spam filtering. - No-chat-reports and signed-velocity handling.

    Player Warps, rebuilt

    Player warps were rebuilt from scratch onto a clean, secure aggregate. - A surrogate-id model with proper value objects, so warps can be renamed freely and the core layer stays clean. - Passwords hashed with PBKDF2, never stored in plaintext. - A full ordered access gate whitelist, bans, members and password, enforced in order. - Economy entry fees charged on visit and banked to the owner. - A paged browse menu plus view, rating, management, members, whitelist, bans, categories and icon menus. - Rating and favouriting, with a reward for players who rate. - Rent and sponsorship rent with suspend and archive, sponsorship with pinned browse slots. - Cross-server visits teleport straight to a warp on another backend. - Legacy migration plus importers for AxPlayerWarps, Athelion and Olzie.

    Multi-currency economy, on any backend

    The economy became a routing layer over pluggable currency backends. - A currency backend SPI each currency names the backend that holds it. - The native ledger is now just one backend among many. - Built-in backends for Vault, experience, PlayerPoints, CoinsEngine, zEssentials and a placeholder-driven backend. - A routing provider sends every balance, pay and charge to the right backend. - Foreign-backed currencies correctly disable the exchange, banks and loans that only the native ledger can guarantee.

    Claims, expanded

    Land-claim integration grew from trust checks into full ownership awareness across nine providers. - Ownership lookups claims answer ownership, not just trust, and read the real owner across every provider. - Every provider consulted, not just the first one found. - Owner-only placement and claim-ban enforcement on access. - New providers WorldGuard, Towny, BentoBox, Residence, PlotSquared and SuperiorSkyblock (alongside the existing Lands, GriefPrevention and uxmClaims). - Claim-deletion events for Lands and GriefPrevention, and a WorldGuard set-pwarp flag.

    Menu engine additions

    The data-driven menu engine gained server-side paging and input. - Paged list sources that query a page at a time instead of loading everything. - Per-viewer page, sort, filter and search state. - Text input and confirmation prompts driven straight from a menu spec, backed by a native dialog.

    Chat and communication

    - A configurable public chat format (LuckPerms prefix/suffix, MiniMessage and PlaceholderAPI, with legacy prefixes rendered). - Death messages per cause, with a placeholder that exposes the killer's weapon. - Per-rank join messages, a first-join welcome and a join MOTD.

    Moderation

    - Staff punishment analytics. - Punishment templates and Discord notifications.

    Item tools

    - An `/itemedit` command to rename items and edit lore, enchantments, flags, attributes and durability. - Open shulker boxes straight from your inventory.

    Fixes

    - The recipient max-balance is now clamped on player transfers. - Placeholder-backed balances resolve on the correct thread, defaulting to decimal. - Cross-server trade escrow now commits atomically and closes its window correctly. - Security alt lookup moved off the /alts literal to resolve a command collision (now /ipalts). - Login lockout is durable across reconnects and players are frozen synchronously on join. - Public chat expands PlaceholderAPI, renders legacy prefixes and binds the {cause} token. - A lost warp-fee accrual is compensated and the owner's cut is clamped. - Legacy warp names are sanitised to the new naming rules on migration. - discord-link ships a per-module config for its enable flag and link-code TTL.
    26 downloads
  11. 0.4.0uxmEssentials 0.4.0Jul 3, 2026

    uxmEssentials 0.4.0

    A huge release. 0.4.0 turns uxmEssentials into a full GUI platform, rebuilds RTP from the ground up, adds a new Poses module, and hardens the whole plugin against faults. Requires Paper 26.1.2+ on Java 25. ---

    Custom Menu Engine data-driven GUIs

    A complete, config-driven menu system: build any GUI from HOCON, no code required. - Click actions send messages, run commands, give money/items, move/teleport players, play sounds, open other menus, edit player-data each with per-action delay, chance and deny modifiers, and generic id:value action tokens. - Requirements & conditions permissions, money, placeholders, items, and numeric / spatial / string / integration checks. Gate a whole menu (view-level) or a single click, with **deny routing, inversion, optional, stop-at-success, and else / nested-else** fallback chains. - Placeholders a full PlaceholderAPI bridge, plus player-data, math, time, inventory and statistic placeholders, global and per-menu operator-defined placeholders, and an %argument% / executor context for menus opened for another player. - Item rendering native rich meta and data-components, skull & equipment icons, and icon providers for ItemsAdder, Oraxen, Nexo, MMOItems and HeadDatabase; lore append modes; serialized / water-bottle / light item sources. - Layouts matrix layouts, fill items, reusable item patterns (local & global) with variable substitution, non-chest inventory types, chest auto-sizing, timed refresh, and 90-slot bottom-inventory menus. - Ready-made sources online players, worlds, LuckPerms groups, and read-only inventory / ender-chest viewers. - Open commands give any menu its own command with typed, autocompleting arguments, greedy args, open-for-another-player, and an open-requirement gate + open-actions. - Openers & history opener items (give-on-join, swap-offhand) and a back-stack menu history; /menu last reopens your last menu. - Bedrock Floodgate players get native forms: Simple / Modal / Custom forms, paged buttons, icons and lore, and per-menu form overrides. - Anti-dupe & anti-spam rendered items are marked and escaped copies stripped; a click cooldown; drop / double-click support and item-drag slots. - Developer API cancellable MenuOpenEvent / MenuClickEvent, a public MenuApi registration facade + item builder, and runtime IconProvider registration. - Importers one-shot converters for DeluxeMenus, zMenu, OGUI and GUIPlus. - Admin tooling /menu execute, dump, meta, and per-target reload.

    In-game menu editor

    Build and edit every custom menu from inside the game no config files. - /menu editor browser: create, duplicate, rename, delete. - A visual slot grid: drag items straight from your inventory onto slots (it copies, it never eats your items), "stamp" with the cursor, or shift-click to append to the next free slot. - A full item editor (material, name, lore, amount, glow, flags, type, slots) and **click-action / requirement builders** driven by the live plugin, so you can only pick things that exist. - Menu-wide settings (title, size, inventory type, open command, open/close actions, refresh…). - Item capture from your hand + /menu captureitem, an edit lock so two people can't clobber the same menu, and a live preview of your unsaved work. - Every save is validated and hot-reloaded a typo is caught before it's written.

    RTP, rebuilt

    The old /rtp was replaced with an async, leak-free, Folia-safe engine. - Never loads a chunk on the server thread (build-enforced) no more TPS drops or memory leaks. - A pre-warmed, disk-persisted safe-location pool serves /rtp instantly and survives restarts. - A bounded, tick-sliced safe-search with per-search attempt / chunk / time budgets. - An arrival grace window (Resistance + Slow-Falling + no fall damage) and **charge-after- success** a player is never billed or put on cooldown for a failed search. - Biome-targeted /rtp biome <biome> with a passive rare-biome hotspot map. - /rtp <world>, /rtp <player> (staff), an RTP world-picker GUI (now the default for /rtp), respawn & first-join RTP, and cooldown / radius permission tiers. - Respects land claims and WorldGuard regions.

    New module: Poses

    Sitting and poses (the 24th module). - /sit (including on stairs & slabs), sit on other players, /lay, /bellyflop, /spin. - Respects land claims and WorldGuard flags; a settings menu and a cooldown tier.

    Reliability

    Fault isolation so one broken module or event can never take the server down. - Per-module load, teardown and command-registration faults are isolated. - An unexpected command error becomes a friendly localized message instead of a stack trace. - Self-rescheduling tick loops survive a throwing tick. - Orphan-prone async I/O paths are bounded and guarded. - The warp visitor-counter write moved off the region thread.

    Fixes

    - The empty-slot placeholder in the menu editor no longer renders as a stray glyph box.
    62 downloads
  12. 0.3.0uxmEssentials 0.3.0Jun 27, 2026

    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.
    35 downloads
  13. 0.2.0uxmEssentials 0.2.0Jun 21, 2026

    uxmEssentials 0.2.0

    The largest release yet 5 new modules, a config-driven management GUI for every feature, a complete UI restyle, and a deep PlaceholderAPI integration. Now built on Paper 26.1.2 / Java 25.

    New modules

    Worlds a full multi-world manager - 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 NPCs packet-based fake-player & entity NPCs (no real entities, our own packet layer) - 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 Staff Mode a dedicated staff context - 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 Nametags above-head nametags via display entities - Hides the vanilla name, respects vanish, separate view-range vs cull distance, packet-rendered Tablist split out of Scoreboard into its own module - 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
    30 downloads
  14. 0.1.0uxmEssentials 0.1.0Jun 10, 2026
    62 downloads

Similar projects

Plugin →