3.0.0 rebuilt the entire in-game menu on Minecraft's native Dialog system, which only exists
starting with Paper 1.21.7. That's a hard floor: it made the plugin structurally unable to run
on anything from 1.20 through 1.21.6, which is a lot of still-common server versions. 4.0.0
reverses that call: the menu is now a modern chest-inventory GUI again (fr.mathildeuh.worldmanager.guis),
built from scratch — not a revert of the old pre-3.0.0 chest GUI code, which is gone for good —
with the same screens (create / edit / load / per-world options / game rules) redesigned around
colored borders, representative icons per world type/action, and a real text-entry mechanism
(ChatInput — closes the menu and captures the next chat message, cancel aborts) for the one
thing chest GUIs have always struggled with: typing a name, seed, or generator without leaving
the menu.
Supported versions: Paper 1.20.1 → 26.2. Compiled against the 1.20.1 API (the floor, not the ceiling — Paper's Bukkit-facing API is backward-additive, so a plugin built against an old API version keeps working on newer servers) and boot-tested end to end against a real Paper 1.20.1 server with zero exceptions.
Spigot/CraftBukkit are still not supported — that split happened in 3.0.0 for unrelated reasons (the shaded chest-GUI library was dropped) and isn't being revisited here.
Beyond the menu rewrite, this release also rounds out the feature parity with Multiverse's addon ecosystem that was the whole point of folding everything into one plugin.
Linked-world groups (linked-worlds-inventory in config.yml) could previously only share the
whole bundle of inventory+health+hunger, all or nothing. Each group can now pick exactly which
aspects it shares — inventory, health, hunger, experience, bed-spawn, location — via a
new worlds: + share: config shape:
linked-worlds-inventory:
survival-group:
worlds: [world, world_nether]
share: [inventory, health, hunger, experience]The old flat-list shape (group: [world, test]) still works exactly as before — it's read as
sharing inventory/health/hunger, the original behavior — so no existing config needs to change.
location restores the player's exact last position in that group (captured the instant they
leave it) instead of just dropping them at the destination world's default spawn.
Linked Nether pairs (linked-portals in config.yml) can now set a nether-scale other than
vanilla's 8:1 — useful for a 1:1 "twin world" nether, or any other custom ratio. Leave it unset and
nothing changes; the plugin keeps trusting vanilla's own portal math exactly as before.
Place a sign, write [WorldManager] on the first line and a destination world's name on the
second, and right-clicking it teleports there. /wm sign list shows every registered sign portal.
Gated by two new permissions: worldmanager.sign.create (op by default) and
worldmanager.sign.use (everyone, by default).
/wm portal pos1/pos2 select a cuboid (WorldEdit-wand style), /wm portal create <name> turns
it into a named portal region, and its behavior is built up from there: destination (a world, or
your current position), permission (an extra node beyond the base worldmanager.portal),
price (requires an installed Vault + economy plugin — free otherwise, Vault is a soft
dependency, not a requirement), and launch <dx> <dy> <dz> (a velocity applied on entry, for
cannon-style portals with or without a teleport destination). Works for players on foot and for
occupied minecarts/boats. /wm portal list shows every registered region.
- Critical fix:
PlayerQuitEventwas wiping a player's entire linked-inventory history (every group, not just the one they were just saved into) from the database on every disconnect — the opposite of what "persistent linked inventories" is supposed to do. Quitting now only clears the in-memory cache; the database is untouched. - Inventory saves/loads for linked worlds now happen off the main thread.
worldmanager.*permissions are now properly declared inplugin.yml(default: op), and operator status no longer overrides an explicit permission negation from a permissions plugin.- A world-operation lock now prevents
pregen/backup/restore/unload/deletefrom racing each other on the same world (previously, pre-generation could keep writing chunks into a world folder thatdeletewas simultaneously removing). pregen start ... radius:nnow means an actual chunk radius (a(2n+1)²square), not a vaguely-related "total chunk count" that didn't match the option's name.- New per-world flags in the spirit of Multiverse-Core: PvP, mob spawning, animal spawning, a
weather lock, and a custom spawn point (used by
/wm tponce set). Reachable from each world's options screen. - Fixed a handful of smaller bugs: a
chunks/sstat that always printed0(integer division), a permission-vs-usage message mix-up onbackup/restore/delete/unloadwith missing arguments, broken tab-completion onpregen's extra arguments, a hardcoded Windows path in the Gradle build, and a world-name validation gap in the creator flow's "empty world" path. - Guided command help: running
/wm sign,/wm pregen, or/wm portalwith no arguments (or an unrecognized action) now shows a clickable step-by-step guide instead of a bare usage line;/wm load//wm tpwith a missing name now list loaded/loadable worlds as clickable suggestions; andcreate/loadsuccess messages suggest the natural next step (/wm tp <world>,/wm gui).
Full technical writeup in AUDIT.md.
Starting with 3.0.0, WorldManager is Paper-only. Spigot and vanilla CraftBukkit are no longer supported — if you run one of those, stay on the 2.x release line, which will keep working as before.
The plugin's entire in-game menu (/wm gui) has been rebuilt from scratch on top of Minecraft's
native Dialog system — the same UI framework Mojang added to the game itself in 1.21.6, exposed
to plugins starting with Paper 1.21.7. Dialogs are server-driven forms and menus rendered by the
client itself: real text fields, dropdowns, sliders, and Yes/No confirmation screens, instead of
plugins faking a "menu" out of a chest inventory (clickable items, chat prompts standing in for
text input, etc.) — which is what WorldManager's GUI, and most Bukkit plugin GUIs in general, have
always had to do.
This is a Paper-exclusive API. There is no equivalent on Spigot or CraftBukkit, and no reasonable way to keep both a Dialog-based menu and a chest-based fallback maintained side by side without either doubling the GUI code forever or watering down the new one. Given that Paper has been the de facto standard for new server setups for years now, the decision was to go all-in on the native UI rather than keep carrying the old approach.
What this means for you:
- Running Paper (1.21.7 or newer, up to the current 26.2): update freely, everything keeps working
and
/wm guinow opens a proper native dialog instead of a chest menu. - Running Spigot/CraftBukkit: do not update to 3.0.0. The plugin will not load the way you expect — stick with the last 2.x release.
- Running a Paper fork that doesn't implement Paper's own API surface: not supported, same as before.
The rewrite wasn't just a reskin — a few flows are genuinely better now that they're not constrained by "items in an inventory":
- Creating a world used to mean closing the menu, typing a name in chat, reopening the menu, closing it again to type a seed, reopening again for a generator, and clicking through a "cycle forward" button to pick a world type. It's now one form: name, type dropdown, seed, generator, and an empty-world toggle, all on one screen, submitted at once.
- Deleting / unloading / restoring a world now goes through a proper Yes/No confirmation dialog instead of a hand-built one-row chest menu.
- Editing an integer game rule is now a slider with the current value pre-filled, instead of clicking +1/-1 buttons or typing a number in chat.
Everything else — permissions, commands, config files, world/backup data — is unchanged.
- Critical fix: an inventory-loss bug (since 2.2.0) where players could lose their entire
inventory switching between two ordinary worlds that weren't even part of a linked-inventory
group. Full details in
AUDIT.md. - New: linked Nether/End portals — point a world's portals at specific companion worlds
instead of Bukkit's auto-generated
<world>_nether/<world>_the_endpair. - A round of correctness/reliability fixes across backups, restores, pre-generation, and the
update checker — see
AUDIT.mdfor the full list.
Supported versions: Paper 1.21.7 → 26.2.