Introduction to World Management
On Minecraft servers, world management is the foundation of the gameplay experience. Separate worlds for different game modes, world borders, pre-generation for performance and backups for data safety — all of it is mandatory on a professional server.
In this guide we cover multi-world management with Multiverse-Core, borders and pre-generation with WorldBorder/Chunky, automatic backup scripts and world optimization in detail.
Installing Multiverse-Core
Multiverse-Core is the most popular plugin for creating and managing multiple worlds on a Minecraft server.
Installing Multiverse-Core
cp Multiverse-Core-4.3.12.jar /opt/minecraft/plugins/
systemctl restart minecraftWe also recommend installing Multiverse-Portals (portals between worlds) and Multiverse-NetherPortals (Nether/End portal management).
- Multiverse-Core — core world management (creating, deleting, settings)
- Multiverse-Portals — custom portals between worlds
- Multiverse-NetherPortals — Nether and End portal links
- Multiverse-Inventories — per-world inventory separation
World Creation and Management Commands
The core commands used for world management with Multiverse-Core are summarised in the table below:
| Command | Description | Example |
|---|---|---|
| /mv create <name> <environment> | Create a new world | /mv create skyblock NORMAL |
| /mv create <name> <environment> -g <generator> | Create with a generator | /mv create void NORMAL -g CleanroomGenerator:. |
| /mv delete <name> | Delete a world | /mv delete old_world |
| /mv import <name> <environment> | Import an existing world | /mv import world_backup NORMAL |
| /mv load <name> | Load a world | /mv load survival |
| /mv unload <name> | Unload a world from memory | /mv unload creative |
| /mv tp <world> | Teleport to a world | /mv tp skyblock |
| /mv list | List all worlds | /mv list |
| /mv info <name> | Show world information | /mv info survival |
| /mv setspawn | Set the world spawn point | /mv setspawn |
| /mv modify set <setting> <value> | Change a world setting | /mv modify set difficulty hard |
| /mv regen <name> | Regenerate a world | /mv regen skyblock |
| /mv clone <source> <target> | Clone a world | /mv clone survival survival_backup |
World Settings
You can configure settings such as game mode, difficulty and weather separately for each world:
Game Mode and Difficulty
# plugins/Multiverse-Core/worlds.yml — World settings
worlds:
survival:
environment: NORMAL
generator: DEFAULT
gameMode: SURVIVAL
difficulty: HARD
pvp: true
hunger: true
keepSpawnInMemory: true
allowFlight: false
autoHeal: true
animals:
spawn: true
rate: 1
monsters:
spawn: true
rate: 1
creative:
environment: NORMAL
gameMode: CREATIVE
difficulty: PEACEFUL
pvp: false
hunger: false
keepSpawnInMemory: false
allowFlight: true
animals:
spawn: true
monsters:
spawn: falseSpawn Settings
You can configure the spawn point and its related settings for each world:
| Setting | Command | Description |
|---|---|---|
| Set spawn | /mv setspawn | Makes your current location the spawn |
| Teleport to spawn | /mv spawn | Takes you to the world spawn point |
| Keep spawn in memory | /mv modify set memory true | Keeps the spawn chunks in memory |
| First join world | /mv modify set firstspawnoverride true | Sends new players to this world |
| Bed respawn | /mv modify set bedrespawn true | Use the bed spawn point |
WorldBorder and World Limits
World borders are critical for server performance. An unlimited world means unlimited chunk generation, which means ever-growing disk and RAM usage. Set a sensible border for every world.
Vanilla WorldBorder Commands
| Command | Description | Example |
|---|---|---|
| /worldborder center <x> <z> | Set the border centre | /worldborder center 0 0 |
| /worldborder set <diameter> | Set the border diameter (blocks) | /worldborder set 10000 |
| /worldborder set <diameter> <time> | Gradual border change | /worldborder set 20000 3600 |
| /worldborder add <amount> | Expand the border | /worldborder add 2000 |
| /worldborder damage amount <damage> | Damage outside the border | /worldborder damage amount 0.5 |
| /worldborder damage buffer <distance> | Distance before damage starts | /worldborder damage buffer 5 |
| /worldborder warning distance <blocks> | Warning distance | /worldborder warning distance 50 |
| /worldborder warning time <sec> | Warning time | /worldborder warning time 15 |
| /worldborder get | Current border information | /worldborder get |
Pre-Generation with Chunky
Pre-generation creates the world's chunks before players ever explore them. That way, when players head into new territory the server does not have to generate chunks on the spot, and there is no TPS drop.
Set the Chunky pre-generation radius
/chunky world survival
/chunky center 0 0
/chunky radius 5000
/chunky startChunky command order:
1. /chunky world <world> → Select the target world
2. /chunky center <x> <z> → Centre coordinates
3. /chunky radius <blocks> → Radius (in blocks)
4. /chunky shape <shape> → square or circle
5. /chunky start → Start pre-generation
6. /chunky pause → Pause
7. /chunky continue → Resume
8. /chunky cancel → CancelDisk usage will grow significantly after pre-generation. The table below shows approximate figures:
| Radius (blocks) | Chunk Count (square) | Approximate Size |
|---|---|---|
| 1,000 | ~3,900 | ~500 MB |
| 2,500 | ~24,400 | ~3 GB |
| 5,000 | ~97,600 | ~12 GB |
| 10,000 | ~390,600 | ~45 GB |
| 20,000 | ~1,562,500 | ~160 GB |
Automatic Backups
Backing up world data regularly is the single most effective way to prevent data loss. Below you will find a bash backup script and a cron configuration.
The Backup Script
#!/bin/bash
# minecraft-backup.sh — Automatic world backup script
# Settings
SERVER_DIR="/opt/minecraft"
BACKUP_DIR="/opt/backups/minecraft"
DATE=$(date +%Y-%m-%d_%H-%M)
RETENTION_DAYS=7
SCREEN_NAME="minecraft"
# Create the backup folder
mkdir -p "$BACKUP_DIR"
# Announce the backup and turn off auto-saving
screen -S $SCREEN_NAME -p 0 -X stuff "say §6Backup starting, you may notice a brief delay...$(printf '\r')"
screen -S $SCREEN_NAME -p 0 -X stuff "save-off$(printf '\r')"
screen -S $SCREEN_NAME -p 0 -X stuff "save-all$(printf '\r')"
sleep 5
# Compress the worlds
cd "$SERVER_DIR"
tar -czf "$BACKUP_DIR/worlds_$DATE.tar.gz" \
world/ world_nether/ world_the_end/ \
survival/ creative/ skyblock/ \
--exclude='*.tmp' --exclude='session.lock'
# Turn saving back on
screen -S $SCREEN_NAME -p 0 -X stuff "save-on$(printf '\r')"
screen -S $SCREEN_NAME -p 0 -X stuff "say §aBackup complete!$(printf '\r')"
# Clean up old backups
find "$BACKUP_DIR" -name "worlds_*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "[$DATE] Backup complete: $BACKUP_DIR/worlds_$DATE.tar.gz"Scheduling with Cron
To run the script automatically with cron:
Add a cron job
# Back up every day at 04:00
0 4 * * * /opt/minecraft/minecraft-backup.sh >> /var/log/mc-backup.log 2>&1
# Back up every 6 hours
0 */6 * * * /opt/minecraft/minecraft-backup.sh >> /var/log/mc-backup.log 2>&1Do not forget to make the script executable:
Make the script executable
chmod +x /opt/minecraft/minecraft-backup.shWorld Optimization
World settings directly affect server performance. Entity management and chunk operations in particular need to be optimised.
Entity Limits
# bukkit.yml — Entity spawn limits
spawn-limits:
monsters: 50 # Default: 70
animals: 8 # Default: 10
water-animals: 3 # Default: 5
water-ambient: 10 # Default: 20
water-underground-creature: 3 # Default: 5
axolotls: 3 # Default: 5
ambient: 1 # Default: 15
ticks-per:
animal-spawns: 400 # Default: 400
monster-spawns: 4 # Default: 1 — raise it to save CPUChunk GC (Garbage Collection)
Clearing unused chunks out of memory optimises RAM usage:
# paper-world-defaults.yml (Paper 1.19+)
chunks:
max-auto-save-chunks-per-tick: 8
auto-save-interval: 6000 # every 5 minutes
delay-chunk-unloads-by: 10s # chunk unload delay
prevent-moving-into-unloaded-chunks: true
entity-per-chunk-save-limit:
arrow: 16
ender_pearl: 8
experience_orb: 16
fireball: 8
snowball: 8
small_fireball: 8Managing the Nether and the End
The Nether and End worlds need special attention. Limiting them and resetting them regularly is important.
Nether/End Links with Multiverse
You can manage Nether and End portal links with the Multiverse-NetherPortals plugin:
# plugins/Multiverse-NetherPortals/config.yml
worlds:
survival:
nether: survival_nether
end: survival_the_end
creative:
nether: creative_nether
end: creative_the_endResetting the End World Periodically
Resetting the End world periodically keeps the Elytra and Shulker Box economy in balance:
#!/bin/bash
# end-reset.sh — End world reset script
SERVER_DIR="/opt/minecraft"
SCREEN_NAME="minecraft"
# Warn the players
screen -S $SCREEN_NAME -p 0 -X stuff "say §c[!] The End world will be reset in 5 minutes!$(printf '\r')"
sleep 300
# Teleport players in the End back to spawn
screen -S $SCREEN_NAME -p 0 -X stuff "mv tp survival world_the_end$(printf '\r')"
sleep 5
# Unload and delete the world
screen -S $SCREEN_NAME -p 0 -X stuff "mv unload world_the_end$(printf '\r')"
sleep 3
screen -S $SCREEN_NAME -p 0 -X stuff "mv delete world_the_end$(printf '\r')"
screen -S $SCREEN_NAME -p 0 -X stuff "mv confirm$(printf '\r')"
sleep 5
# Recreate it
screen -S $SCREEN_NAME -p 0 -X stuff "mv create world_the_end THE_END$(printf '\r')"
sleep 10
screen -S $SCREEN_NAME -p 0 -X stuff "say §aThe End world has been reset! Happy exploring.$(printf '\r')"Importing and Exporting Worlds
Follow the steps below to bring existing worlds onto the server or export them from it:
Importing a World
- Copy the world folder into the server root directory (e.g.
/opt/minecraft/map_name/) - Make sure the folder contains a
level.datfile - Import it with the
/mv import map_name NORMALcommand - Test it with
/mv tp map_name
Exporting a World
Archive the world
cd /opt/minecraft
tar -czf survival_export.tar.gz survival/ --exclude=session.lockFrequently Asked Questions
How do I check the size of a world?
Check the world size
du -sh /opt/minecraft/survival/
du -sh /opt/minecraft/world_nether/
du -sh /opt/minecraft/world_the_end/How do I repair a corrupted chunk?
Corrupted chunks can be repaired with the MCA Selector tool or the --forceUpgrade parameter. Always take a backup first:
Upgrade the world chunks and clear the cache
cd /opt/minecraft && java -jar paper.jar --forceUpgrade --eraseCache