Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for Ninja6-MC

Paper/Folia: spawns each new player on a safe 500x500 plot in an expanding spiral, free of oceans, ravines, and cliffs.

Report SpiralGenesis?

B

1.0.0-beta.4

Compatibility is unchanged from 1.0.0-beta.3: Paper, Purpur, other Paper forks and Folia on Minecraft 1.20.x, 1.21.x and 26.1 to 26.3. CI now verifies Folia on 1.20.4, 1.21.11, 26.2 and 26.3; PaperMC has published Folia 26.3 only as experimental (alpha) builds so far, and CI boots the plugin on the latest of those. Longer Paper 26.3 and Folia live soaks remain for 1.0.0 in #191. Minecraft 26.1 and newer need the server to run on Java 25; Java 21 is enough for 1.20 and 1.21.

Upgrading from 1.0.0-beta.3 is in place and needs no migration step; an upgrade from an earlier release also takes that release's upgrade notes. Stop the server and copy plugins/SpiralGenesis before you upgrade. An existing data.yml loads unchanged. The only change to it is three optional per-player keys, first-allocation-commands-owed, first-allocation-commands-run and first-allocation-commands-incomplete, which are written only while allocation.first-allocation-commands is non-empty and only for a player who is allocated a plot after that; a server that leaves the list empty, as it is by default, writes exactly what 1.0.0-beta.3 wrote. An existing config.yml is not rewritten: the new allocation.first-allocation-commands key it lacks takes its default, an empty list, so no command runs until you add one.

Rolling back to 1.0.0-beta.3 keeps every plot and every recorded structure. 1.0.0-beta.3 does not read the three keys and writes them back unchanged when it saves, so a later move forward to 1.0.0-beta.4 sees the markers as they were: no player is given the commands a second time, because first-allocation-commands-run is kept. A player still owed the commands when you rolled back stays owed, and gets them, and is sent to their plot, on their next completed arrival after the return, including a player who has been playing on 1.0.0-beta.3 meanwhile; 1.0.0-beta.3 does not clear the owed marker if you reassign that player, so the commands then run at the new plot. A player first allocated while on 1.0.0-beta.3 is never owed them, so give that kit by hand. A player with a first-allocation-commands-incomplete marker is named in a warning once at the next 1.0.0-beta.4 start.

Three things in the log and in /sgen simulate change. Allocation now rejects a point with nothing to stand on as NO_FLOOR and one with lava within 4 blocks, or water above the feet, as NEARBY_FLUID; both are counted as their own reasons by /sgen simulate, so its rejection breakdown can show more rejections than before on the same terrain. A new plot is re-checked once, 5 seconds after the player first reaches it. A cell that player allocation skips because none of its candidates is usable is logged at INFO as Skipped plot <label>: no usable candidate spawn. Rejections: {...}., which can add many lines on a server with a lot of ocean or cave terrain. A cell where every candidate is inside an existing claim, and a cell that overlaps another centre's plot, keep their earlier lines. And when an in-cell repair finds no point other than the one that failed, the line now begins No safe point other than the one that failed was found among the and no longer No safe point found among the, and no Repaired plot line is logged for it; update any log filter that matches the old wording.

Added

  • Optional allocation.first-allocation-commands console commands for a player's first completed plot arrival, with {player} and {uuid} placeholders and a durable run-once marker. Commands still owed after a failed teleport survive quits and restarts. Empty by default and reloadable; ordinary returning players, reassignments and repairs do not run them.
  • A new plot is re-checked 5 seconds after the player first reaches it. Allocation judged a plot from the blocks read when its chunk loaded, so lava or water that flowed onto it a few ticks later was only found once the player died there. The respawn re-check now runs once more after a first allocation, a placement recorded while the player was away, a re-asserted teleport or /sgen reassign, on the thread that owns the plot's chunk, and a player still at an unsafe plot is moved by the in-cell repair. One task per placement; nothing watches plots after it, and arrival grants no invulnerability.

Changed

  • The release workflow publishes each destination in its own job. This changes how maintainers release, not the plugin. Publish Release checks the candidate run, public registry state and the absence attestations in a plan job before anyone is asked to approve, then publishes GitHub Releases, Modrinth and Hangar in separate jobs, so an outage at one registry no longer blocks the others, and scripts/release.sh publish ... --destinations hangar retries one destination alone. The Hangar project page follows the highest stable version, or the highest pre-release until the first stable, and the GitHub latest marker follows the highest stable release only. Both are rechecked under one lock across tags before each write, and shared-state retries them without uploading a version. A changed Modrinth project description is pasted by hand behind its own approval and then checked against the generated file. Modrinth uploads are no longer retried within a run after a lost response, release candidates are kept for 90 days instead of 30, and the Modrinth and Hangar changelogs carry the CHANGELOG.md section without GitHub's generated change list.
  • CI and the release candidate gate boot the plugin on Folia 26.3. CI runs it on the latest Folia 26.3 build, which PaperMC publishes only as experimental (alpha) so far, and also sends a real client through the allocation gate there. A release candidate needs the Folia 26.3 boot to pass as well as the other seven.

Fixed

  • Unusable cells skipped during player allocation are now logged. Each skipped plot reports its own rejection reasons and counts at INFO, making terrain and hazard skips visible without changing allocation or scan budgets.
  • Allocation no longer places a spawn beside a lava pool its chunk samples missed. Lava nearby was looked for only in eight sample columns across the chunk, so a pool between them, or across a chunk edge, went unseen. Every block in a 9 by 9 box around the point, from one below the feet to three above, is now read, and a candidate with lava anywhere in it, or water above the feet, is rejected as NEARBY_FLUID, which /sgen simulate reports as its own reason. Such a candidate is never the fallback. A point near a chunk edge loads the neighbouring chunks its box reaches, up to three, before it is scored.
  • Spawns are no longer placed on top of bamboo, logs or other tall plants. Allocation and the in-cell repair took the surface from the motion-blocking heightmap, which skips leaves but not bamboo or logs, so a bamboo jungle could give a plot at the top of a stalk, no spawn structure, and a fall to the ground. The surface is now the ground under natural plants, and a candidate is also rejected, as NO_FLOOR, when the respawn re-check would find nothing to stand on, so allocation, repair and that re-check agree on what ground is. A repair never returns the point that just failed its re-check, and when the cell has no other usable point the log says so instead of reporting a repair.

Information

Published
November 11, 2026
0Downloads

Platforms

Paper
Paper
1.20–26.3

Dependencies

PaperPaper

Dependencies: Paper

Plugins and libraries a server needs for this version to run.

No dependencies

Add anything a server has to install alongside this version.