Better Pre-generated Worlds

From empty server to a finished world: pick terrain and a seed, size the border with real maths, run Chunky in every dimension from the panel, plan disk, build far-view data for Distant Horizons, trim and upgrade safely

Minecraft

21 min readIntermediateLast updated Oct 31, 2026

Generating new terrain is the most CPU-heavy thing a Minecraft server does. When players fly, sail or run into land nobody has seen yet, the server has to build it on the spot, and everyone online feels the lag. Pre-generating builds the world in advance, so exploring only has to load chunks from disk, which is far cheaper. Done well, it also gives you a better world: terrain you chose on purpose, a size that fits your community, a disk you won't run out of, and optional far views for players who use Distant Horizons.

What you'll end up with: a world with the terrain and seed you picked, a world border in every dimension, every chunk inside that border already generated, and a plan for keeping it tidy later.

Time: about 30 minutes of your time, plus several hours (often overnight) for the server to do the generating.

You need: a Paper or Purpur server (Fabric and NeoForge work too; differences are noted), access to the panel at game.crashcrafts.com, and enough free disk. If you're brand new, read Your first server checklist first.

1

Decide the terrain first

Custom terrain only applies to chunks generated after it's installed. Decide before you pre-generate. Changing your mind later means a new world, or a visible seam where old and new terrain meet.

Your options

Option What it changes Notes
Vanilla Nothing. Fastest to generate, smallest on disk, and every seed map website works for it.
Terralith (datapack) Almost 100 new biomes using only vanilla blocks. Maintained by Stardust Labs; works on Paper because it's a datapack.
Tectonic (datapack) Larger, more dramatic mountains, valleys, rivers and coasts. Its page lists the versions it currently supports; others don't get fixes.
Terralith + Tectonic Both together. Don't install them separately. Use Terratonic, the combined datapack Tectonic publishes for exactly this.
Incendium (datapack) Reworked Nether biomes and structures. Listed on Modrinth as Incendium Legacy. A biomes-only variant exists if you don't want its bosses and items.
Nullscape (datapack) A reworked End with strange new terrain. Maintained by Stardust Labs.
Structure packs Extra villages, ruins, dungeons. For example Dungeons and Taverns. Check each is a datapack, not a mod, if you run Paper.
Iris (plugin) A complete custom world engine with its own dimension packs. Paid on SpigotMC. Its source is open (GPL) but there are no free ready-made downloads. Very heavy to generate.

Datapacks like these need no mods, so they run on Paper and Purpur. Before installing one, open its page and check it supports your exact Minecraft version. A pack built for another version can fail to load or produce broken terrain.

Install a terrain datapack on a fresh world

Datapacks for terrain must be in place before the world is first created. The safest order is:

  1. Stop the server.
  2. Open Files. If a world already exists and you're happy to lose it, delete it: the world folder (or whatever level-name is in server.properties). On Minecraft versions before 26.1, also delete world_nether and world_the_end. On 26.1 and newer, Paper stores every dimension inside world/dimensions/, so deleting world removes them all.
  3. Get the datapack into world/datapacks/:
    • CurseForge page: search for the pack and install it. Data packs from there go into <level-name>/datapacks for you.
    • By hand: create the folder world/datapacks/ in Files (use New Folder twice), then Upload the pack's .zip. Don't unzip it.
  4. Start the server. It creates the world using the datapack.
  5. In the Console, run datapack list. Your pack should show under the enabled packs, for example [file/Terralith.zip].
  6. Join and press F3. The biome name on the left should show the pack's namespace (for example terralith: biomes) once you walk into one.

If the pack isn't listed, check the zip is directly in world/datapacks/, not inside another folder, and that it supports your version.

Pick the seed

The seed decides where everything is. A good seed has an interesting spawn, biomes nearby and structures within reach.

  1. Find candidates. For vanilla, seed-map websites show biomes and structures for any seed and version. For custom terrain, seed maps are wrong, because they only know vanilla generation. Test those seeds yourself instead.

  2. Test in single-player: create a world with the same Minecraft version, the same datapacks and the seed, and fly around spawn for a few minutes.

  3. Put the seed in server.properties before the world is created:

    level-seed=-4172144997902289642
    
  4. Start the server and check with the seed command in the console.

2

Install Chunky

