COWMODSКаталог модов

Custom Worlds

Create, configure and teleport between custom dimensions at runtime.

Автор: LoveGmod1,6 тыс.5обновлён 20 сент. 2026 г.
ПриключенияУправлениеГенерация мира

Описание

Server-side mod to create, configure and teleport between multiple custom dimensions at runtime - each world with its own inventory, gamemode, difficulty, gamerules and worldborder. All via simple /cw commands. Vanilla clients can connect and use /cw tp - no client install needed.

Active Versions: 1.21.1 (NeoForge / Fabric)

See it in action

World Creation & Teleportation

Features

  • Runtime dimension creation - NORMAL, FLAT, NETHER or END generation, with optional seed.
  • Per-world isolated state - every dim can have its own:
    • Default gamemode (applied on arrival)
    • Inventory pool (shared with other "shared" worlds, or fully isolated)
    • Gamerule overrides (with reset to revert)
    • Difficulty (custom dims only)
    • Worldborder (full /worldborder feature parity)
    • Public flag - let non-OP players teleport there
  • Smart teleport - remembers each player's last position in every dim; safe-spawn detection on first visit (including Nether ceiling handling).
  • Persistent across restarts - worlds, configs, player positions, inventories.
  • Death respawn - dying in a custom dim respawns you there (unless your bed is elsewhere).
  • Vanilla-client compatible - no client mod required.
  • Deletion safety - /cw delete requires confirmation, wipes files and all related per-player buckets.

Commands

All commands hang off /cw. Public commands are visible to everyone; admin commands require the configured permission level (OP 4 by default).

Public

  • /cw help - list commands available to you
  • /cw tp <world> - teleport (admins: any dim; players: public worlds only)
  • /cw list - list worlds (filtered by permission)

Admin - world management

  • /cw create <name> <type> [seed]
    • Type: NORMAL, FLAT, NETHER, END
    • Examples:
    • /cw create myworld NORMAL
    • /cw create skyblock FLAT 12345
    • /cw create hellscape NETHER
  • /cw delete <name> - confirm within 30 seconds by re-running the same command

Admin - per-world config (run from inside the dim)

  • /cw config - show the current dimension's full config
  • /cw config sharedinventory <true|false> - share inventory with other shared worlds, or use a fully isolated pool
  • /cw config gamemode <survival|creative|adventure|spectator> - gamemode applied on arrival
  • /cw config publicWorld <true|false> - allow non-OP players to /cw tp here
  • /cw config difficulty <peaceful|easy|normal|hard> - per-dim difficulty (custom dims only)
  • /cw config worldborder ... - same arguments as vanilla /worldborder, but applied to the current dim:
    • set <distance> [<time>], add <distance> [<time>]
    • center <x> <z>
    • damage amount <perBlock>, damage buffer <distance>
    • warning distance <blocks>, warning time <seconds>
    • get
  • /cw config gamerule [<rule> [<value>|reset]]
    • No args: list all rules (overridden ones flagged with *)
    • <rule>: query
    • <rule> <value>: override the rule for this dim
    • <rule> reset: remove the override, revert to default

Custom Config Per-World

Permissions

The OP level required for admin commands is configurable in config/<save>/serverconfig/customworlds-server.toml:

permissionLevel = 4         # 0-4, OP level required for admin commands
maxWorlds = 0               # 0 = unlimited; hard cap for /cw create
deleteConfirmSeconds = 30   # 5-600

/cw tp and /cw list always remain available to everyone (filtered by the per-world publicWorld flag).

Inventory model

Each player has one inventory snapshot per "bucket":

  • Shared bucket - used by every dim where sharedInventory = true (the overworld is shared by default). All shared worlds use the same inventory.
  • Isolated bucket - one per dim where sharedInventory = false. The dim has its own private inventory pool; you keep your shared inventory intact when you go in and out.

Buckets persist on disk and survive restarts. Logging out from an isolated dim snapshots your inventory immediately.

Inventory Sharing

Storage

Saved alongside the world data:

