---
title: "Multiverse: Running Several Worlds on One Minecraft Server"
description: "Run several Minecraft worlds on one server with Multiverse: create and import worlds, per-world gamerules and inventories, portals and teleport permissions."
url: "https://www.gameserverkings.com/knowledge-base/minecraft/multiverse-multiple-worlds/"
category: "Minecraft"
category_url: "https://www.gameserverkings.com/knowledge-base/minecraft/"
published: "2026-08-19T10:07:55.300Z"
updated: "2026-08-19T10:20:09.179Z"
source_format: "markdown"
site: "GameServerKings"
---

# Multiverse: Running Several Worlds on One Minecraft Server

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](/knowledge-base/minecraft/multi-server-networks-with-velocity/). The single-world side of world handling — seeds, pre-generation, borders, resets and uploads — is in [Minecraft World Management](/knowledge-base/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.

> [!IMPORTANT] 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](/knowledge-base/minecraft/java-plugins/). A permissions plugin is strongly recommended; the project names LuckPerms specifically, covered in [How to Set Up LuckPerms Permissions for Minecraft](/knowledge-base/minecraft/luckperms-permissions/).

## Creating a World

```text title="A creative world called 'build'"
/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+ |

> [!NOTE] 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.

```text title="Import an existing folder"
/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.

> [!WARNING] 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`, or `myplugin: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](/knowledge-base/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 who` and 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.

```text title="A peaceful creative world"
/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:

```text title="No hostile mobs in the build world"
/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:

```text title="Fixed daylight in the hub"
/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](/knowledge-base/minecraft/admin-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.

> [!IMPORTANT] Teleport permissions changed in Multiverse 5
> Permissions are `multiverse.teleport.self.<destination-id>` and `multiverse.teleport.other.<destination-id>` — for example `multiverse.teleport.self.w` for world destinations. Multiverse 5 adds a **finer** layer: `multiverse.teleport.self.w.<worldname>`. Whether both are required is set by `use-finer-teleport-permissions` in `config.yml`, and the default differs by history: **`true` for a fresh install, `false` when migrating from Multiverse 4**. If teleports stopped working right after an upgrade, this is the first thing to check. Even with the `other` permission, 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.

> [!CAUTION] 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](/knowledge-base/general/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.**

```text title="Give a set of SMP worlds their own shared inventory"
/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.

```text title="Build a portal from a hub to the survival world"
/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](/knowledge-base/minecraft/worldedit-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.

> [!WARNING] 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 true` and `/mvp config teleport-entities true` (both need a full restart), plus `/mvp modify <portal> teleport-non-players true` on 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. `--seed` gives it new terrain, `--reset-gamerules`, `--reset-world-config` and `--reset-world-border` clear 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-load` to false on worlds that are not needed at boot, and `keep-spawn-in-memory` to 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](/knowledge-base/minecraft/allocating-ram-and-jvm-flags/) and [Diagnosing Minecraft Server Lag](/knowledge-base/minecraft/diagnosing-lag-and-low-tps/).

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](/knowledge-base/minecraft/worldguard-region-protection/). 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](/knowledge-base/minecraft/essentialsx-setup/).

## Common Issues

- **`/mv import` says 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 to `false`.
- **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-players` are needed, and the config options need a restart.
- **A world will not load at boot.** `auto-load` is 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 list` to 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](/knowledge-base/minecraft/multi-server-networks-with-velocity/).

### 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](/knowledge-base/minecraft/scheduled-restarts-and-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](/knowledge-base/minecraft/world-management/) for seeds, pre-generation, borders, resets and uploading a world
- [Minecraft Server Networks: Setting Up a Velocity Proxy](/knowledge-base/minecraft/multi-server-networks-with-velocity/) if you want several servers rather than several worlds
- [How to install plugins for Minecraft Java Edition](/knowledge-base/minecraft/java-plugins/) for getting the jars in place
- [Minecraft WorldGuard: Region Protection Explained](/knowledge-base/minecraft/worldguard-region-protection/) — regions and `__global__` are per-world
- [EssentialsX Setup: Homes, Warps, Kits and Economy](/knowledge-base/minecraft/essentialsx-setup/) for per-world homes and warps
- [Minecraft Server RAM and JVM Flags](/knowledge-base/minecraft/allocating-ram-and-jvm-flags/) for the memory each extra world costs
- [Minecraft Server Commands](/knowledge-base/minecraft/admin-commands/) for the current game rule names

**Primary sources used for this guide** (all checked 19 August 2026): the official [Multiverse documentation](https://mvplugins.org/) — [Core installation](https://mvplugins.org/core/fundamentals/installation/), [Core basic usage](https://mvplugins.org/core/fundamentals/basic-usage/), [Core command reference](https://mvplugins.org/core/fundamentals/commands-usage/), [world properties](https://mvplugins.org/core/fundamentals/world-properties/), [destinations](https://mvplugins.org/core/reference/destinations/), the [MV5 upgrade guide](https://mvplugins.org/mv5/welcome/upgrading/), [Inventories basic usage](https://mvplugins.org/inventories/fundamentals/basic-usage/), the [Inventories shares list](https://mvplugins.org/inventories/reference/shares-list/) and [Portals basic usage](https://mvplugins.org/portals/fundamentals/basic-usage/); and the Multiverse projects on Modrinth for current versions and supported Minecraft versions — [Core](https://modrinth.com/plugin/multiverse-core), [Inventories](https://modrinth.com/plugin/multiverse-inventories), [Portals](https://modrinth.com/plugin/multiverse-portals), [NetherPortals](https://modrinth.com/plugin/multiverse-netherportals) and [SignPortals](https://modrinth.com/plugin/multiverse-signportals).

---

Made with 💜 by GameServerKings