Chunky is the standard pre-generator. It asks the server to generate chunks as fast as the hardware allows, saves its progress, and can trim chunks later.

  • Paper / Purpur: open Minecraft Plugins, search for Chunky, and choose the download icon. Install plugins
  • Fabric: install the Chunky mod plus Fabric API from Minecraft Plugins.
  • NeoForge / Forge: install the matching Chunky mod.

Optionally install Chunky Border too, if you want a round or other non-square border (see step 4).

Restart the server, then run chunky in the Console. A help list means it's working.

3

Do the world border maths

A world border stops players walking past the land you pre-generated. Too small and the world feels cramped; too big and it takes days to generate and fills your disk. Size it to your community, then check the numbers.

Pick a radius

Players Border radius (blocks from centre) Border width (for /worldborder set)
Up to 10 2,000–3,000 4,000–6,000
10–40 5,000 10,000
40–100 7,500 15,000
100+ or long-running worlds 10,000 20,000

Start smaller than you think. You can always grow the border and pre-generate the new ring later; shrinking it means trimming.

Blocks to chunks to regions

A chunk is 16 × 16 blocks. A region file holds 32 × 32 chunks, which is 512 × 512 blocks.

For a square of radius R blocks:

  • Chunks = (2R ÷ 16)²
  • Region files = (2R ÷ 512)²
  • A circle of the same radius is about 78.5 % of that (π ÷ 4).
Radius Chunks (square) Chunks (circle) Region files (square)
2,000 62,500 49,000 61
3,000 140,625 110,000 137
5,000 390,625 307,000 381
7,500 878,906 690,000 858
10,000 1,562,500 1,227,000 1,526

The number grows with the square of the radius: doubling the radius means four times the chunks, time and disk.

Disk estimate

There's no exact figure, because it depends on the Minecraft version, terrain and dimension. A useful rule of thumb for a modern vanilla Overworld is about 1 GB per 100,000 chunks, give or take half. Custom terrain like Terralith or Tectonic is often a third bigger or more.

Radius Square, vanilla, roughly With custom terrain, roughly
2,000 0.5–1 GB 0.7–1.5 GB
5,000 2–6 GB 3–8 GB
10,000 8–25 GB 10–30 GB

Then add:

  • The Nether and the End (usually much smaller, see step 6).
  • Backups. Every backup is roughly the size of everything on the server, compressed somewhat. Several backups of a 10 GB world need a lot of room.
  • Growth. Players' builds, farms and storage add to the world over time.

Measure your own number: pre-generate a small test (radius 1,000 = 15,625 chunks), check the size of the world folder on Files, and multiply up. Then compare with your plan's disk shown on the Console page.

Time estimate

Time = chunks ÷ chunks per second. Chunky prints chunks per second (cps) as it runs. Speed depends on the CPU, the server software and the terrain, so measure it in the first few minutes rather than trusting a guess.

Chunks At 50 cps At 100 cps At 200 cps
140,625 (radius 3,000) 47 min 23 min 12 min
390,625 (radius 5,000) 2 h 10 min 1 h 5 min 33 min
1,562,500 (radius 10,000) 8 h 40 min 4 h 20 min 2 h 10 min

Heavy datapacks or a plugin world generator can be several times slower. That's why overnight is the usual plan.

4

Set the world border

Option A: the vanilla border (square, visible in-game)

In the Console:

worldborder center 0 0
worldborder set 10000

worldborder set takes the border's width. 10000 gives 5,000 blocks each way from the centre. Chunky works in a radius, so its numbers are half of this.

Check it with worldborder get, which prints the width.

Option B: Chunky Border (any shape)

Chunky Border is Chunky's official add-on. It supports every shape Chunky can generate (circle, diamond and more) and draws the border on BlueMap, Dynmap, squaremap and Pl3xMap. Unlike the vanilla border it isn't a visible wall; players who walk past it are pushed back.

chunky world world
chunky shape circle
chunky center 0 0
chunky radius 5000
chunky border add

Useful commands:

Command What it does
chunky border add Creates a border from your current Chunky selection.
chunky border list Lists all saved borders.
chunky border load Loads a world's border as your selection (handy for pre-generating it).
chunky border remove Removes the border in the selected world.
chunky border wrap Toggles wrap-around: walk off one edge, appear on the other.
chunky border bypass Temporarily lets you pass the border.

