Tags
Creators
Details
Licensed GPL-3.0-only
Published 3 weeks ago
Updated 2 days ago
All versions
0.9.0-alpha.1
Alpha
SpiralGenesis 0.9.0-alpha.12 months ago 6
Uploaded by
Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
Platforms
Folia
Paper
Purpur
Changes
First published build. Everything below has been in the repository since the initial commit; this is the point at which it became downloadable.
Changed
- Spawn allocation now searches within a cell before abandoning it. Previously a single
unsafe block at the cell centre discarded the whole
cell-sizeplot and permanently consumed a spiral index; candidates are now probed outward from the centre first (placement.stride,placement.max-candidates). - Candidates are rejected when they sit below the surrounding terrain
(
safety.max-pit-depth), when their surroundings are too uneven (safety.max-roughness), when lava or powder snow is adjacent, or when there is no headroom for a player. This is what keeps spawns out of ravines, sinkholes and cliff edges, whose floors the heightmap reports as "the surface". - Exhausting
safety.max-scan-attemptsnow settles on the best candidate seen during the scan rather than whichever one happened to be probed last. safety.max-scan-attemptsnow defaults to8rather than50. Worst-case allocation ismax-scan-attempts * max-candidatesticks, and cells rarely fail outright now that the search looks inside them.
Added
- Tagging a release now publishes to Modrinth and Paper Hangar as well as GitHub Releases. Both steps are skipped when their token is absent, so a tag can be cut before the registry projects exist. Release notes come from this file.
- The release workflow rejects malformed tags and refuses to publish a stable release whose version has no changelog section.
placement.strategy—FIRST_SAFE(default, keeps the player at the cell centre when it is viable and stops probing there),FLATTEST, orHIGHESTwith aheight-ceilingthat keeps ranking off jagged peaks./sgen simulate <count>— runs allocation against the live world and reports indices consumed per spawn, fallbacks, surface range, and a per-rule rejection breakdown. Uses a throwaway counter, so it never advances the live spiral index. Allocation is otherwise only reachable by a player joining, which made the terrain rules untestable without a game client.- CI now drives
/sgen simulateagainst a generated world and fails on regressions in index burn, fallback use, or spawns belowmin-surface-y— so a safety threshold that is too strict for real terrain is caught before release. scripts/dev-server.shfor local testing../gradlew runServeris currently unusable: run-paper 2.x resolves servers through PaperMC's retired v2 API, and the 3.x line that speaks v3 requires Gradle 9..gitattributespinning shell scripts to LF. Withcore.autocrlf=true,gradlewwas checked out with CRLF and failed under bash with/bin/sh^M: bad interpreter.- Initial project scaffolding with Gradle Kotlin DSL and Java 21 toolchain.
- Deterministic 2D square spiral coordinate transformation engine (
SpiralMath). - Asynchronous Paper chunk and heightmap probing with ocean and hazard filtering (
SpawnManager). - Cross-play authentication parity for Bedrock (
Floodgate) and Java (AuthMe-Reloaded). - Persistent per-player YAML storage (
data.yml). - Administrative
/sgencommand suite (setcenter,setspawn,reassign,tp,info,reload). - Automated multi-tier release workflows for GitHub Releases, Modrinth, and Paper Hangar.
- JUnit 5 test suite for mathematical verification.
Optional dependencies
Any compatible version
Any compatible version
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:v2NrsydG:TlAjgcvl"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:v2NrsydG:TlAjgcvl"
}

