Skip to main content

Overview

World pruning allows you to selectively keep or remove specific regions of your world during conversion. This is useful for:
  • Reducing world file size
  • Removing unused or unwanted areas
  • Keeping only specific regions (spawn area, builds, etc.)
  • Creating smaller test worlds

Configuration File

Pruning is configured via pruning.chunker.json placed in your world folder or specified with the -p flag.

File Structure

The pruning configuration uses a dimension-based structure (DimensionPruningList.java:1-33, CLI.java:196-210):
pruning.chunker.json
{
  "configs": [
    {
      "include": true,
      "regions": [
        {
          "minChunkX": -10,
          "minChunkZ": -10,
          "maxChunkX": 10,
          "maxChunkZ": 10
        }
      ]
    },
    null,
    null
  ]
}
The configs array is ordered by dimension: [OVERWORLD, NETHER, THE_END] (Dimension.java:19-23).

Dimension Order

The configs array follows Minecraft’s dimension order:
  • Index 0: Overworld (minecraft:overworld)
  • Index 1: Nether (minecraft:the_nether)
  • Index 2: The End (minecraft:the_end)
Use null for dimensions you don’t want to prune. Missing dimensions or null values mean no pruning will occur.

Configuration Fields

Pruning Config

include
boolean
default:"true"
Whether to include or exclude the specified regions (PruningConfig.java:10, 33-37)
  • true: Keep only the specified regions (remove everything else)
  • false: Remove the specified regions (keep everything else)
regions
array
Array of regions to keep or remove (PruningConfig.java:11, 40-46)

Pruning Region

Each region defines a rectangular area in chunk coordinates (PruningRegion.java:1-69):
minChunkX
integer
Minimum chunk X coordinate (PruningRegion.java:7, 38-40)
minChunkZ
integer
Minimum chunk Z coordinate (PruningRegion.java:8, 46-49)
maxChunkX
integer
Maximum chunk X coordinate (PruningRegion.java:9, 54-57)
maxChunkZ
integer
Maximum chunk Z coordinate (PruningRegion.java:10, 62-65)

Examples

Keep Only Spawn Area

Keep a 20x20 chunk area around spawn (320x320 blocks):
pruning.chunker.json
{
  "configs": [
    {
      "include": true,
      "regions": [
        {
          "minChunkX": -10,
          "minChunkZ": -10,
          "maxChunkX": 10,
          "maxChunkZ": 10
        }
      ]
    },
    null,
    null
  ]
}
"include": true means only the specified region will be kept. Everything outside will be removed.

Remove Griefed Area

Remove a specific area that was griefed:
pruning.chunker.json
{
  "configs": [
    {
      "include": false,
      "regions": [
        {
          "minChunkX": 50,
          "minChunkZ": 50,
          "maxChunkX": 100,
          "maxChunkZ": 100
        }
      ]
    },
    null,
    null
  ]
}
"include": false means the specified region will be removed. Everything else will be kept.

Multiple Regions

Keep multiple separate areas:
pruning.chunker.json
{
  "configs": [
    {
      "include": true,
      "regions": [
        {
          "minChunkX": -10,
          "minChunkZ": -10,
          "maxChunkX": 10,
          "maxChunkZ": 10
        },
        {
          "minChunkX": 100,
          "minChunkZ": 100,
          "maxChunkX": 150,
          "maxChunkZ": 150
        }
      ]
    },
    null,
    null
  ]
}

Prune Multiple Dimensions

Prune both Overworld and Nether:
pruning.chunker.json
{
  "configs": [
    {
      "include": true,
      "regions": [
        {
          "minChunkX": -20,
          "minChunkZ": -20,
          "maxChunkX": 20,
          "maxChunkZ": 20
        }
      ]
    },
    {
      "include": true,
      "regions": [
        {
          "minChunkX": -5,
          "minChunkZ": -5,
          "maxChunkX": 5,
          "maxChunkZ": 5
        }
      ]
    },
    null
  ]
}

Prune Only The End

Keep only a small End area, leave other dimensions untouched:
pruning.chunker.json
{
  "configs": [
    null,
    null,
    {
      "include": true,
      "regions": [
        {
          "minChunkX": 0,
          "minChunkZ": 0,
          "maxChunkX": 10,
          "maxChunkZ": 10
        }
      ]
    }
  ]
}

Coordinate System

Understanding Chunk Coordinates

Chunks are 16x16 block areas. To convert block coordinates to chunk coordinates:
chunkX = floor(blockX / 16)
chunkZ = floor(blockZ / 16)

Example Conversion

If you want to keep blocks from (-160, 64, -160) to (160, 320, 160):
minChunkX = floor(-160 / 16) = -10
minChunkZ = floor(-160 / 16) = -10
maxChunkX = floor(160 / 16) = 10
maxChunkZ = floor(160 / 16) = 10
The Y coordinate (height) is not used in pruning. Pruning removes entire vertical columns of chunks.

Usage

# Place in world directory
my_world/pruning.chunker.json

# Run conversion
java -jar chunker-cli.jar -i my_world -f BEDROCK_1_20_80 -o output

Region Selection Strategies

Include Strategy (Whitelist)

When "include": true:
  • Chunks inside defined regions are kept
  • Chunks outside defined regions are removed
  • Best for: Keeping specific areas (spawn, builds, etc.)

Exclude Strategy (Blacklist)

When "include": false:
  • Chunks inside defined regions are removed
  • Chunks outside defined regions are kept
  • Best for: Removing unwanted areas (grief, corruption, etc.)

Performance Considerations

Pruning is performed during the read phase of conversion, so pruned chunks are never processed. This saves:
  • Conversion time
  • Memory usage
  • Output file size

File Size Reduction

Pruning can significantly reduce world size:
  • Small spawn area: 90-95% size reduction
  • Multiple regions: 50-80% size reduction
  • Removing unused dimensions: 30-60% size reduction

Best Practices

  1. Always backup your world before pruning
  2. Test first with a copy of your world
  3. Use visualization tools to identify chunk coordinates
  4. Buffer regions by 1-2 chunks to avoid cutting off structures
  5. Check dimension IDs to ensure correct pruning order

Visualization Tools

To help identify regions to prune:
  • Minecraft: Press F3+G to show chunk boundaries
  • External tools: Use MCA Selector, Amulet, or similar
  • Coordinates: F3 shows both block and chunk coordinates

Common Use Cases

Server Spawn

Keep only spawn and hub areas for smaller server worlds

Mini-games

Extract specific arenas or game areas

Showcases

Create compact worlds featuring specific builds

Testing

Generate small test worlds from production servers

Troubleshooting

  • Verify chunk coordinates (not block coordinates)
  • Check include vs exclude logic
  • Ensure dimension order is correct
  • Check that configs array is not empty
  • Verify regions array has entries
  • Ensure dimension index matches intended dimension
  • Validate JSON syntax
  • Ensure minChunk values are less than maxChunk values
  • Check that configs array has exactly 3 elements or fewer
  • Expand region boundaries by 1-2 chunks
  • Structures can span multiple chunks
  • Check if structure extends beyond defined region

Empty Configs

An empty configs array means no pruning:
{
  "configs": []
}
This is equivalent to not having a pruning configuration file.

Configuration Overview

Learn about all configuration options

Converter Settings

Control what gets converted

Dimension Mapping

Map dimensions between editions

Build docs developers (and LLMs) love