FilePurpose
customworlds.jsonList of created worlds
customworlds_config.jsonPer-dim config
customworlds_positions.jsonPer-player, per-dim last positions
customworlds_inventories/&amp;lt;uuid&amp;gt;/&amp;lt;bucket&amp;gt;.datNBT inventory + XP snapshots
dimensions/customworlds/&amp;lt;name&amp;gt;/Standard MC dimension data (chunks, entities, …)

Deleting a world wipes all of the above for that dim. Irreversible.

Compatibilities

Custom Worlds is compatible with Curios API (NeoForge) & Trinkets (Fabric), the inventory will sync when these mods are installed.

Limitations

  • doDaylightCycle per-dim has no visible effect - game time is shared with the overworld through DerivedLevelData. Day/night follows the overworld.
  • Per-dim difficulty only works on customworlds:* dims (it would conflict with vanilla's global difficulty for minecraft:* dims). For vanilla dims use /difficulty.
  • Server restart recommended after /cw create - newly-created worlds run on a fallback tick loop until the next restart, after which they integrate normally. The mod tells you so on creation.
  • Dynamic dimension registration uses reflection against MinecraftServer internals. Back up your save before updating NeoForge.

FAQ

Do my players need to install the mod? No. CustomWorlds is server-side only. Vanilla clients can connect and use /cw tp for public worlds.

Are the worlds compatible with vanilla? Yes. Custom dims reuse the vanilla OVERWORLD/NETHER/END dimension types, so vanilla clients recognize them without extra registry data.

What happens if a player is offline when their world gets deleted? On reconnect, vanilla falls back to the overworld spawn. They'll arrive with whatever inventory was saved in their player.dat at last logout.

Can I edit the JSON files manually? Yes - they're plain JSON. The loaders tolerate per-entry malformed data and log which entry was skipped.

Can I get more help about Custom Worlds ? Sure ! Join our discord at https://discord.gg/XNAeUSYswB

Галерея

Custom Worlds Banner

Последние версии

Все версии →
release

Custom Worlds 1.1.2

1.1.2
20 сент. 2026 г.137Minecraft: 1.21.1fabric
Скачать
Что нового
**New** - Works in single-player and on LAN worlds (Fabric too). **Fixed** - Fabric server crash at startup when WorldEdit 7.3.8 is installed. - Worlds created with structures disabled could not reload their chunks and got regenerated. - Players in the nether or the end could use `/cw tp overworld` even when the overworld is not public. - No more item duplication when an inventory file is unreadable (the bad file is kept as a backup). - Fabric: Trinkets slots are now properly cleared when entering an isolated world. - Another mod misbehaving can no longer stop a custom world from loading. - World names `overworld`, `the_nether` and `the_end` are now reserved.
release

Custom Worlds 1.1.2

1.1.2
20 сент. 2026 г.273Minecraft: 1.21.1neoforge
Скачать
Что нового
**New** - Works in single-player and on LAN worlds (Fabric too). **Fixed** - Fabric server crash at startup when WorldEdit 7.3.8 is installed. - Worlds created with structures disabled could not reload their chunks and got regenerated. - Players in the nether or the end could use `/cw tp overworld` even when the overworld is not public. - No more item duplication when an inventory file is unreadable (the bad file is kept as a backup). - Fabric: Trinkets slots are now properly cleared when entering an isolated world. - Another mod misbehaving can no longer stop a custom world from loading. - World names `overworld`, `the_nether` and `the_end` are now reserved.
release

Custom Worlds 1.1.1

1.1.1
19 сент. 2026 г.28Minecraft: 1.21.1fabric
Скачать
Что нового
### 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 tp` back 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 tp` now 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 tp` still 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.json` and 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.json` and 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 gamerule` and `/cw config worldborder` in 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 in `customworlds:*` 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 create` or `/cw import` cleans 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`/`import` also refuse a name whose folder still has files from an earlier world, and `/cw delete` reports files it could not remove. - `/cw import` validates 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 `permissionLevel` is 0 (everyone is an admin).
release

Custom Worlds 1.1.1

1.1.1
19 сент. 2026 г.16Minecraft: 1.21.1neoforge
Скачать
Что нового
### 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 tp` back 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 tp` now 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 tp` still 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.json` and 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.json` and 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 gamerule` and `/cw config worldborder` in 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 in `customworlds:*` 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 create` or `/cw import` cleans 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`/`import` also refuse a name whose folder still has files from an earlier world, and `/cw delete` reports files it could not remove. - `/cw import` validates 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 `permissionLevel` is 0 (everyone is an admin).
release

Custom Worlds 1.1.0

1.1.0
19 сент. 2026 г.10Minecraft: 1.21.1fabric
Скачать
Что нового
### Added - `/cw config worldedit <true|false>` - let every player (not just OPs) use WorldEdit commands in a specific dimension, without granting them OP. WorldEdit is creative-only for everyone, OPs included (survival players are refused). Requires WorldEdit to be installed; no build/block limits are enforced, it's an admin-trust decision per world. - `/cw config worldspawn [<pos>] [<angle>]` - set a custom spawn point for a custom dimension (used the first time any player arrives with no remembered position). No arguments uses your current position/facing; `reset` reverts to the automatic safe-spawn search. - `/cw create <name> <type> [seed] [structures]` - optional trailing flag to disable structure generation (villages, strongholds, etc.) for a new world. Defaults to `true` (vanilla behavior) when omitted. ### Fixed - **World border no longer leaks between dimensions.** Vanilla only gives the overworld its own border; every other dimension (nether, end, and therefore every custom world) shared that same border object by default. Running `/cw config worldborder` in one custom world was silently rewriting the overworld's border and every other custom world's border at the same time. Every dimension now gets its own independent border. - Fixed a related, not-yet-reported issue at the same root cause: a custom dimension's spawn point was aliased to the overworld's, so vanilla's own `/setworldspawn` used inside a custom world would have corrupted the real overworld spawn point.
release

Custom Worlds 1.1.0

1.1.0
19 сент. 2026 г.19Minecraft: 1.21.1neoforge
Скачать
Что нового
### Added - `/cw config worldedit <true|false>` - let every player (not just OPs) use WorldEdit commands in a specific dimension, without granting them OP. WorldEdit is creative-only for everyone, OPs included (survival players are refused). Requires WorldEdit to be installed; no build/block limits are enforced, it's an admin-trust decision per world. - `/cw config worldspawn [<pos>] [<angle>]` - set a custom spawn point for a custom dimension (used the first time any player arrives with no remembered position). No arguments uses your current position/facing; `reset` reverts to the automatic safe-spawn search. - `/cw create <name> <type> [seed] [structures]` - optional trailing flag to disable structure generation (villages, strongholds, etc.) for a new world. Defaults to `true` (vanilla behavior) when omitted. ### Fixed - **World border no longer leaks between dimensions.** Vanilla only gives the overworld its own border; every other dimension (nether, end, and therefore every custom world) shared that same border object by default. Running `/cw config worldborder` in one custom world was silently rewriting the overworld's border and every other custom world's border at the same time. Every dimension now gets its own independent border. - Fixed a related, not-yet-reported issue at the same root cause: a custom dimension's spawn point was aliased to the overworld's, so vanilla's own `/setworldspawn` used inside a custom world would have corrupted the real overworld spawn point.
release

Custom Worlds 1.0.1 - Fabric

1.0.1
28 мая 2026 г.234Minecraft: 1.21.1fabric
Скачать
Что нового
### Compatibility - Added **Trinkets** compatibility, items in **Trinkets** slots will now be successfully removed when `sharedInventory` is `false`
release

Custom Worlds 1.0.1 - NeoForge

1.0.1
28 мая 2026 г.875Minecraft: 1.21.1neoforge
Скачать
Что нового
### Compatibility - Added **Curios** compatibility, items in **Curios** slots will now be successfully removed when `sharedInventory` is `false`
release

Custom Worlds 1.0.0

1.0.0
25 мая 2026 г.27Minecraft: 1.21.1neoforge
Скачать