customworlds-fabric-1.1.1.jar
Curse Maven Snippet
What's new
Added
- Non-admin players can always go back to the vanilla dimension they came from. When a
vanilla dimension (overworld, nether, end) is not public, a player who left it for a custom
world may still
/cw tpback to THAT dimension, and only that one. The history survives hops between custom worlds (overworld -> cw1 -> cw2 -> overworld, nether -> cw2 -> cw1 -> nether) and restarts (customworlds_returns.json). A player with no history (joined the server inside a custom world) may return to the overworld. - Inventory isolation now also covers the ender chest, health, hunger and active potion effects. A fresh isolated world starts with an empty ender chest, full health and hunger and no effects. Buckets saved before 1.1.1 keep the current values for these until they are saved again, so existing worlds do not lose anything on upgrade.
Fixed
- Teleports not made by
/cw tpnow apply the world rules too. Vanilla/tp, portals and other mods' teleports used to skip inventory isolation (shared/per-world inventory and XP) and the world's default gamemode. A dimension change by any means now swaps the inventory bucket and applies the gamemode. A plain overworld/nether portal trip leaves the gamemode untouched unless a world with its own gamemode is involved. On Fabric, where the API only reports the change after it happened, the position left behind is taken from a per-tick snapshot, so/cw tpstill brings the player back to where they were. - Inventory buckets are safe against read errors. A bucket that cannot be read no longer
wipes the player's inventory first (which used to destroy the items and then overwrite the
bucket with nothing). The inventory is left unchanged and the bad file is backed up as
*.corrupt-<time>. - Crash-safe saves.
customworlds.json,customworlds_config.json,customworlds_positions.jsonand the inventory buckets are written to a temporary file and moved into place, so a crash mid-write can no longer truncate them. An unreadable file is backed up (*.corrupt-<time>) instead of being overwritten by an empty one at the next save. - A world that fails to load at boot is no longer erased. It stays listed in
customworlds.jsonand is retried at the next start./cw list(admins) shows it, and/cw delete <name>can remove it. - A cancelled teleport no longer scrambles inventories. If another mod cancels the dimension
change during
/cw tp, the inventory swap is rolled back and the command reports it. If a player cannot be moved out of a world being deleted, the delete is aborted instead of closing a level with a player inside. - The item held on the cursor is kept when changing dimension (it used to be lost).
- Deleting a world while players are offline. Players who logged out inside it get their overworld inventory back when they next log in, instead of keeping the deleted world's items. Players online at server shutdown are also snapshotted correctly now (their inventory bucket used to be skipped because the stores were already closed).
/cw config gameruleand/cw config worldborderin the nether / the end are refused: those dimensions share the overworld's gamerules and border, so the command silently changed the overworld while claiming to change the other dimension. Gamerules stay per-world only incustomworlds:*dimensions, the border in those and in the overworld.- Border size is validated like vanilla (1 to 59999968). Negative or out-of-range sizes, also
through
add, are refused. - WorldEdit per-world access no longer grants everything. The flag now grants every
worldedit.*permission EXCEPT a deny list built from the permission names of WorldEdit 7.3.8: server administration (reload,report,snapshots,scripting,delchunks,watchdog), limits and safety nets (limit.unrestricted,timeout,perf,anyblock,inventory.unrestricted,override.bedrock), arbitrary data and sharing (setnbt,schematic.delete,schematic.share,clipboard.share) and undoing other players' edits (history.undo.other,history.redo.other). - A failed
/cw createor/cw importcleans up after itself. The half-built level is unregistered (the name is not stuck on "already loaded"), copied import files and the default config entry are removed.create/importalso refuse a name whose folder still has files from an earlier world, and/cw deletereports files it could not remove. /cw importvalidates the world name before reading anything from disk.- Boot warm-up of restored worlds is capped at 30 s in total (5 s per world as before for
/cw create), so many worlds cannot trip the server watchdog. - Reflection field lookup by type is only used when it is unambiguous (NeoForge).
Changed
- Player positions and return dimensions are serialised about every 10 s (only when something changed) and written on a background thread, so the server tick never waits for the disk. They are also written synchronously at shutdown.
- A warning is logged at boot when
permissionLevelis 0 (everyone is an admin).
This mod has no additional files

