Developer Build And Release - Atlasroar/WandererZ GitHub Wiki
Build & Release Process
Toolchain
- JDK 17 (required by both Gradle's build-script tooling and the project's compile target:
tasks.withType(JavaCompile) { options.release = 17 }) - Gradle 8.8 via the wrapper (
./gradlew) with Fabric Loom1.7.x(bumped from Gradle 8.1.1 / Loom 1.3 in v1.6.0 — the RpgDifficulty merge pulled in dependency jars built with a newer mixin-configremapformat that Loom 1.3 cannot parse; see RpgDifficulty Integration) - Minecraft
1.20.1, Yarn mappings1.20.1+build.10
Gradle requires JDK 17 for its build-script tooling and does not support running under JDK 21+ ("Unsupported class file major version 65"). Make sure
JAVA_HOMEpoints at a JDK 17 installation before invoking the wrapper.
Common commands
./gradlew compileJava # fast compile-only check
./gradlew build # full build: compile, process resources, jar, remapJar, remapSourcesJar
./gradlew runClient # launch a dev client
./gradlew runServer # launch a dev server
Build output: build/libs/wandererz-<mod_version>.jar and wandererz-<mod_version>-sources.jar.
Versioning (SemVer)
gradle.properties's mod_version follows Semantic Versioning: MAJOR.MINOR.PATCH.
- MAJOR — breaking save-data, config, or public-API changes
- MINOR — new backward-compatible functionality (e.g. the v1.5.0 JobsAddon integration, the v1.6.0 RpgDifficulty integration — new features, no breaking changes)
- PATCH — backward-compatible bug fixes
Other relevant properties in gradle.properties: minecraft_version, yarn_mappings, loader_version, fabric_version, cloth_config_version.
CI (.github/workflows)
build.yml— runs on every push/PR, builds on JDK 17 across Ubuntu and Windows via./gradlew build.publish.yml— manual (workflow_dispatch) release pipeline: builds, readsmod_version/minecraft_versionfromgradle.properties, publishes to Modrinth + CurseForge via mc-publish usingCHANGELOG.mdas the changelog body, then posts a Discord webhook announcement.
Release checklist
- Bump
mod_versioningradle.properties(following SemVer above). - Rewrite
CHANGELOG.mdwith an### Added/### Fixed/### Changedsummary of the release (this file is read verbatim bypublish.yml). - Merge to the
1.20branch. - Tag the merge commit (
git tag -a vX.Y.Z -m "...",git push origin vX.Y.Z) and create a GitHub Release with the built jars attached. - Run the
publishworkflow (or dispatch it manually) to push to Modrinth/CurseForge and announce on Discord.