Staff who need to go outside can have chunkyborder.bypass.move.

5

Pre-generate the Overworld

Prepare the server

  1. Make a backup on Backups and lock it. If anything goes wrong, you can start again.

  2. Keep players out. Generation uses all your CPU. Turn the whitelist on with whitelist on in the console if people might join.

  3. Don't let the server pause. Newer Minecraft versions pause an empty server after a while, which also stops Chunky. In server.properties (with the server stopped), set:

    pause-when-empty-seconds=-1
    

    If your version doesn't have this setting, it doesn't pause and you can skip it.

  4. Pause map rendering. If you run BlueMap, Dynmap or squaremap, pause or stop its rendering during generation, then render once at the end. It's faster and the maps come out cleaner.

  5. Check free disk on the Console page against your estimate from step 3.

Run Chunky

In the Console (no slash needed there; in-game, add /):

chunky world world
chunky worldborder
chunky start

chunky worldborder copies the vanilla border's centre and size into Chunky, so they always match. To set them yourself instead:

chunky world world
chunky shape square
chunky center 0 0
chunky radius 5000
chunky selection
chunky start

chunky selection prints exactly what will be generated. Read it before chunky start.

Every Chunky command you'll use

Command What it does
chunky world <name> Selects the world. With no name in-game, selects the world you're standing in.
chunky shape <shape> square (default), circle, diamond, triangle, pentagon, hexagon, star, rectangle, ellipse.
chunky center <x> <z> Sets the centre. chunky spawn centres on world spawn instead.
chunky radius <r> Sets the radius in blocks. Accepts 10k (10,000 blocks), 625c (625 chunks), +1k and -1k to grow or shrink. Two values for a rectangle or ellipse.
chunky corners <x1> <z1> <x2> <z2> Selects by two corners instead.
chunky worldborder Uses the current world border as the selection.
chunky pattern <pattern> The order chunks are generated in. Leave it at the default (concentric, from the centre outward).
chunky selection Shows the current selection.
chunky start Starts generating the selection.
chunky pause Pauses all tasks and saves progress.
chunky continue Resumes saved tasks.
chunky cancel Stops and deletes the task (generated chunks stay). It can't be resumed.
chunky progress Shows progress in-game.
chunky quiet <seconds> Prints progress less often.
chunky silent Turns progress messages off and on.
chunky trim Deletes chunks outside the selection. See step 9.

Watching progress

The console prints lines with the task, the number of chunks done, the percentage, the ETA and the rate in chunks per second. Note the rate after a few minutes and check it against your time estimate.

Restarts and stopping halfway

  • chunky pause saves progress; chunky continue picks up where it left off.
  • A normal stop or restart also saves the task, but by default Chunky doesn't start again on its own after a restart. Run chunky continue once the server is back up.
  • To make it carry on automatically, set continue-on-restart: true in plugins/Chunky/config.yml (on Fabric/NeoForge, config/chunky.json), then chunky reload.
  • Running it again over an area that's already generated is safe. Chunky skips existing chunks.

Running it from the panel on a timer

If players use the server during the day, generate at night with two schedules on Schedules (times are UTC; see Schedules):

Schedule Cron (minute, hour) Task
Pre-gen start 0 6 (2:00 am EDT) Send Command chunky continue
Pre-gen stop 0 12 (8:00 am EDT) Send Command chunky pause

Start the task once by hand with chunky start, then let the schedules pause and resume it until it's done. Turn Only when Server is Online? on for both. Delete the schedules when generation finishes.

Make it faster

  • Nobody online. Every player adds load and slows Chunky down.
  • Memory. Generation churns through memory. 6 GB or more makes big runs smoother on Paper.
  • Worker threads. Paper's config/paper-global.yml has chunk-system.worker-threads (default -1, automatic). Chunky's own advice is that raising it temporarily can help on servers with few threads. Put it back to -1 when you're done.
  • Remove what you don't need while generating: map rendering, and any plugin that reacts to every new chunk.
6

The Nether and the End

World names

The Nether and the End are separate worlds, and their names depend on your server:

  • Paper before Minecraft 26.1: world_nether and world_the_end.
  • Paper on 26.1 and newer: the files moved into world/dimensions/minecraft/the_nether and .../the_end. Plugins may show the names differently.
  • Fabric and NeoForge: minecraft:the_nether and minecraft:the_end.

