Multiverse: Running Several Worlds on One Minecraft Server
Run several Minecraft worlds on one server with Multiverse: create and import worlds, per-world gamerules and inventories, portals and teleport permissions.
A vanilla Minecraft server has one world plus its Nether and End, and no way to add a second. Every "resource world that resets monthly", "creative plot world", "minigame arena" and "hub you spawn into" is the same plugin doing the work: Multiverse.
Multiverse creates, imports, loads and unloads worlds at runtime, gives each one its own game mode, difficulty, PvP setting and game rules, and teleports players between them. Its add-ons then handle the two things people always ask for next — separate inventories per world, and portals that go anywhere.
This is a different problem from running several servers behind one address. If your worlds share a player list, an economy and a plugin set, they belong on one server with Multiverse. If they need different server jars, different mod sets or genuinely different performance profiles, they want to be separate servers behind a proxy — see Minecraft Server Networks: Setting Up a Velocity Proxy. The single-world side of world handling — seeds, pre-generation, borders, resets and uploads — is in Minecraft World Management.
What to Install
Multiverse is a family. The core plugin is required; the add-ons are optional and each does one job.
| Plugin | What it does | Current version |
|---|---|---|
| Multiverse-Core | Creating, importing, loading and unloading worlds; per-world settings; teleporting | 5.8.0 |
| Multiverse-Inventories | Separate or shared inventories, health, hunger and XP per world group | 5.3.5 |
| Multiverse-Portals | Player-built portals of any shape, to any destination | 5.2.3 |
| Multiverse-NetherPortals | Vanilla-style Nether and End portals linking across your own worlds | 5.1.0 |
| Multiverse-SignPortals | Signs as teleporters | 5.0.4 |
Versions checked 19 August 2026. All five support Minecraft 26.2 and run on Bukkit, Spigot, Paper and Purpur.
Keep the whole family on the same major version
Every add-on depends on Multiverse-Core, and the project's own requirement is that all sub-modules must be of the same major version. Mixing a version 5 Core with a version 4 add-on is not supported. Multiverse 5 itself requires Minecraft 1.18 or newer, and you cannot downgrade back to version 4 once you have run it.
Installation is genuinely just "drop the jars in plugins/ and start the server" — Multiverse writes its own configs on first run, and there is no zip to unpack. See How to install plugins for Minecraft Java Edition. A permissions plugin is strongly recommended; the project names LuckPerms specifically, covered in How to Set Up LuckPerms Permissions for Minecraft.
Creating a World
/mv create build normal
/mv tp build
/mv setspawn /mv create <name> <environment> is the whole thing. Environment must be normal, nether or the_end. Creation runs for a few seconds and reports progress in the console.
The useful flags:
| Flag | Effect |
|---|---|
--seed <seed> |
Generate from a specific seed |
--world-type <type> |
normal, flat, amplified or large_biomes |
--generator <name[:id]> |
Use a custom terrain generator from another plugin |
--biome <provider[:id]> |
Single-biome or custom biome provider — --biome @single:plains |
--no-structures |
No villages, temples, strongholds or other structures |
--generator-settings <json> |
Superflat layer definition |
--no-adjust-spawn |
Stop Multiverse relocating the spawn to a safe block |
--generate-bonus-chest |
Bonus chest at spawn. Needs Paper 1.21.5+ |
--force-spawn-position <x,y,z> |
Pick the spawn yourself. Needs Paper 26.1+ |
Multiverse does not generate the terrain itself
It calls the Bukkit API and lets the server do the work. That matters when things go wrong: if another plugin is also creating worlds, or the server software behaves unusually, Multiverse can only do its best to steer the result. It is also why a world's environment and generator must be stated correctly on import — Multiverse cannot infer them.
Importing a World You Already Have
If the world folder is already on the server — a singleplayer save you uploaded, a map you downloaded, a world from an old host — you import it rather than creating it.
/mv import my_world normal
/mv import my_hell nether You must give the correct environment, and the correct generator if one was used. Multiverse's documentation is blunt about this: get it wrong and bad things happen to your world.
What counts as the "world name" changed in Paper 26.1
On Spigot and older Paper, pass the folder name as it appears in the server root —
my_world. On Paper 26.1 and later, worlds live under<level-name>/dimensions/<namespace>/<key>/, and you pass the namespaced key instead —minecraft:the_nether, ormyplugin:pvp_arena. Following an older guide on a current Paper server will fail to find the world. The 26.1 save-format change is covered in Minecraft World Management.
Two rules that save real pain:
- The world must have been generated on the same Minecraft version as the server. A save last opened on a newer client will not import cleanly.
- Do not rename the world folder to get a nicer name. Set an alias instead:
/mv modify my_world set alias "&aFern World". Aliases can carry colour codes and show up in/mv list,/mv whoand chat plugins.
Per-World Settings
Every world gets its own settings, changed live with /mv modify [world] set <property> <value>. They are stored in worlds.yml, which you normally should not edit by hand.
/mv modify build set gamemode creative
/mv modify build set difficulty peaceful
/mv modify build set pvp false
/mv modify build set allow-flight true | Property | What it controls |
|---|---|
alias |
Display name, with colour and style codes |
gamemode |
Forced game mode on entry |
difficulty |
Per-world difficulty |
pvp |
Player versus player combat |
allow-flight |
Flight outside creative mode |
auto-load |
Whether the world loads at server start |
respawn-world |
Which world players respawn into after dying here |
bed-respawn / anchor-respawn |
Whether beds and respawn anchors set a spawn point |
scale |
Coordinate scale used when travelling between worlds by portal |
player-limit |
Maximum players allowed in this world |
world-blacklist |
Worlds you cannot reach this one from |
entity-spawn-config |
Which mobs spawn, and at what rate |
keep-spawn-in-memory |
Whether the spawn chunks stay loaded |
adjust-spawn |
Whether Multiverse moves an unsafe spawn to a safe block |
hunger / auto-heal |
Whether hunger drains and health regenerates |
portal-form |
Which portal types may form here |
world-visibility |
Whether the world appears in /mv list |
allow-advancement-grant |
Whether actions here grant advancements. Paper only |
Mob spawning has its own command in Multiverse 5:
/mv entity-spawn-config modify monster set spawn false Per-world game rules
This is the one people most often assume is impossible in vanilla. It is not — game rules are stored in the world save, so each world already has its own — but Multiverse gives you a clean way to read and write them without switching worlds:
/mv gamerule set advance_time false hub
/mv gamerule list hub
/mv gamerule reset advance_time hub Note that these are the vanilla game rule names for your server version, and they changed. Java Edition 1.21.11 moved every game rule into a registry and renamed them from camelCase to snake_case, and several were not straight renames — doDaylightCycle became advance_time, disableRaids became raids with its value inverted, and doInsomnia became spawn_phantoms. A find-and-replace on an older guide will not get you there. /mv gamerule list shows the names your server actually accepts, and the full mapping is in Minecraft Server Commands.
Moving Players Around
/mv tp <destination>, or /mvtp, teleports. A destination is more than a world name:
| Prefix | Destination | Example |
|---|---|---|
w: |
A world's spawn (the prefix is optional) | /mvtp w:build |
a: |
A named anchor | /mvtp a:market |
e: |
Exact coordinates, with optional pitch and yaw | /mvtp e:build:70,64,0:90:90 |
pl: |
Another player | /mvtp pl:Steve |
p: |
A Multiverse portal | /mvtp p:hubgate |
b: |
A bed spawn | /mvtp b:playerbed |
Exact destinations accept relative coordinates (~,~1,~), and e:@here sets a destination to exactly where you are standing, including which way you are looking.
Anchors are named saved locations: /mv anchor set market at your feet, then a:market anywhere a destination is accepted. /mv anchor list and /mv anchor delete manage them.
Teleport permissions changed in Multiverse 5
Permissions are
multiverse.teleport.self.<destination-id>andmultiverse.teleport.other.<destination-id>— for examplemultiverse.teleport.self.wfor world destinations. Multiverse 5 adds a finer layer:multiverse.teleport.self.w.<worldname>. Whether both are required is set byuse-finer-teleport-permissionsinconfig.yml, and the default differs by history:truefor a fresh install,falsewhen migrating from Multiverse 4. If teleports stopped working right after an upgrade, this is the first thing to check. Even with theotherpermission, you can only send a player somewhere you are allowed to go yourself.
Separate Inventories: Multiverse-Inventories
By default all your worlds share one inventory, which is fine until someone carries a creative-world diamond block into survival.
Multiverse-Inventories works on groups and shares. A group is a set of worlds; a share is a kind of data those worlds have in common. Worlds inside a group share what the group's shares list; worlds in different groups keep that data separate.
Configure this before players visit the worlds involved
The project's own warning is unambiguous: incorrect configuration can lose player inventory data, and changing groups after players already have data in those worlds can overwrite it. Take a backup from the Backups tab first — see How to create a backup.
On install you get one group called default, containing the server's default overworld, Nether and End, sharing everything. That mimics vanilla behaviour, where the three dimensions share your inventory. Every world you create or import afterwards gets its own separate inventory automatically.
/mv list --raw
/mvinv create-group smpgroup smp,smp_nether,smp_the_end all
/mvinv info smpgroup /mv list --raw gives you the real world names rather than aliases, which is what the group command needs. If you only want to bolt one more world onto the existing default group, do not create a group — use /mvinv add-worlds default <world>.
Shares can be much finer than all:
| Grouped share | Includes |
|---|---|
all |
Everything below, including the optional shares |
inventory |
Inventory contents, armour, ender chest, off-hand |
experience |
XP progress, total XP and level |
health |
Health, max health, air, fall distance, fire ticks |
hunger |
Food level, saturation, exhaustion |
stats |
Health, hunger, XP and potion effects together |
Individual shares include inventory_contents, armor_contents, ender_chest, off_hand, hit_points, food_level, potion_effects, bed_spawn and more. Five optional shares — economy, last_location, recipes, advancements and game_statistics — do nothing until switched on with /mvinv toggle <name>, even if a group lists them.
last_location is the one worth knowing about: it returns a player to where they left off in a world group rather than to its spawn, and it is the standard setup for a hub world. It also overrides teleports into a world that does not share it with the previous world, so read the docs before enabling it network-wide.
Portals
Multiverse-Portals builds portals of any shape out of any block — or out of nothing at all, since destroying the frame afterwards leaves an invisible portal.
/mvp wand
/mvp create hubgate w:survival Get the wand with /mvp wand, then left-click one corner and right-click the other. If WorldEdit is installed, Multiverse-Portals detects it and you select with //wand instead — see Minecraft WorldEdit: Selections, Brushes and Schematics. Portal destinations use the same prefixes as /mvtp, so w:survival goes to a world's spawn, e:survival:100,64,-30 to exact coordinates, and p:othergate to another portal.
To change a destination later, select the portal (/mvp select hubgate) and run /mvp modify destination p:othergate. /mvp remove hubgate deletes it — note that any portal pointing at it is then broken.
Portals are permission-gated by default
Only players with
multiverse.portal.access.<portalname>can use a portal. A portal that "does nothing" for normal players almost always means the permission was never granted. If you want every portal open to everyone,/mvp config enforce-portal-access false. Vehicles and mobs are also blocked by default:/mvp config teleport-vehicles trueand/mvp config teleport-entities true(both need a full restart), plus/mvp modify <portal> teleport-non-players trueon each portal.
Multiverse-NetherPortals is the different one. It makes ordinary vanilla Nether and End portals link to your worlds rather than to the server's default Nether — so survival gets its own Nether, and resource gets a different one, using nothing but obsidian and flint and steel. Most servers running several overworlds want this rather than Portals.
Loading, Unloading and Deleting
Three commands look similar and do very different things. Getting them confused is how people delete a world they meant to keep.
| Command | Unloads from server | Removes from Multiverse config | Deletes the folder |
|---|---|---|---|
/mv unload <world> |
Yes | No | No |
/mv remove <world> |
Yes | Yes | No |
/mv delete <world> |
Yes | Yes | Yes |
/mv unload is the useful one day to day: a rarely used world sitting unloaded costs nothing. /mv load <world> brings it back.
/mv delete is irreversible and asks for confirmation — you get 30 seconds to run /mv confirm <otp> with the one-time code it gives you. If players are still in the world, all three commands error out unless you add --remove-players [destination], which evacuates them first.
Two more worth knowing:
/mv regen <world>wipes and regenerates a world in place — the resource-world reset.--seedgives it new terrain,--reset-gamerules,--reset-world-configand--reset-world-borderclear the rest./mv clone <world> <newname>copies a world and its configuration, which is the safe way to test something destructive.
The Cost of Extra Worlds
Each loaded world is more memory and more chunks being ticked, so a resource world is a real cost rather than a free feature. Two practical consequences:
- Set
auto-loadto false on worlds that are not needed at boot, andkeep-spawn-in-memoryto false on worlds nobody is standing in. - Watch the heap. Several worlds on an allocation sized for one is a common cause of long garbage-collection pauses — see Minecraft Server RAM and JVM Flags and Diagnosing Minecraft Server Lag.
Remember too that most other plugins are per-world in ways you have to configure. WorldGuard's __global__ region and every region ID are per-world, so protecting the overworld protects nothing else — see Minecraft WorldGuard: Region Protection Explained. LuckPerms scopes permissions with a world= context. EssentialsX can gate /home between worlds with world-home-permissions — see EssentialsX Setup: Homes, Warps, Kits and Economy.
Common Issues
/mv importsays the world does not exist. On Paper 26.1+ you must pass the namespaced key, not the folder name. On Spigot the folder name must match exactly, capitalisation included.- An imported world generates strange terrain at its edges. The environment or generator given at import did not match how the world was made. There is no clean fix except regenerating the affected chunks.
- Teleport commands stopped working after upgrading to Multiverse 5.
use-finer-teleport-permissions— grant the.<worldname>nodes or set it tofalse. - Players keep their inventory between worlds. Those worlds are in the same Inventories group, or Multiverse-Inventories is not installed.
/mvinv info <group>shows the truth. - Players lost items after a group change. Existing per-world data was overwritten. This is why the backup comes first.
- A portal does nothing. The player lacks
multiverse.portal.access.<name>, or the portal's destination points at a portal that has been removed. - Mobs and boats will not go through a portal. Both config options plus the per-portal
teleport-non-playersare needed, and the config options need a restart. - A world will not load at boot.
auto-loadis false, or the folder is missing./mv load <world>reports which. - Gamerule names are rejected. Java Edition 1.21.11 renamed them all. Run
/mv gamerule listto see what this server accepts.
FAQ
Do I need Multiverse if I only want a separate Nether?
No — vanilla already gives every server one Nether and one End. You need Multiverse when you want a second overworld, or a Nether attached to a second overworld, which is what Multiverse-NetherPortals handles.
Can players have different inventories in creative and survival worlds?
Yes, and that is the main reason to install Multiverse-Inventories. Put the survival worlds in one group and leave the creative world out of it; the creative world then keeps its own inventory automatically.
Does Multiverse work on Fabric or Forge?
No. It is a Bukkit-family plugin — Paper, Spigot or Purpur. A modded server needs a different world-management mod.
Is Multiverse the same as running a network?
No. Multiverse gives one server several worlds. A network is several servers behind a proxy, which is a different piece of infrastructure with its own security requirements — see Minecraft Server Networks: Setting Up a Velocity Proxy.
How do I reset a resource world every month?
/mv regen <world> --seed regenerates it with fresh terrain. Evacuate players first with --remove-players, and put the command on a schedule — see Minecraft Scheduled Restarts and Server Automation.
Will upgrading from Multiverse 4 lose my data?
The project says no: configs migrate automatically, and existing worlds, portals and inventory data keep working with no reimporting or relinking. Take a backup anyway, note that you cannot downgrade afterwards, and check the command and permission changes described above.
Where do I set which world players join on first login?
/mv config first-spawn-override true and /mv config first-spawn-location <world>. For a world players return to on every login, use enable-join-destination and join-destination instead.
What to Read Next
- Minecraft World Management for seeds, pre-generation, borders, resets and uploading a world
- Minecraft Server Networks: Setting Up a Velocity Proxy if you want several servers rather than several worlds
- How to install plugins for Minecraft Java Edition for getting the jars in place
- Minecraft WorldGuard: Region Protection Explained — regions and
__global__are per-world - EssentialsX Setup: Homes, Warps, Kits and Economy for per-world homes and warps
- Minecraft Server RAM and JVM Flags for the memory each extra world costs
- Minecraft Server Commands for the current game rule names
Primary sources used for this guide (all checked 19 August 2026): the official Multiverse documentation — Core installation, Core basic usage, Core command reference, world properties, destinations, the MV5 upgrade guide, Inventories basic usage, the Inventories shares list and Portals basic usage; and the Multiverse projects on Modrinth for current versions and supported Minecraft versions — Core, Inventories, Portals, NetherPortals and SignPortals.
Made with 💜 by GameServerKings

Need a Minecraft server?
Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.80 /month