CH
ChunkGenerator
0.1.0-beta.1Adaptive, TPS-aware chunk pre-generator for Paper, Purpur and Folia. Auto-tuned to your CPU and heap. Pause, resume and survive restarts.
0.1.0-beta.1latestMay 14, 2026 First beta release after a round of production tuning on real hosts. The plugin now ships with auto-scaled throttle defaults calibrated against an actual container-host crash, six chunk-visit patterns, a resume command, and a simplified config aimed at public use.Added
- Traversal patterns as an optional last argument to/cg start. Six patterns:center(default, spiral outward from the zone center),edge(concentric rings inward from the outer perimeter to the center), andnorth/south/east/west(linear row or column sweep starting at the named edge). All patterns visit the same set of chunks; only the order differs, and the saved iterator index is pattern-aware so a paused job resumes in its own sequence. -/cg resume <world>to restart a paused job from where it left off, completing the start / stop / resume / cancel quartet. Paused jobs were previously only reactivated by a server restart withauto-resume: true. New permission nodechunkgenerator.command.resume. -inflight/targetpipeline pressure reading in/cg statusand the periodic console log. When chunks are being submitted but not completing (slow Paper chunk worker, stuck futures, far-out generation) the diagnosis is obvious from one command. - Startup log lines that report the resolved throttle values and recommend apaper-global.yml > chunk-system > worker-threadssetting matching the host's core count, so operators do not have to derive the Paper-side tuning themselves. - README sections on container hosts and `MaxRAMPercentage` (Pterodactyl, Docker — heap-based monitoring cannot observe the cgroup RSS ceiling) and on maximising sustained throughput (the real ceiling is Paper's chunk worker count, not the plugin's queue depth).Changed
-config.ymlflattened and trimmed for public use. A short Basics block at the top (target-tps, bossbar / actionbar / console toggles,auto-resume) and an Advancedthrottlesection that most servers never need to touch. A banner at the very top points operators atpaper-global.yml > chunk-systemfor the actual speed lever. Thedisplay,monitoringandpersistencewrapper sections are gone — every knob lives at the root now. - Auto-scaled defaults retuned against production data and tied to the core count rather than the heap alone, with a conservative 30 MB-per-inflight-chunk transient estimate. -max-inflight = max(64, min(cores × 32, heapMB / 60))-start-inflight = max(16, cores × 6)- Default memory thresholds lowered:memory-backoff-pct85 → 70,memory-pause-pct92 → 80, to keep a margin from the container RSS limit that heap-based monitoring cannot see directly.Fixed
- Kernel-OOM crash on container hosts (Pterodactyl, exit code 137) when the throttle saturated to its previous auto-scaled ceiling and Paper's chunk save thread fell behind: held chunks plus native memory exceeded the cgroup limit even while JVM heap stayed under the old 85 % backoff threshold. - ETA no longer overflows toLong.MAX_VALUE(rendered as2562047788015215h30m) when the smoothed speed decays toward zero. Below 0.01 chunk/s or for predicted ETAs over a year, the status returns?instead of a meaningless number. - Speed readout shows two decimals below 10 chunk/s and one decimal below 100, so sub-1 chunk/s progress no longer rounds to a flat0.Migration
- Deleteplugins/ChunkGenerator/config.ymlafter upgrading so the new flat layout (with thepaper-global.ymltuning banner) regenerates. Old YAMLs still load but stay on the previous keys that the plugin no longer reads.0.1.0-alpha.2ChunkGenerator 0.1.0-alpha.2May 14, 2026 - Memory pressure circuit breaker: the throttle scales down once heap usage crossesmemory-backoff-pctof max heap and pauses new chunk submissions entirely pastmemory-pause-pct, resuming automatically once pressure clears. - Auto-scaled defaults: the inflight ceiling and start target now derive fromavailableProcessors()andmaxMemory()at startup, so the plugin saturates Paper's chunk pipeline on any host without manual tuning. ### Changed - New throttle model: the controller now targets a count of concurrent chunk requests in flight instead of a fixed chunks-per-tick budget. This matches Paper's asynchronous chunk system and removes the budget-loss bug that capped throughput every time the previous hardcodedMAX_INFLIGHT = 200ceiling was reached. - Speed readout labelledchunk/sinstead ofc/severywhere (BossBar, ActionBar, console log,/cg status,/cg list). ### Removed - Config keysthrottle.max-chunks-per-tickandthrottle.min-chunks-per-tick(replaced bythrottle.max-inflight,throttle.min-inflightandthrottle.start-inflight), and the hardcodedMAX_INFLIGHT = 200ceiling on concurrent chunk loads. ### Migration Existingconfig.ymlfiles keep working — the new keys fall back to sensible auto-scaled values. To pick them up explicitly, deleteplugins/ChunkGenerator/config.ymland the plugin will write a fresh one on the next start.0.1.0-alpha.1ChunkGenerator 0.1.0-alpha.1May 14, 2026 Initial alpha release. Functional and self-contained, kept on the alpha channel until shape iteration, throttle behaviour and resume logic have been validated on production-scale worlds. ### Features - Pre-generation jobs over square, circle and rectangle zones with an optional explicit center (default: world spawn). - TPS-aware auto-throttle that adapts chunks-per-tick to hold the configured target TPS. - One job per world; jobs across worlds run in parallel. - Live BossBar for staff (chunkgenerator.bossbar), ActionBar for the launching player, periodic console progress logs and/cg statussnapshots — all with generation speed, TPS, process CPU and JVM RAM readings. - Atomic per-world YAML persistence inplugins/ChunkGenerator/jobs/with automatic resume after a server restart. - Paper, Purpur and Folia support via a reflection-based scheduler bridge — no Folia API on the compile classpath required. - LuckPerms integration with/opfallback when LuckPerms is absent. ### Commands -/cg start <world> <shape> <size> [centerX centerZ]-/cg stop <world>— pause (state preserved on disk) -/cg cancel <world>— cancel and delete state file -/cg status [world]— snapshot of progress, speed, ETA, perf -/cg list— list all known jobs -/cg reload— reloadconfig.ymlandmessages.yml-/cg helpAlias:/chunkgen.
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
LuckPerms
A permissions plugin/mod for Minecraft servers.
2.8MSueta
ItemSwapper
Inventory update concept for hotswapping items.
2.1MSueta
SkinsRestorer
🎨 Ability to restore/change skins on servers! (Offline and Online Mode)
1.6MSueta