Paper/Folia: spawns each new player on a safe 500x500 plot in an expanding spiral, free of oceans, ravines, and cliffs.
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-commandsconsole 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
planjob 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, andscripts/release.sh publish ... --destinations hangarretries 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, andshared-stateretries 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 theCHANGELOG.mdsection 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 simulatereports 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.
Platforms
Dependencies
- AuthMeReloaded Optional
- Floodgate Optional
- GriefPrevention Optional
- Multiverse-Core Optional