MinecraftWorld BorderPvPConfiguration12 min read

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

terminal
/worldborder center 0 0

Sets the center at X=0, Z=0 (usually spawn). You can use any coordinates.

πŸ’‘ Tip

To center the border at your current in-game position, use /worldborder center ~ ~ (only works from chat, not console).

2. Set the size (diameter)

terminal
/worldborder set 3000

Creates a 3000x3000 block border. The playable area goes from -1500 to +1500 on X and Z.

Other size examples:

CommandResult
/worldborder set 500Tiny map (500x500)
/worldborder set 1000Small map
/worldborder set 3000Medium map
/worldborder set 6000Large map
/worldborder set 10000Very large map

3. Verify the configuration

terminal
/worldborder get

Shows the current border diameter.

All World Border commands

CommandWhat 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 getShows 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

terminal
/worldborder center 0 0
/worldborder set 3000
/worldborder damage buffer 3
/worldborder damage amount 2
/worldborder warning distance 15

Example: Shrinking border (Battle Royale)

terminal
/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:

terminal
# 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
πŸ“ Nota

To 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:

properties
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:

FeatureWorld Bordermax-world-size
Visible wallYes (blue/red)No
Damage on crossingYes (configurable)No
Prevents generationYesYes
Can shrink over timeYesNo
Requires server restartNoYes

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

bash
cd /opt/minecraft/plugins
wget -O WorldBorder.jar https://dev.bukkit.org/projects/worldborder/files/latest
sudo systemctl restart minecraft

Main commands

terminal
# 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:

terminal
/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

bash
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

terminal
/chunky center 0 0
/chunky radius 1500
/chunky shape circle
/chunky border add
/chunky start

Explanation:

  • center 0 0 β†’ Border center
  • radius 1500 β†’ 1500 radius (3000 diameter)
  • shape circle β†’ Circular shape (also accepts square, diamond, pentagon, star)
  • border add β†’ Activates the border in the current world
  • start β†’ Begins chunk pre-generation

Available shapes

ShapeCommandDescription
Square/chunky shape squareSame as vanilla
Circle/chunky shape circleFairer for PvP
Diamond/chunky shape diamondRhombus rotated 45Β°
Triangle/chunky shape triangleTriangular area
Star/chunky shape starStar shape

Check pre-generation progress

terminal
/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:

terminal
world/datapacks/pvp-border/
β”œβ”€β”€ pack.mcmeta
└── data/
    └── pvp/
        └── function/
            β”œβ”€β”€ setup.mcfunction
            β”œβ”€β”€ phase1.mcfunction
            β”œβ”€β”€ phase2.mcfunction
            └── phase3.mcfunction

pack.mcmeta:

json
{
  "pack": {
    "pack_format": 48,
    "description": "PvP World Border Phases"
  }
}

setup.mcfunction:

terminal
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:

terminal
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:

terminal
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:

terminal
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

πŸ“ Nota

20 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:

terminal
/execute in minecraft:the_nether run worldborder center 0 0
/execute in minecraft:the_nether run worldborder set 375

Limit the End

terminal
/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:

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

terminal
/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.

⚠️ Importante

This 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:

  1. Download MCA Selector from its GitHub
  2. Open your world's region/ folder
  3. Select chunks outside the desired area
  4. Right-click β†’ Delete selected chunks
  5. 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:

properties
# 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

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

terminal
/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)

terminal
/chunky center 0 0
/chunky radius 1500
/chunky start

Wait for completion (may take 5-15 minutes depending on size).

4. Randomly distribute players

terminal
/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

terminal
/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:

terminal
/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

SituationDiameterEstimated duration
Intense 1v1200-5003-5 minutes
2-5 players quick PvP500-10005-10 minutes
5-10 players1000-200010-20 minutes
10-20 players2000-300015-30 minutes
20-50 players Battle Royale3000-500020-40 minutes
50+ players large event5000-800030-60 minutes
Survival with limit (permanent)5000-10000No time limit
Compact hardcore survival1000-3000No 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)

terminal
/chunky center 0 0
/chunky radius 1500
/chunky start

Progress: /chunky status

Pause: /chunky pause

Cancel: /chunky cancel

Estimated pre-generation time:

RadiusChunksApprox. time
500~3,1001-2 minutes
1000~12,4003-5 minutes
1500~27,9005-10 minutes
2500~77,50015-25 minutes
5000~310,00040-90 minutes

Vanilla method (no plugins)

From Minecraft 1.21+, you can force loading:

terminal
/forceload add -1500 -1500 1500 1500
⚠️ Importante

This 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 get that 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 2 so 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-distance to 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=false in server.properties.

Summary: which method to choose?

MethodDifficultyRequires pluginsCircular borderPre-generationAuto phases
Vanilla World BorderEasyNoNoNoManual
server.properties (max-world-size)EasyNoNoNoNo
WorldBorder pluginMediumYesYesYes (built-in)No
Chunky + Chunky BorderMediumYesYesYes (best)No
DatapacksAdvancedNoNoNoYes
MCA Selector (external)AdvancedNoAny shapeN/ANo

For most cases (like a PvP match with friends), Method 1 (vanilla World Border) is more than enough. You only need 2 commands:

terminal
/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 /spreadplayers to 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.

Was this guide helpful?