Plan-first chunk pre-generation for Paper 1.21.11 — shows what will generate before it starts.
Changelog
Unreleased
- Fixed:
/fwg wandand/fwg continue(and in principle any subcommand) could silently fall through to the usage/help message for a non-op player in-game, even when that player held the specific permission node the subcommand checks for in code (e.g.fastworldgen.wand). Cause:plugin.ymlset a blanket top-levelpermission: fastworldgen.statuson the/fwgcommand itself. Bukkit enforces that gate beforeonCommandruns at all, so a player withoutfastworldgen.statusspecifically was rejected by Bukkit itself — independent of whichever subcommand permission they actually had. Console was unaffected becauseConsoleCommandSenderbypasses permission checks entirely, which is why the bug only showed up in-game. Removed the top-level permission; every subcommand already enforces its own specific permission node in code.
FastWorldGen 1.2.0
Added self-healing configuration: on every plugin enable and every
/fwg reload,config.ymlis compared against the plugin's bundled defaults/schema. Missing keys are restored, keys with the wrong value type are reset to their default, and keys that aren't part of the schema at all are removed. A timestampedconfig.yml.bak-<epoch-ms>backup is written next toconfig.ymlwhenever a repair actually changes something, and a summary of what was repaired is logged to console.Removed: Custom Generation scripting entirely. This drops the
/fwg scriptsubcommand (run/list/cancel/status), thefastworldgen.scriptpermission, the embedded Mozilla Rhino dependency, thescriptingconfig section, thescripts/folder, anddocs/SCRIPTING.md. Everything else (planning, start/pause/resume/cancel, the wand, the web dashboard) is unaffected.Added update checking: on enable, FastWorldGen asynchronously queries Hangar (
hangar.papermc.io/firesmasher/FastWorldGen) for the latest release and compares it against the running version. Result is logged to console in color; if an update is available, operators (andfastworldgen.adminholders) get a colored chat notice shortly after joining.Added the wand:
/fwg wand givehands out a named Blaze Rod; left-click sets position 1, right-click sets position 2 (WorldEdit-style, clicks are cancelled so nothing breaks or places)./fwg wand save <name>fills a vanillaStructurefrom the selection and writes it todata/structures/<name>.nbt. Also adds/fwg wand pos1|pos2|info|clear.- New
fastworldgen.wandpermission (defaults toop, included infastworldgen.admin). - Selections capped at 2,000,000 blocks and must stay within a single world.
- New
Requirements: Paper 1.21.11, Java 21+.
FastWorldGen 1.1.0
- Added
/fwg continue [world]to explicitly re-plan and continue a saved job after a restart, instead of that only happening automatically when another command triggered it. - Memory: regions are now streamed as compact bitmasks instead of per-chunk objects during
planning, and generated chunks are unloaded once a configurable number stay loaded at once
(
safety.max-loaded-chunks), bounding memory growth on large-radius jobs. - Default config and built-in fallbacks retuned for a 4 GB heap / 2 CPU cores: lower
chunks-per-tick-batch,max-chunks-per-tick-batch,max-inflight-chunk-tasks,max-loaded-chunks, andregions-per-batch, with adjusted MSPT watermarks. Requirements: Paper 1.21.11, Java 21+.
FastWorldGen 1.0.0
Initial release.
- Plan-first pipeline:
/fwg planshows total chunks, existing chunks, chunks to generate, and region count before any generation happens. /fwg startbegins generation immediately after planning; works with just a world name (uses a configurable default radius) or explicitradius/bounds+ optionalcenter.- Existing chunks are skipped by default; pass
--freshto force regeneration. - Work is grouped into 32×32 chunk regions and batches, ordered for spatial locality.
- Adaptive throughput throttles generation based on live server tick time (MSPT).
/fwg statusshows live progress, speed, ETA, region/batch counts, and MSPT.- Detailed logging: per-region and per-batch completion lines as generation runs, plus a full summary (chunks generated/failed, elapsed time, average speed) when a job finishes.
/fwg pause//fwg resume//fwg cancel, all graceful — in-flight chunk operations are allowed to finish rather than being interrupted.- Job state survives server restarts; the world is re-inspected on startup rather than trusting stored progress.
- Full permission set, all defaulting to
op.
Requirements: Paper 1.21.11, Java 21+.