Chunker 26.1.2
Highlights
- Source commit:
07b5d97 - Updated Chunker for Paper/Folia
26.1.2and Java25. - World selection now uses canonical dimension keys such as
minecraft:overworld,minecraft:the_nether,minecraft:the_end, and customnamespace:keydimensions. - Command autocomplete now discovers normal and custom dimensions from the new 26.1 world storage layout.
- Pregeneration tasks remain independent per dimension, even though newer servers store dimensions under one world folder.
- Optional command-level safety mode can now force the more rigorous chunk safety path on modern versions.
- Forced safety mode now uses Paper's modern urgent async chunk generation path instead of dummy entity teleports.
- Async scheduling and progress counters were updated for better Java 25 runtime behavior.
Why this update?
Paper 26.1 changes both the Java baseline and the world storage model. Chunker now targets Java 25 directly and no longer tries to preserve older Minecraft compatibility paths.
The old command/world discovery logic expected separate folders like world, world_nether, and world_the_end. In 26.1, dimensions are stored under world/dimensions/<namespace>/<key>/, so Chunker now treats dimension keys as the source of truth.
Version and build changes
- Plugin version bumped to
26.1.2. - Paper API dependency moved to
[26.1.2.build,). - Folia API dependency moved to
[26.1.2.build,). - Maven compiler configuration now uses
<release>25</release>. plugin.ymlupdated toversion: 26.1.2andapi-version: '26.1.2'.
Dimension-aware world handling
Canonical dimension keys
Chunker now resolves worlds by Bukkit/Paper world keys:
minecraft:overworldminecraft:the_netherminecraft:the_end- Custom dimensions such as
custom:resource
This matches the 26.1+ storage layout where custom dimensions live under:
world/dimensions/<namespace>/<key>/
Command autocomplete
World/dimension autocomplete was reworked for:
/pregen <threads> <delay> <dimension> <radius>/pregenoff <dimension>/pregen reset <dimension>
Autocomplete now scans loaded worlds and dimension folders, then returns canonical dimension keys. Results are filtered as the user types.
Independent dimension tasks
Task tracking now uses canonical dimension keys instead of world UUID-derived IDs. This prevents dimensions in the same save folder from being treated as one pregeneration target.
Each dimension can still be generated separately and controlled independently.
Optional safety mode
Chunker now supports an optional safety argument after the radius:
/pregen 4 5s minecraft:overworld 5r safety
This forces Chunker's chunk safety path even on newer versions that do not automatically require it.
The safety path is more conservative because it uses Paper's urgent async chunk generation API and counts progress when chunk futures complete. That can be useful for users who want progress to reflect completed chunk work, but it is slower than the standard async path, so it is opt-in instead of the default.
The older dummy-entity teleport safety flow was removed for the 26.1.2 baseline. On current Paper builds it could race progress accounting and unload timing, which made safety mode less reliable than the normal async path. Forced safety now treats the async chunk future as the authority, saves/unloads after it completes, and only then advances the completed count.
Safety mode still honors the command's parallel task multiplier. Chunker queues up to that many new safety futures per scheduler cycle, with a bounded in-flight window to keep the pipeline full without letting queued work run away.
Stop/restart behavior was also tightened. Safety mode now tracks submitted chunks separately from completed chunks and saves the submitted position with the iterator. That prevents a restart from resuming behind or ahead of the iterator after high-speed safety futures were already queued.
Automatic safety detection from ServerVersion is still present for affected old-version logic, but for the 26.1.2 Java 25 baseline the practical control is now the optional command argument.
State and settings changes
- Per-dimension settings now use canonical dimension keys.
- Pregenerator state files now use safe filenames derived from dimension keys.
- Console/progress output now displays dimension-aware names.
settings.ymlcomments were updated to document the newnamespace:keyformat.settings.ymlalso documents the optional/pregen ... safetyargument.
Java 25 runtime improvements
Scheduler updates
AsyncDelayedScheduler now uses Java 25 virtual threads for async task execution while keeping a lightweight scheduler thread for delays.
This avoids unnecessary CompletableFuture.delayedExecutor recursion and makes scheduler shutdown cleaner when pregeneration stops.
Thread-safe progress counters
Chunk cycle counters now use LongAdder where async paths update progress from multiple threads.
This avoids shared mutable int counters in high-throughput async generation paths.
Reduced async churn
Paper chunk submission no longer wraps work in an extra CompletableFuture.runAsync where the scheduler already provides async execution.
26.1.2 API cleanup
- Replaced deprecated
World#getGameRuleDefault(...)withGameRule#getDefaultValue(). - Cleaned unused lambda parameter warnings in command, chunk safety, scheduler, and world ID code.
- Refactored small helper code to avoid warning-only parameters instead of suppressing them.
Updated classes
pom.xml- Version/API dependency updates and Java 25 compiler release.
plugin.yml- Plugin metadata updated for 26.1.2.
settings.yml- Added dimension-key configuration guidance.
WorldRegistry- New canonical dimension discovery, resolution, autocomplete, and state-file helper.
WorldIdManager- Uses canonical dimension keys for independent task IDs.
PreGeneratorCommands- Dimension-key command resolution and autocomplete.
- Optional fifth
safetycommand argument.
PluginSettings- Per-dimension settings now use canonical keys.
PreGenerator- Uses dimension-aware IDs, settings, reset behavior, and messages.
- Can force chunk safety per pregeneration run.
- Safety-mode Paper generation now queues chunks continuously while counting completed futures for progress.
- Safety submissions use a bounded in-flight window based on the parallel task multiplier.
- Stop/restart saves submitted safety progress so resume state stays aligned with the iterator.
Load,Save,ResetPreGenState- State files now resolve through dimension-aware helpers.
Print,ConsoleColorUtils- Progress output updated for dimension keys.
AsyncDelayedScheduler- Java 25 virtual-thread scheduling improvements.
PreGenerationTask- Thread-safe cycle counter changes.
- Stores the per-run forced safety flag.
PlayerEvents- Deduplicated chunk refcount handling and limited tracking to the relevant world.
ChunkSafety- Replaced the dummy teleport implementation with Paper's urgent async chunk generation API.
- Saves/unloads generated chunks directly after the async chunk future completes.
- Removed passenger/vehicle-retention teleport flags and dummy entity handling.
ServerStateManager- 26.1.2 deprecation and warning cleanup.
ChunkPos,CustomConfig,Load,PreGeneratorCommands,ServerVersion- Small maintainability and runtime cleanup while moving to the new baseline.
Version
- Bump plugin version to
26.1.2. - Java baseline is now
25.