Nonprofit's Chunky Pregenerator

Quick rating

Nonprofit's Chunky Pregenerator

No reviews yet

Fabric mod that automatically pre-generates chunks around players using Chunky. Spiral batches, movement triggers, mid-bundle resume, Voxy integration, TPS auto-pause

Automation & Processing
World Gen Improvements
Mod Loaders
Fabric
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Optional
Server Required

About

Project Details

Type
Mod
License
MIT License
Latest Version
v2.2.0 - Fabric 1.21.11
Authors
CurseForge
Modrinth

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID
Modrinth ID

Resources

External Links

About

Description

banner-wide.png

A Fabric mod for Minecraft 1.21.11 that automatically pre-generates chunks around players using Chunky as the generation backend. Runs completely in the background, survives restarts mid-spiral, and works on both singleplayer and dedicated servers.

Vibecoded using Claude. MIT licensed. Yes, it's incredibly polished and there are minimal bugs. 


Why this over Distant Horizons' built-in pregenerator

DH's pregenerator fires once at a fixed radius from the center of the world. It doesn't track where the player actually goes, can't adjust as they move, has no concept of prioritizing nearby terrain over distant terrain, and can't pause when the server is struggling. Once it fires, that's it.

This mod generates in expanding spiral rings centered on the player's actual position. The terrain closest to the player is always done first. When the player moves far enough from the last generation center, a new bundle fires automatically, re-centered on them. If server TPS tanks during generation, Chunky gets told to pause and waits for recovery. When it recovers, it picks back up. If you quit mid-spiral, it saves exactly which ring it was on and resumes from there on rejoin. Chunky naturally skips already-generated chunks within a ring, so you lose at most a partial ring worth of work.

It also forces a Voxy LOD rebuild at the start of each bundle by briefly expanding and collapsing render distance. Without this, Voxy doesn't register newly pre-generated terrain as LOD data until something else triggers a rebuild.


Features

Spiral batch generation — the bundle gets split into concentric rings using a quadratic ease-in curve. Ring spacing is tighter near the player and grows further out, which maps to how exploration actually works. Chunky skips already-generated chunks within each ring automatically, so overlapping rings are essentially free.

Movement-triggered re-center — once the player moves more than the deadzone distance from the last generation center, a new bundle fires centered on their new position. Defaults to half the generation radius, so there's always a buffer of pre-generated terrain ahead of wherever you're going.

Mid-bundle resume on rejoin — ring index, ring list, and center are written to the world's data folder on every save. On rejoin, after the join delay, it re-fires the current ring. Chunky skips the already-done portion automatically.

TPS auto-pause — Chunky pauses when server TPS drops below threshold (default 15 TPS) and resumes when it recovers (default 18 TPS). Prevents generation from compounding a performance problem.

Voxy LOD integration — when enabled, generation radius and deadzone track Voxy's actual render distance setting rather than static config values. Reads Voxy's config live via reflection, falls back to JSON parsing if reflection fails. Also fires a Voxy LOD rebuild (render distance expand/collapse cycle) at the start of each bundle so freshly generated terrain shows up in LOD without waiting.

Chunky API poll — completion detection goes through Chunky's actual ChunkyAPI.isRunning() via reflection rather than relying on log parsing or timers. Ring advance happens the moment Chunky actually finishes. Two consecutive false readings are required before advancing, as a debounce for the brief window right after a new task starts.

Stall watchdog — if Chunky goes completely silent (no isRunning()=true readings) for 10 straight minutes, the watchdog resets state so nothing hangs forever. Measures actual stall time rather than total runtime, so a legitimate multi-hour generation never trips it.

Per-session progress relay — Chunky's per-second log spam is suppressed. A clean progress summary goes out on a configurable interval instead.

Nether auto-scale — Nether generation radius is divided by 8 automatically to match the coordinate scale. A 250-chunk Overworld radius becomes ~31 chunks in the Nether.

End gate — the End won't pre-generate until a player has actually visited it. The End portal spawns the dragon on first entry, and you don't want that happening off-screen during pre-gen.

Sodium settings UI — all settings are exposed in a dedicated page in Sodium's video settings, with live tooltips that show what Voxy's render distance is actually reading as.

Server and singleplayer — runs on dedicated servers and singleplayer integrated servers. Client-side mods (Sodium, Voxy) are optional.


Requirements

Dependency Required Notes
Fabric Loader Yes 0.19.3+
Fabric API Yes Any 1.21.11 build
Chunky Yes 1.4.55+
Sodium Client In-game settings UI + LOD rebuild cycle (not needed on dedicated servers)
Voxy Optional Lets Voxy's render distance drive generation radius

