Paper/Folia: spawns each new player on a safe 500x500 plot in an expanding spiral, free of oceans, ravines, and cliffs.
Compatibility. Paper, Purpur, other Paper forks and Folia: Minecraft 1.20.x, 1.21.x and 26.1 to 26.3. CI verifies Folia on 1.20.4, 1.21.11 and 26.2. Folia 26.3 is supported but not yet verified because no official build is available. Paper 26.3 is verified by CI and by isolated runs with real clients. Longer Paper 26.3 and Folia live soaks, and verification of Folia 26.3 once a build is available, move to 1.0.0 in #191. Minecraft 26.1 and newer need the server to run on Java 25, which is Mojang's requirement; the jar is Java 21 bytecode, and Java 21 is enough for 1.20 and 1.21.
The data.yml format is frozen as of this release. Later releases will read what this
one writes, and changing the format will be a breaking change that waits for a major
version. Upgrading from 1.0.0-alpha.1 or 1.0.0-alpha.2 is in place and needs no
migration step. An upgrade from 1.0.0-alpha.1 also takes the changes in the
1.0.0-alpha.2 upgrade notes: a server whose origin.world does not name a loaded world
stops allocating until the name is corrected, and the owner of a spawn claim created under
ADMIN_CLAIM cannot /trust anyone on it until /sgen protect repairs it. Stop the server
and copy plugins/SpiralGenesis before you upgrade. Rolling back means stopping the
server, restoring that copy and starting the older jar; this was verified to restore
data.yml byte for byte. Putting a data.yml written by this version or a later one
under an older jar is not supported.
Added
- Paper 26.3 CI coverage, including a real player passing through the allocation gate, unsafe-plot repair after respawn, and retrying a refused plot teleport.
Fixed
- A player held at world spawn is no longer placed inside it. When a plot was unsafe
and the in-cell repair found no replacement, or the respawn handler held a player off
the plot while it repaired, the player was sent to the world spawn block exactly as
stored. Where that block is solid they suffocated, and since the plot was still unsafe
at the next death the cycle repeated until an operator moved them. The player is now
sent to the first position in the world spawn column, at or above its stored height,
that has room for them and passes the same floor and hazard checks as a plot, or the
first such position below it when world spawn is in the air. A respawn that cannot
check world spawn inline, because the thread handling it does not own that chunk, still
respawns at the stored block and is moved once placed, unless something has moved the
player on by then. Either way world spawn is read once, so a
/setworldspawnwhile the position is found cannot move the search into a chunk the thread was never checked to own, which Folia would reject. When nothing in the column passes, the stored block is used as before and a warning names/setworldspawn. A player still on the death screen is unchanged: their plot is cleared as their respawn point and the server's own world spawn search places them, on Paper and Folia alike. Nothing here depends on GriefPrevention. - A repaired plot no longer lands inside a neighbour's claim. A revalidation repair
searched the player's own cell without the claim check allocation gained in
1.0.0-alpha.2, so a claim reaching into the cell from outside could receive the
replacement point and the player's respawn point with it. A repair now rejects a
candidate whose
protection.sizesquare reaches into a GriefPrevention claim the player neither owns nor is trusted on by name at any level; trust given topublicdoes not count, administrative claims follow the same rule so anADMIN_CLAIMspawn claim stays usable, and inside a subdivision the subdivision decides. When no candidate is left the repair fails as before. Without GriefPrevention, and on Folia, repairs are unchanged.
What's Changed
- docs(release): document the release approval step and env secrets by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/169
- docs: present GriefPrevention and spawn claims as optional by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/170
- fix(respawn): stand held players clear of a solid world spawn by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/171
- ci(smoke): walk the gate bot on both axes by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/173
- fix(repair): keep repaired plots out of other players' claims by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/172
- fix(respawn): read world spawn once and drop repair counts on quit by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/175
- ci: stamp snapshot builds with git describe instead of a fixed version by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/177
- chore(ci): validate release tags for snapshot versions by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/179
- feat(release): promote verified candidate artifacts by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/181
- docs(release): correct Hangar key permissions by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/184
- test(compat): exercise Paper 26.3 with a real player by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/186
- test(ci): verify live spawn safety on Paper 26.3 by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/188
- docs(release): prepare 1.0.0-beta.1 by @BharathASL in https://github.com/Ninja6-MC/SpiralGenesis/pull/190
Full Changelog: https://github.com/Ninja6-MC/SpiralGenesis/compare/v1.0.0-alpha.2...v1.0.0-beta.1
Platforms
Dependencies
- AuthMeReloaded Optional
- Floodgate Optional
- GriefPrevention Optional
- Multiverse-Core Optional