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 Loom 1.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-config remap format that Loom 1.3 cannot parse; see RpgDifficulty Integration)
  • Minecraft 1.20.1, Yarn mappings 1.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_HOME points 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, reads mod_version/minecraft_version from gradle.properties, publishes to Modrinth + CurseForge via mc-publish using CHANGELOG.md as the changelog body, then posts a Discord webhook announcement.

Release checklist

  1. Bump mod_version in gradle.properties (following SemVer above).
  2. Rewrite CHANGELOG.md with an ### Added / ### Fixed / ### Changed summary of the release (this file is read verbatim by publish.yml).
  3. Merge to the 1.20 branch.
  4. 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.
  5. Run the publish workflow (or dispatch it manually) to push to Modrinth/CurseForge and announce on Discord.