- Home
- Guides
- Game Servers
- Minecraft
- Limit world size in Minecraft
Limit world size in Minecraft
Complete guide with all methods to shrink the map: World Border, plugins, datapacks, server.properties and external tools. Ideal for PvP, events and controlled survival.
Why limit the world size?
Minecraft generates practically infinite worlds (60 million blocks in each direction). This is great for survival, but for many situations you need a smaller map:
- Free-for-all PvP: If the world is infinite, players spread out and never find each other. A 3000x3000 block map forces encounters.
- Battle Royale: A border that shrinks over time creates increasing tension.
- Events and minigames: Compact maps for UHC, Hunger Games, SkyWars, etc.
- Controlled survival: Prevent players from wandering too far and forcing the server to generate infinite chunks (which consumes RAM and disk).
- Server performance: Less terrain = fewer loaded chunks = better TPS (ticks per second).
This guide explains all available methods to limit the world, from the simplest (one command) to advanced configurations with plugins and external tools.
Basic concepts before starting
- Block: The minimum unit of the world (1x1x1 virtual meter).
- Chunk: A 16x16 block wide, 384 block tall segment. The server loads the world in chunks.
- X, Y, Z Coordinates: X and Z are horizontal, Y is height. Point 0,0 is usually spawn.
- Diameter vs Radius: A 3000-block diameter border = 1500 radius (area from -1500 to +1500).
- Dimensions: Overworld (normal world), Nether (underworld) and End. Each can have its own border.
- Pre-generation: Creating chunks beforehand to avoid lag when players explore.
Method 1: Native World Border (no plugins, no mods)
Since Minecraft 1.8, the game includes a built-in World Border system. It's the easiest method: requires no installation and works on any server (Vanilla, Spigot, Paper, Fabric, Purpur, etc.).
How it works
The World Border is an invisible wall with a visual effect (blue when stationary, red when moving) surrounding a square area. Players cannot cross the wall, and if they end up outside they take progressive damage.
Step-by-step configuration
Run these commands from the server console or in chat as an operator (OP):
1. Set the border center
/worldborder center 0 0
Sets the center at X=0, Z=0 (usually spawn). You can use any coordinates.
π‘ TipTo center the border at your current in-game position, use
/worldborder center ~ ~(only works from chat, not console).
2. Set the size (diameter)
/worldborder set 3000
Creates a 3000x3000 block border. The playable area goes from -1500 to +1500 on X and Z.
Other size examples:
| Command | Result |
|---|---|
/worldborder set 500 | Tiny map (500x500) |
/worldborder set 1000 | Small map |
/worldborder set 3000 | Medium map |
/worldborder set 6000 | Large map |
/worldborder set 10000 | Very large map |
3. Verify the configuration
/worldborder get
Shows the current border diameter.
All World Border commands
| Command | What it does |
|---|---|
/worldborder center <x> <z> | Sets the border center |
/worldborder set <diameter> | Sets the size instantly |
/worldborder set <diameter> <seconds> | Changes size gradually over X seconds |
/worldborder add <blocks> | Adds blocks to current size (negative to shrink) |
/worldborder add <blocks> <seconds> | Adds/removes gradually |
/worldborder get | Shows current size |
/worldborder damage amount <number> | Damage per block per second outside border |
/worldborder damage buffer <blocks> | Safe zone before taking damage |
/worldborder warning distance <blocks> | Distance at which the red warning appears |
/worldborder warning time <seconds> | Warning when border arrives in X seconds |
Complete example: 3000x3000 map for PvP
/worldborder center 0 0
/worldborder set 3000
/worldborder damage buffer 3
/worldborder damage amount 2
/worldborder warning distance 15
Example: Shrinking border (Battle Royale)
/worldborder center 0 0
/worldborder set 3000
/worldborder set 50 900
Starts at 3000x3000 and shrinks to 50x50 in 900 seconds (15 minutes). Perfect for forcing a final confrontation.
Example: Phased reduction
If you want the border to shrink in stages (like Fortnite/PUBG), use a datapack or command blocks with delays:
# Phase 1: Initial size (no movement for 5 minutes)
/worldborder set 3000
# Phase 2: Shrinks to 1500 in 3 minutes (run after 5 min)
/worldborder set 1500 180
# Phase 3: Shrinks to 500 in 2 minutes (run after 8 min)
/worldborder set 500 120
# Phase 4: Shrinks to 50 in 1 minute (run after 10 min)
/worldborder set 50 60
π NotaTo automate phases, use a Datapack with schedule or the AdvancedWorldBorder plugin.
Method 2: Limit with server.properties (preventive)
The server.properties file has an option that isn't a visual border, but prevents chunk generation beyond a certain point. It doesn't create a visible wall but saves server resources.
Option: max-world-size
Open server.properties and find or add:
max-world-size=1500
This limits the world radius to 1500 blocks (3000 diameter). The server simply won't generate terrain beyond that point.
Differences from World Border:
| Feature | World Border | max-world-size |
|---|---|---|
| Visible wall | Yes (blue/red) | No |
| Damage on crossing | Yes (configurable) | No |
| Prevents generation | Yes | Yes |
| Can shrink over time | Yes | No |
| Requires server restart | No | Yes |
Recommendation: Use max-world-size as a complement to World Border. This ensures that even if someone exploits a bug, the server won't generate extra chunks.
Method 3: WorldBorder plugin (Bukkit/Spigot/Paper)
The classic WorldBorder plugin adds features that vanilla doesn't have: circular borders, integrated pre-generation, and per-world configuration.
Installation
cd /opt/minecraft/plugins
wget -O WorldBorder.jar https://dev.bukkit.org/projects/worldborder/files/latest
sudo systemctl restart minecraft
Main commands
# Square border of 3000 radius, centered at 0,0
/wb world set 3000 0 0
# Change to circular border
/wb world shape circular
# Pre-generate chunks within the border
/wb world fill
/wb fill confirm
# View current configuration
/wb world
# Remove world border
/wb world clear
Circular PvP configuration
A circular border is fairer for PvP because it has no "corners" to hide in:
/wb world set 1500 0 0
/wb world shape circular
/wb world fill
/wb fill confirm
Creates a circular area with 1500 block radius (3000 diameter) and pre-generates everything.
Advantages over vanilla
- Circular border (vanilla only supports square)
- Integrated pre-generation (no extra plugin needed)
- Per-world configuration (Overworld, Nether, End separately)
- Configurable knockback on border touch
- Custom messages
Method 4: Chunky + Chunky Border (recommended for 2024-2026)
Chunky is the most used chunk pre-generator currently, and its Chunky Border extension adds modern borders with multiple shapes.
Installation
cd /opt/minecraft/plugins
wget -O Chunky.jar https://github.com/pop4959/Chunky/releases/latest/download/Chunky.jar
wget -O ChunkyBorder.jar https://github.com/pop4959/ChunkyBorder/releases/latest/download/ChunkyBorder.jar
sudo systemctl restart minecraft
Set up border and pre-generate
/chunky center 0 0
/chunky radius 1500
/chunky shape circle
/chunky border add
/chunky start
Explanation:
center 0 0β Border centerradius 1500β 1500 radius (3000 diameter)shape circleβ Circular shape (also acceptssquare,diamond,pentagon,star)border addβ Activates the border in the current worldstartβ Begins chunk pre-generation
Available shapes
| Shape | Command | Description |
|---|---|---|
| Square | /chunky shape square | Same as vanilla |
| Circle | /chunky shape circle | Fairer for PvP |
| Diamond | /chunky shape diamond | Rhombus rotated 45Β° |
| Triangle | /chunky shape triangle | Triangular area |
| Star | /chunky shape star | Star shape |
Check pre-generation progress
/chunky status
/chunky pause
/chunky continue
/chunky cancel
Method 5: Datapacks for custom borders
If you don't want plugins but need more control than vanilla, you can use Datapacks (work on vanilla and Paper servers).
Datapack with automatic border phases
Create this structure in the world folder:
world/datapacks/pvp-border/
βββ pack.mcmeta
βββ data/
βββ pvp/
βββ function/
βββ setup.mcfunction
βββ phase1.mcfunction
βββ phase2.mcfunction
βββ phase3.mcfunction
pack.mcmeta:
{
"pack": {
"pack_format": 48,
"description": "PvP World Border Phases"
}
}
setup.mcfunction:
worldborder center 0 0
worldborder set 3000
worldborder warning distance 20
worldborder damage amount 1.5
worldborder damage buffer 3
tellraw @a {"text":"Border set: 3000x3000","color":"green"}
schedule function pvp:phase1 6000t
phase1.mcfunction:
worldborder set 1500 180
title @a title {"text":"Zone shrinking!","color":"red"}
tellraw @a {"text":"Border shrinking to 1500x1500 in 3 minutes","color":"yellow"}
schedule function pvp:phase2 5400t
phase2.mcfunction:
worldborder set 500 120
title @a title {"text":"Danger zone!","color":"dark_red"}
tellraw @a {"text":"Border shrinking to 500x500 in 2 minutes","color":"yellow"}
schedule function pvp:phase3 3600t
phase3.mcfunction:
worldborder set 50 60
title @a title {"text":"FINAL ZONE!","color":"dark_red","bold":true}
tellraw @a {"text":"Border shrinking to 50x50 in 1 minute. FIGHT!","color":"red"}
To activate: /function pvp:setup
π Nota20 ticks = 1 second. So 6000t = 5 minutes, 5400t = 4.5 minutes, 3600t = 3 minutes.
Method 6: Limit the Nether and End
The World Border applies per dimension. If you only limit the Overworld, players can go to the Nether, walk far, and return to the Overworld outside the border.
Limit the Nether
In the Nether, 1 block equals 8 Overworld blocks. If your border is 3000 in the Overworld, the Nether should be 3000/8 = 375:
/execute in minecraft:the_nether run worldborder center 0 0
/execute in minecraft:the_nether run worldborder set 375
Limit the End
/execute in minecraft:the_end run worldborder center 0 0
/execute in minecraft:the_end run worldborder set 3000
Disable portals (alternative)
If you'd rather players not access the Nether/End during the PvP match, edit server.properties:
allow-nether=false
For the End, you can destroy the portal or use a protection plugin.
Method 7: Fixed map plugins (delete chunks outside border)
If you want the world outside the border to simply not exist (empty void), you can use tools to delete excess chunks.
With the WorldBorder plugin
/wb world trim
/wb trim confirm
This permanently deletes all chunks outside the defined border. The world generates void if anyone tries to go beyond.
β οΈ ImportanteThis is irreversible. Make a backup first.
With MCA Selector (external tool)
MCA Selector is a desktop program that lets you select and delete chunks graphically:
- Download MCA Selector from its GitHub
- Open your world's
region/folder - Select chunks outside the desired area
- Right-click β Delete selected chunks
- Save and upload the world to the server
Useful for creating custom maps with irregular shapes.
Method 8: Advanced configuration with server.properties
Several options in server.properties complement the world limit:
# Maximum world radius (in blocks from center)
max-world-size=1500
# Spawn protection (radius where only OPs can modify)
spawn-protection=0
# Render distance (less = better performance)
view-distance=8
# Simulation distance (mobs, redstone, etc.)
simulation-distance=6
# Limit chunk generation rate
max-chained-neighbor-updates=1000000
Complete setup for a "Free-for-All" PvP match
Here's a complete step-by-step setup to organize a PvP match with a limited world:
1. Configure server.properties
pvp=true
difficulty=hard
spawn-protection=0
max-world-size=1500
view-distance=8
simulation-distance=6
gamemode=survival
force-gamemode=true
natural-regeneration=true
max-players=30
2. Prepare the world
/worldborder center 0 0
/worldborder set 3000
/worldborder damage buffer 3
/worldborder damage amount 1.5
/worldborder warning distance 15
3. Pre-generate chunks (if using Chunky)
/chunky center 0 0
/chunky radius 1500
/chunky start
Wait for completion (may take 5-15 minutes depending on size).
4. Randomly distribute players
/spreadplayers 0 0 100 1400 false @a
Teleports all players to random positions with minimum 100 blocks between each other, within a 1400 radius (leaving margin from the 1500 border).
5. Start the match
/title @a title {"text":"FIGHT!","color":"red","bold":true}
/title @a subtitle {"text":"Last one standing wins","color":"gray"}
/worldborder set 100 900
6. Starter kits (optional)
If using EssentialsX:
/give @a iron_sword 1
/give @a iron_pickaxe 1
/give @a cooked_beef 32
/give @a oak_log 64
Recommended sizes for your situation
| Situation | Diameter | Estimated duration |
|---|---|---|
| Intense 1v1 | 200-500 | 3-5 minutes |
| 2-5 players quick PvP | 500-1000 | 5-10 minutes |
| 5-10 players | 1000-2000 | 10-20 minutes |
| 10-20 players | 2000-3000 | 15-30 minutes |
| 20-50 players Battle Royale | 3000-5000 | 20-40 minutes |
| 50+ players large event | 5000-8000 | 30-60 minutes |
| Survival with limit (permanent) | 5000-10000 | No time limit |
| Compact hardcore survival | 1000-3000 | No time limit |
Chunk pre-generation: why it's mandatory
When a player enters a chunk that was never visited, the server has to generate it in real-time (calculate terrain, caves, structures, biomes). This causes momentary lag.
If 20 players spread out at the start of a PvP match, the server generates 20+ chunks simultaneously β massive lag β horrible experience.
Solution: pre-generate everything before players join.
With Chunky (recommended method)
/chunky center 0 0
/chunky radius 1500
/chunky start
Progress: /chunky status
Pause: /chunky pause
Cancel: /chunky cancel
Estimated pre-generation time:
| Radius | Chunks | Approx. time |
|---|---|---|
| 500 | ~3,100 | 1-2 minutes |
| 1000 | ~12,400 | 3-5 minutes |
| 1500 | ~27,900 | 5-10 minutes |
| 2500 | ~77,500 | 15-25 minutes |
| 5000 | ~310,000 | 40-90 minutes |
Vanilla method (no plugins)
From Minecraft 1.21+, you can force loading:
/forceload add -1500 -1500 1500 1500
β οΈ ImportanteThis loads all chunks into RAM simultaneously. Only viable for small areas (less than 500 block radius) or servers with plenty of RAM.
Common troubleshooting
"The border doesn't appear"
- Make sure you're looking in the right direction and approaching the limit. The visual effect only shows when you're close.
- Check with
/worldborder getthat the size isn't the default (60 million). - Remember the border applies per dimension. If you're in the Nether, the Overworld border won't show there.
"Players pass through the border"
- This can happen with high lag. Make sure the server has good TPS (check with
/tps). - Enable damage:
/worldborder damage amount 2so they take damage and have to return. - With plugins like Chunky Border, knockback is more reliable.
"Lag when the match starts"
- You didn't pre-generate chunks. Do it with Chunky before starting.
- Reduce
view-distanceto 6-8 in server.properties. - Use optimized JVM flags (Aikar's flags) in your start script.
"Players spawn outside the border with /spreadplayers"
- The maximum distance value in spreadplayers must be less than the border radius.
- If the border is 3000 diameter (radius 1500), use:
/spreadplayers 0 0 50 1400 false @a - The second number (1400) is the maximum distance from center. Leave a 100-block margin.
"I want a circular border but I'm on vanilla"
- Vanilla World Border only supports squares. For circular you need a plugin (Chunky Border or WorldBorder).
- Alternative: use a larger square border to compensate for corners.
"How do I make the border shrink in phases instead of gradually?"
- Use a datapack with
schedule(see Method 5 above). - Or use command blocks with redstone delay.
- Or the AdvancedWorldBorder plugin which has configurable phases.
"The Nether allows escaping the border"
- The Nether has 1:8 scale. If your border is 3000 in Overworld, set 375 in the Nether.
- Command:
/execute in minecraft:the_nether run worldborder set 375 - Or disable the Nether with
allow-nether=falsein server.properties.
Summary: which method to choose?
| Method | Difficulty | Requires plugins | Circular border | Pre-generation | Auto phases |
|---|---|---|---|---|---|
| Vanilla World Border | Easy | No | No | No | Manual |
| server.properties (max-world-size) | Easy | No | No | No | No |
| WorldBorder plugin | Medium | Yes | Yes | Yes (built-in) | No |
| Chunky + Chunky Border | Medium | Yes | Yes | Yes (best) | No |
| Datapacks | Advanced | No | No | No | Yes |
| MCA Selector (external) | Advanced | No | Any shape | N/A | No |
For most cases (like a PvP match with friends), Method 1 (vanilla World Border) is more than enough. You only need 2 commands:
/worldborder center 0 0
/worldborder set 3000
And that's it. Your 3000x3000 world is set up.
Final recommendations
- For quick PvP: Use vanilla World Border + pre-generation with Chunky. It's the simplest and most effective.
- Always pre-generate: No matter which method you choose, pre-generating chunks prevents lag. It's the most important step.
- Test before the event: Test with 2-3 players to verify everything works before inviting the whole group.
- Backup: Before trimming or deleting chunks, backup your world.
- A shrinking border is much more exciting than a static one for PvP matches.
- Use
/spreadplayersto distribute players at the start and avoid everyone spawning together. - On Baires Host servers, you can run all these commands from the web panel console or via RCON.