Chunky-Offline is recommended alongside Chunky in singleplayer. It keeps Chunky running between world loads.

Without Voxy, the mod uses the static generationRadius and triggerDistance from config.


Installation

Drop the jar into your mods/ folder. Config generates on first launch at config/chunkypregen.json. If you have Sodium installed, all settings are in Options > Video Settings > Chunky Pregenerator. Reload config in-game with /chunkypregen reload.


Default settings

Setting Default Notes
Generation radius 250 chunks 4000 block radius
Deadzone 2000 blocks Half of 250 chunks x 16
Voxy integration Off Enable to let Voxy's render distance drive the radius
Skip creative players Off Creative mode players count toward movement triggers
Nether auto-scale On Nether radius = global / 8
TPS auto-pause On Pause at 15 TPS, resume at 18
Spiral generation On Quadratic ease-in ring curve
End pre-gen Off Only fires after a player visits The End
Join delay 15 seconds Lets Chunky-Offline and Sodium finish initializing first
Progress relay Every 5 minutes Replaces Chunky's per-second log spam
Debug mode Off  

Commands

All require op level 2.

Command  
/chunkypregen status State per dimension, current ring, last center, live progress
/chunkypregen trigger Manually fire a generation bundle for all enabled dimensions
/chunkypregen trigger <dim> Fire for a specific dimension
/chunkypregen cancel Cancel all active Chunky jobs and reset state
/chunkypregen reset Clear saved last-center positions
/chunkypregen stats Session stats: jobs fired, estimated chunks, active time
/chunkypregen config Dump current config to chat
/chunkypregen debug Toggle debug logging
/chunkypregen reload Reload config from disk without restart
/chunkypregen setworld reset Clear the new-world init flag so first-join pre-gen fires again

How the spiral curve works

Ring radii follow radius x ((i+1)/N)^2. Ring count N scales automatically with radius and generationRingStep. At 250 chunks with default step of 25, you get 13 rings. At 1000 chunks you get 20. Each ring fires sequentially and the next ring only starts after isRunning() confirms the current one is done.

The quadratic curve means ring 1 covers the innermost ~1% of the area and the outer rings get progressively larger. The area near the player is always the first thing finished.

Chunky Pregenerator

Wide banner displaying the logo.

A Fabric mod for Minecraft 1.21.11 that automatically pre-generates chunks around players using Chunky as the generation backend. Runs completely in the background, survives restarts mid-spiral, and works on both singleplayer and dedicated servers.

Vibecoded using Claude. MIT licensed. Yes, it's incredibly polished and there are minimal bugs. 

Why this over Distant Horizons' built-in pregenerator

DH's pregenerator fires once at a fixed radius from the center of the world. It doesn't track where the player actually goes, can't adjust as they move, has no concept of prioritizing nearby terrain over distant terrain, and can't pause when the server is struggling. Once it fires, that's it.

This mod generates in expanding spiral rings centered on the player's actual position. The terrain closest to the player is always done first. When the player moves far enough from the last generation center, a new bundle fires automatically, re-centered on them. If server TPS tanks during generation, Chunky gets told to pause and waits for recovery. When it recovers, it picks back up. If you quit mid-spiral, it saves exactly which ring it was on and resumes from there on rejoin. Chunky naturally skips already-generated chunks within a ring, so you lose at most a partial ring worth of work.

It also forces a Voxy LOD rebuild at the start of each bundle by briefly expanding and collapsing render distance. Without this, Voxy doesn't register newly pre-generated terrain as LOD data until something else triggers a rebuild.

Features

Spiral batch generation — the bundle gets split into concentric rings using a quadratic ease-in curve. Ring spacing is tighter near the player and grows further out, which maps to how exploration actually works. Chunky skips already-generated chunks within each ring automatically, so overlapping rings are essentially free.

Movement-triggered re-center — once the player moves more than the deadzone distance from the last generation center, a new bundle fires centered on their new position. Defaults to half the generation radius, so there's always a buffer of pre-generated terrain ahead of wherever you're going.

Mid-bundle resume on rejoin — ring index, ring list, and center are written to the world's data folder on every save. On rejoin, after the join delay, it re-fires the current ring. Chunky skips the already-done portion automatically.

TPS auto-pause — Chunky pauses when server TPS drops below threshold (default 15 TPS) and resumes when it recovers (default 18 TPS). Prevents generation from compounding a performance problem.

