Sueta
CH

ChunkGenerator

0.1.0-beta.1

Adaptive, TPS-aware chunk pre-generator for Paper, Purpur and Folia. Auto-tuned to your CPU and heap. Pause, resume and survive restarts.

·Plugin
  1. 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), and north / 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 with auto-resume: true. New permission node chunkgenerator.command.resume. - inflight/target pipeline pressure reading in /cg status and 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 a paper-global.yml > chunk-system > worker-threads setting 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.yml flattened and trimmed for public use. A short Basics block at the top (target-tps, bossbar / actionbar / console toggles, auto-resume) and an Advanced throttle section that most servers never need to touch. A banner at the very top points operators at paper-global.yml > chunk-system for the actual speed lever. The display, monitoring and persistence wrapper 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-pct 85 → 70, memory-pause-pct 92 → 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 to Long.MAX_VALUE (rendered as 2562047788015215h30m) 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 flat 0.
    Migration
    - Delete plugins/ChunkGenerator/config.yml after upgrading so the new flat layout (with the paper-global.yml tuning banner) regenerates. Old YAMLs still load but stay on the previous keys that the plugin no longer reads.
    80 downloads
  2. 0.1.0-alpha.2ChunkGenerator 0.1.0-alpha.2May 14, 2026
    - Memory pressure circuit breaker: the throttle scales down once heap usage crosses memory-backoff-pct of max heap and pauses new chunk submissions entirely past memory-pause-pct, resuming automatically once pressure clears. - Auto-scaled defaults: the inflight ceiling and start target now derive from availableProcessors() and maxMemory() 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 hardcoded MAX_INFLIGHT = 200 ceiling was reached. - Speed readout labelled chunk/s instead of c/s everywhere (BossBar, ActionBar, console log, /cg status, /cg list). ### Removed - Config keys throttle.max-chunks-per-tick and throttle.min-chunks-per-tick (replaced by throttle.max-inflight, throttle.min-inflight and throttle.start-inflight), and the hardcoded MAX_INFLIGHT = 200 ceiling on concurrent chunk loads. ### Migration Existing config.yml files keep working — the new keys fall back to sensible auto-scaled values. To pick them up explicitly, delete plugins/ChunkGenerator/config.yml and the plugin will write a fresh one on the next start.
    11 downloads
  3. 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 status snapshots — all with generation speed, TPS, process CPU and JVM RAM readings. - Atomic per-world YAML persistence in plugins/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 /op fallback 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 — reload config.yml and messages.yml - /cg help Alias: /chunkgen.
    11 downloads

Similar projects

Plugin →