Join our Discord Community for help, support, issues, feedback, and discussions. Click here to join: Join Our Discord
PRs welcome
This repository is public. Fork the repo, create a branch, and open a pull request. I will merge changes that work and do not introduce issues. If I need changes I will leave feedback.
Quick checklist:
mvn clean package using Java 25.26.1.2Chunker still has fallback logic for non-Paper server paths, but the current plugin baseline is built for the 26.1.2 API and Java 25.
Chunker is designed to be more efficient and resilient than traditional pre-generators. Many pre-generators track thousands of chunks in memory, risking significant rollback or data loss if the server crashes. Chunker, by contrast, only tracks minimal state like the current iterator position, submitted progress, completed progress, and the generation center, so crashes or restarts have less impact on the generation process.
Chunker works best on Paper and Paper forks because it can use asynchronous chunk-loading through CompletableFuture. Folia uses its region scheduler path. On non-Paper server paths, Chunker falls back to synchronous loading behavior.
You can configure Chunker to run automatically only when there are no players online and to halt if a player joins. This behavior is controlled by auto_run in settings.yml. You can also adjust how aggressively each dimension runs by changing task_queue_timer and parallel_tasks_multiplier.
start.bat)@echo off
for %%f in (*.jar) do set JAR=%%f
REM Launching Java with Aikar-style flags
java ^
-Xms1G ^
-Xmx30G ^
-XX:+UseG1GC ^
-XX:+UnlockExperimentalVMOptions ^
-XX:G1NewSizePercent=30 ^
-XX:G1MaxNewSizePercent=40 ^
-XX:G1HeapRegionSize=8M ^
-XX:G1ReservePercent=20 ^
-XX:G1HeapWastePercent=5 ^
-XX:G1MixedGCCountTarget=4 ^
-XX:InitiatingHeapOccupancyPercent=15 ^
-XX:G1MixedGCLiveThresholdPercent=90 ^
-XX:G1RSetUpdatingPauseTimePercent=5 ^
-XX:SurvivorRatio=32 ^
-XX:+PerfDisableSharedMem ^
-XX:MaxTenuringThreshold=1 ^
-XX:+UseCompressedOops ^
-XX:+DisableExplicitGC ^
-XX:+AlwaysPreTouch ^
-XX:+ParallelRefProcEnabled ^
-XX:+UseNUMA ^
-XX:ParallelGCThreads=16 ^
-XX:ConcGCThreads=16 ^
-XX:MaxGCPauseMillis=50 ^
-Dusing.aikars.flags=https://mcflags.emc.gs ^
-Daikars.new.flags=true ^
-jar "%JAR%" --nogui
pause
Xms1G and Xmx30G should be updated to match your server's minimum and maximum memory.XX:ParallelGCThreads and XX:ConcGCThreads to match your CPU thread count.Note: On non-Paper servers, Paper async chunk functionality will not be used. On Paper-based servers, you can tune chunk generation and I/O parallelism for better pre-generation throughput.
In your paper-global.yml or equivalent, consider increasing the parallelism for chunk generation and I/O:
chunk-loading-advanced:
auto-config-send-distance: true
player-max-concurrent-chunk-generates: -1
player-max-concurrent-chunk-loads: -1
chunk-loading-basic:
player-max-chunk-generate-rate: -1.0
player-max-chunk-load-rate: -1.0
player-max-chunk-send-rate: -1.0
chunk-system:
gen-parallelism: default
io-threads: 16
worker-threads: 16
region-file-cache-size: 16
io-threads and worker-threads to match or approach your CPU's thread count.region-file-cache-size if running pre-generation on a fresh world with no players online.The primary commands are:
/pregen <ParallelTasksMultiplier> <PrintUpdateDelay> <dimension> <Radius or "default"> [safety]
/pregenoff [dimension]
/pregen reset <dimension>
/pregen 4 10s minecraft:overworld default
default uses the world border as the radius./pregen 6 5s minecraft:overworld 1000b
1000b means a 1000-block radius, rounded to full region coverage./pregen 16 5s minecraft:the_nether 2r safety
16 multiplier.2r means a 2-region radius, rounded to full region coverage.safety forces the more conservative urgent async generation path./pregen 1 12h minecraft:the_end 100r
100r means a 100-region radius./pregen reset minecraft:the_nether
s, m, or h.minecraft:overworld or minecraft:the_nether. Tab completion is supported.b - Blocks, for example 20000bc - Chunks, for example 500cr - Regions, for example 30rdefault - Uses the world borderDefaults to OP.
chunker.pregen - Allows use of /pregenchunker.pregenoff - Allows use of /pregenoffchunker.reset - Allows use of /pregen reset <dimension>chunker.* - Grants all Chunker permissions# World Configuration for Chunker Plugin
# auto_run: Set to true if you want pre-generation to start automatically when no players are on the server.
# Acceptable values: true or false
# task_queue_timer: Determines how fast chunks are queued up. A value between 50-70 is recommended for modern AMD 5000 series and Intel 13th Gen CPUs in the Overworld.
# Adjust based on performance needs.
# parallel_tasks_multiplier: Sets how many async tasks are queued per scheduler cycle. 'auto' will distribute tasks based on your thread count for auto-run.
# You can also set a specific integer value. Higher values increase load.
# print_update_delay: How often to print information (s-Seconds, m-Minutes, h-Hours). Default is 5s.
# radius: Defines how far the pre-generator should run (b-Blocks, c-Chunks, r-Regions) or 'default' to pre-generate until the world border.
# Optional command safety mode:
# Add 'safety' after the radius to force Chunker's urgent async safety generation path on modern versions.
# Example: /pregen 4 5s minecraft:overworld 5r safety
# This keeps progress tied to completed chunks while still queuing safety work in parallel.
# center: Sets where the pregen spiral starts.
# - 'default' uses the world border center, or the world spawn if no border center is set.
# - '~ ~' always uses the current world spawn.
# - 'x z' uses fixed block coordinates, for example: "0 0" or "1500 -500".
minecraft:overworld:
center: default
auto_run: false
task_queue_timer: 60
parallel_tasks_multiplier: auto
print_update_delay: 5s
radius: default
minecraft:the_nether:
center: default
auto_run: false
task_queue_timer: 60
parallel_tasks_multiplier: auto
print_update_delay: 5s
radius: default
minecraft:the_end:
center: default
auto_run: false
task_queue_timer: 60
parallel_tasks_multiplier: auto
print_update_delay: 5s
radius: default
ParallelTasksMultiplier, then adjust upward while watching CPU, memory, and disk usage.print_update_delay of 10s or longer to avoid excessive log output during long runs.safety only when you want the more conservative Paper generation path; omit it for maximum speed.
Fast and Efficient Async Minecraft World Pre-generator