Voxy LOD integration — when enabled, generation radius and deadzone track Voxy's actual render distance setting rather than static config values. Reads Voxy's config live via reflection, falls back to JSON parsing if reflection fails. Also fires a Voxy LOD rebuild (render distance expand/collapse cycle) at the start of each bundle so freshly generated terrain shows up in LOD without waiting.

Chunky API poll — completion detection goes through Chunky's actual ChunkyAPI.isRunning() via reflection rather than relying on log parsing or timers. Ring advance happens the moment Chunky actually finishes. Two consecutive false readings are required before advancing, as a debounce for the brief window right after a new task starts.

Stall watchdog — if Chunky goes completely silent (no isRunning()=true readings) for 10 straight minutes, the watchdog resets state so nothing hangs forever. Measures actual stall time rather than total runtime, so a legitimate multi-hour generation never trips it.

Per-session progress relay — Chunky's per-second log spam is suppressed. A clean progress summary goes out on a configurable interval instead.

Nether auto-scale — Nether generation radius is divided by 8 automatically to match the coordinate scale. A 250-chunk Overworld radius becomes ~31 chunks in the Nether.

End gate — the End won't pre-generate until a player has actually visited it. The End portal spawns the dragon on first entry, and you don't want that happening off-screen during pre-gen.

Sodium settings UI — all settings are exposed in a dedicated page in Sodium's video settings, with live tooltips that show what Voxy's render distance is actually reading as.

Server and singleplayer — runs on dedicated servers and singleplayer integrated servers. Client-side mods (Sodium, Voxy) are optional.

Requirements Dependency Required Notes Fabric Loader Yes 0.19.3+ Fabric API Yes Any 1.21.11 build Chunky Yes 1.4.55+ Sodium Client In-game settings UI + LOD rebuild cycle Voxy Optional Lets Voxy's render distance drive generation radius Chunky-Offline is recommended alongside Chunky in singleplayer. It keeps Chunky running between world loads.

Without Voxy, the mod uses the static generationRadius and triggerDistance from config.

Installation

Drop the jar into your mods/ folder. Config generates on first launch at config/chunkypregen.json. If you have Sodium installed, all settings are in Options > Video Settings > Chunky Pregenerator. Reload config in-game with /chunkypregen reload.

Command /chunkypregen status State per dimension, current ring, last center, live progress /chunkypregen trigger Manually fire a generation bundle for all enabled dimensions /chunkypregen trigger Fire for a specific dimension /chunkypregen cancel Cancel all active Chunky jobs and reset state /chunkypregen reset Clear saved last-center positions /chunkypregen stats Session stats: jobs fired, estimated chunks, active time /chunkypregen config Dump current config to chat /chunkypregen debug Toggle debug logging /chunkypregen reload Reload config from disk without restart /chunkypregen setworld reset Clear the new-world init flag so first-join pre-gen fires again

How the spiral curve works Ring radii follow radius x ((i+1)/N)^2. Ring count N scales automatically with radius and generationRingStep. At 250 chunks with default step of 25, you get 13 rings. At 1000 chunks you get 20. Each ring fires sequentially and the next ring only starts after isRunning() confirms the current one is done.

The quadratic curve means ring 1 covers the innermost ~1% of the area and the outer rings get progressively larger. The area near the player is always the first thing finished.

License MIT

Screenshots

Gallery

  • chunkypregen screenshot 1.png
    chunkypregen screenshot 1.png chunkypregen screenshot 1.png
  • chunkypregen screenshot 2.png
    chunkypregen screenshot 2.png chunkypregen screenshot 2.png
  • chunkypregen screenshot 3.png
    chunkypregen screenshot 3.png chunkypregen screenshot 3.png
  • chunkypregen screenshot 4.png
    chunkypregen screenshot 4.png chunkypregen screenshot 4.png
  • Voxy integration! Algorithm settings, dimension settings, etc.
    Voxy integration! Algorithm settings, dimension settings, etc. Users can now base their chunk load batches off of their render distance in voxy. Typically double render distance.
  • Banner Image
    Banner Image placeholder image to set as banner
  • Elaborate and detailed settings!
    Elaborate and detailed settings! Users are able to tweak their settings to their needs with ease, no need to mess with irritating config files.
  • Sodium Settings!
    Sodium Settings! Users are able to tweak settings through the sodium video settings panel.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~3,000
Total Downloads
CurseForge
~2,000
Modrinth
<1,000
Last Updated
CurseForge
Created
CurseForge
Modrinth
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works