The reliable way to get the right name: go into the Nether in-game, run /chunky world with no name (it selects the world you're in), then /chunky selection. It prints the name to use in the console.

Nether

One block in the Nether is eight in the Overworld, so the Nether needs a much smaller radius. Overworld radius ÷ 8 covers every portal players can build inside your border.

chunky world world_nether
chunky radius 625
chunky start

Set a border there too (width = 2 × radius):

execute in minecraft:the_nether run worldborder center 0 0
execute in minecraft:the_nether run worldborder set 1250

Many servers go a bit bigger (for example 1,000 radius) for Nether exploration. That's fine; it's cheap.

End

The main island sits at the centre; the outer islands start about 1,000 blocks out. A radius of 2,000–3,000 gives players outer islands to explore:

chunky world world_the_end
chunky radius 3000
chunky start
execute in minecraft:the_end run worldborder set 6000
7

Check the result

Don't trust it until you've looked:

  1. chunky progress says every task is complete.
  2. On Files, check the size of the world folder against your estimate.
  3. Join, switch to spectator (/gamemode spectator) and fly to the border in a few directions. Terrain should appear instantly with no generation lag. While flying, run spark tps in the console: TPS should stay near 20.
  4. Walk into a few biomes and press F3 to confirm custom biomes, if you installed a pack.
  5. Check animals exist near the edge. If they don't, see Common problems below.
  6. Render your web map now, if you have one.
  7. Make a locked backup called something like Fresh pre-generated world. This is your clean restore point.
  8. Turn the whitelist back off (whitelist off) if you're opening to the public, and set pause-when-empty-seconds back to its old value if you want the pause feature.
8

Far views for Distant Horizons and Voxy players

Distant Horizons and Voxy are client mods that draw simplified terrain (LODs) far beyond normal view distance. On their own, players only see far terrain they've already visited. A server can send them ready-made far-view data for the whole pre-generated world.

Option A: Chunksmith (generation and LOD in one pass)

Chunksmith started as a fork of Chunky and does everything Chunky does, plus it builds Distant Horizons or Voxy LOD data while it pre-generates. It ships as a Paper/Spigot plugin and as Fabric, NeoForge and Forge mods. It does not support Folia.

Server setup:

  1. Remove Chunky if you installed it (Chunksmith answers to /chunky too), then install Chunksmith from Minecraft Plugins and restart.

  2. Ask us for an extra port. Players download LOD data over a small web listener on a second TCP port. By default it uses your game port + 1, which on our panel usually isn't yours. Once the new port shows on Network, set it:

    cs set lodBackchannelPort 40032
    

    Use your extra port. Settings apply live; there's no file to edit.

  3. Pre-generate with the same commands as Chunky, under cs:

    cs world world
    cs spawn
    cs radius 5000
    cs start
    
  4. Check it with cs status and cs lod status. They show whether the LOD listener is running and on which port.

Player setup: each player installs Chunksmith (the client mod, Fabric or NeoForge) plus Distant Horizons or Voxy. Voxy is Fabric-only. When they join, they download the LOD data and can see to the edge of your world. /csclient status on their side shows whether it's working.

Keep versions matched. Chunksmith's server and client must be on the same major version (a 3.x server and 4.x client turn LOD off). A launcher can update players without the server, so update both together and tell players.

On the plugin there's no fallback. If the extra port is blocked or wrong, players get no far terrain at all. That's the first thing to check.

Huge views without the disk: cs horizon 4000 keeps fully saved chunks only inside 4,000 blocks, and past that builds LOD data and throws the chunk away. Players see far terrain without you storing it. On Paper, some partly generated edge chunks are still written.

Option B: Distant Horizons Support (plugin)

Distant Horizons Support is a Paper/Spigot plugin that generates and sends Distant Horizons' own data, so players only need Distant Horizons (no extra client mod). Check its page for which Distant Horizons versions it supports, and its wiki for setup. Pre-generate with Chunky first, so it isn't generating terrain on demand.

Which to choose

Chunksmith Distant Horizons Support
Players install Chunksmith + DH or Voxy DH only
Works with Voxy Yes No
Extra port Yes (TCP) See its wiki
Replaces Chunky Yes No, use alongside Chunky

Raising view-distance doesn't help LOD players, and it costs a lot of CPU. Leave it at 8–10 and let the far-view tools do the distant work.

9

Trim chunks you don't need

Over time, worlds collect chunks nobody needs: land outside a shrunk border, or areas players only flew over. Trimming deletes them, which shrinks the world and its backups.

Remove everything outside the border

Give the full command, so nothing is left to a stale selection:

chunky trim world square 0 0 5000

This keeps a square of radius 5,000 around 0, 0 in world and deletes everything outside it.

Remove only chunks nobody has used

Minecraft records how long players have spent near each chunk (its inhabited time, in ticks; 20 ticks = 1 second). Chunky can trim only chunks below a threshold:

chunky trim world square 0 0 5000 outside 1200

That deletes chunks outside the radius that players have spent one minute or less near. Builds people actually used stay. Use inside instead of outside to trim within the area instead.

After trimming

  1. Restart the server. Chunky's docs say this is required, so deleted chunks aren't kept in memory.
  2. Re-render your web map, so deleted land disappears from it. For BlueMap: bluemap purge <map>, then let it render.
  3. Check the size on Files and make a fresh backup.
10

Grow the world later

When players run out of room, grow the border and generate only the new ring:

  1. Make a backup.
  2. worldborder set 14000 (from 10,000 wide to 14,000: radius 5,000 to 7,000).
  3. chunky worldborder, then chunky start. Existing chunks are skipped, so only the new ring is generated.
  4. Grow the Nether to match (radius ÷ 8).

Announce it: a new ring of fresh land is a good event.

11

Upgrading the world to a new Minecraft version

When you move to a newer Minecraft version, old chunks are upgraded when they're first loaded. That's normally fine, but on a big world it means lag spikes when players visit old areas for the first time.

  1. Make a locked backup and download it. Worlds can't be downgraded. Once a world has been opened on a newer version, the old version can't load it again. Moving to Minecraft 26.1 also converts Paper's folder layout to world/dimensions/, and Paper warns there's no way back.
  2. Check every datapack and plugin has a release for the new version. A terrain datapack missing for the new version means new chunks generate without it.
  3. Change the version on Startup and start. Change version
  4. Optional: upgrade every chunk at once. The server's --forceUpgrade start-up option converts the whole world during start-up, so players never hit an un-upgraded chunk. It can take a long time on a big world, and the server isn't joinable until it's done. Contact us to add it to your start command for one start, then remove it again.

Don't use --eraseCache unless we suggest it; it only deletes cached data the server rebuilds anyway.

Common problems

Problem Fix
Datapack terrain doesn't appear The world existed before the pack. New terrain only appears in new chunks. Start a new world with the pack in world/datapacks/ before the first start. Check datapack list.
Datapack missing from datapack list The zip is inside another folder, unzipped wrongly, or built for a different Minecraft version.
A seam where terrain changes suddenly Chunks generated before and after a datapack was added. Trim the newer area or start a new world.
Chunky stopped overnight The server paused when empty (pause-when-empty-seconds), restarted (run chunky continue, or turn on continue-on-restart), or the disk filled up.
Very slow chunks per second Players online, map rendering running, a heavy datapack or plugin generator, or too little memory.
Server crashes or freezes while generating Usually another plugin or datapack. Test with only Chunky installed. Check the console for the plugin named in the error.
No animals near the edge of the world The border was smaller than the area generated. Animals don't spawn outside the border when chunks are made. Restore a backup, or trim and regenerate those chunks with the border at the full size.
Buried treasure maps lead to empty spots A known Minecraft issue after pre-generation. Chunky's docs give the Paper fix: set environment.treasure-maps.find-already-discovered.loot-tables to false in config/paper-world-defaults.yml.
Ran out of disk Pause, delete old backups or trim, and size the border from a measured test next time.
Distant Horizons players see nothing far away The LOD port isn't allocated or set, versions don't match, or DH is installed on the server. See step 8.
chunky world world_nether says the world doesn't exist Your version names it differently. Use /chunky world in-game while standing in the Nether.

Going further

  • Keep the border inside what you generated, so players never reach brand-new terrain.
  • Pre-generating doesn't fix lag from farms, redstone or too many mobs. Fix lag
  • Running a full survival community? The advanced SMP guide builds on this world.
  • Schedule regular backups before you open. Backup schedules