uxmEssentialsСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (14)
alpha
uxmEssentials 0.10.1
0.10.125 окт. 2026 г.6Minecraft: 26.2folia, paper, purpur
Что нового
## 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.
alpha
uxmEssentials 0.10.0
0.10.013 окт. 2026 г.86Minecraft: 26.2folia, paper, purpur
Что нового
# 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:
```hocon
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.
alpha
uxmEssentials 0.9.0
0.9.01 окт. 2026 г.100Minecraft: 26.2folia, paper, purpur
Что нового
# 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`:
```hocon
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.
alpha
uxmEssentials 0.8.2
0.8.228 авг. 2026 г.243Minecraft: 26.2folia, paper, purpur
Что нового
# 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.
```hocon
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.
alpha
uxmEssentials 0.8.1
0.8.127 авг. 2026 г.11Minecraft: 26.2folia, paper, purpur
Что нового
# 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.
alpha
uxmEssentials 0.8.0
0.8.019 авг. 2026 г.50Minecraft: 26.2folia, paper, purpur
Что нового
# 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.
alpha
uxmEssentials 0.7.0
0.7.012 авг. 2026 г.61Minecraft: 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Что нового
# 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/permissions/reference/).
## 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/placeholders/reference/).
## 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.** Two contexts recorded which account connected from which address, on the same join, into two tables that could disagree, with one of them keeping the raw address. There is one capture and one table now, and `/alts`, `/ipalts`, the per-address account cap and the accounts a `/banip` covers all read it.
- **Stored items.** A damaged or hand-edited row could ask a codec for a two-billion-element array and take the server down instead of failing one read; counts are bounded now. A player who logged out with a shulker box open lost the edit and duplicated whatever they had dragged out, because the close handler never ran while they still counted as online; the quit writes the view back.
- **Command surface.** A name or alias claimed twice is resolved softly at runtime, first claim wins, the loser dropped with a warning in a log nobody reads. `/alts` got into a release exactly that way. A build guard now fails when the shipped surface collides with itself.
## Upgrading
Drop the new jars in and restart. Two things happen by themselves on the first start: the alt history moves into its new table, in batches and resumable, so an interrupted server picks it up on the next boot, and the old IP tokens are cleared, which means trusted devices ask for verification once more. Existing permission grants, configs and menus are untouched.
alpha
uxmEssentials 0.6.0
0.6.011 авг. 2026 г.11Minecraft: 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Что нового
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/developer/overview/
## 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
alpha
uxmEssentials 0.5.2
0.5.230 июл. 2026 г.46Minecraft: 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Что нового
**Full Changelog**: https://github.com/UXPLIMA/uxmEssentials/compare/v0.5.1...v0.5.2
alpha
uxmEssentials 0.5.0
0.5.027 июл. 2026 г.26Minecraft: 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Что нового
# 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.
alpha
uxmEssentials 0.4.0
0.4.03 июл. 2026 г.62Minecraft: 26.1.2, 26.2folia, paper, purpur
Что нового
# 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.
alpha
uxmEssentials 0.3.0
0.3.027 июн. 2026 г.35Minecraft: 26.1.2, 26.2folia, paper, purpur
Что нового
# 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.
alpha
uxmEssentials 0.2.0
0.2.021 июн. 2026 г.30Minecraft: 26.1.2, 26.2folia, paper, purpur
Что нового
# 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
alpha
uxmEssentials 0.1.0
0.1.010 июн. 2026 г.62Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur