Repository navigation
Releasing
Releases come from the “Release” workflow on GitHub. Nothing in the repository holds the version; the workflow takes it as input.
Add a “## X.Y.Z” section to CHANGELOG.md, written for server owners: patch for fixes, minor for features, major for breaking changes. The workflow takes its notes from there.
gh workflow run release.yml -R MairwunNx/minecraft-worldapi -f version=X.Y.Z -f modrinth=true -f hangar=trueIt builds with the version, runs the tests, tags vX.Y.Z, and publishes:
-
GitHub: a release with
worldapi-paper-X.Y.Z.jar,worldapi-fabric-X.Y.Z.jar, andworldapi-neoforge-X.Y.Z.jar, each again without the version, soreleases/latest/download/worldapi-fabric.jaralways fetches the newest;worldapi.jaris the Paper jar, for older links. -
Modrinth (
modrinth=true): projectworldapi, one version per platform:X.Y.Z+paper,X.Y.Z+fabric(with Fabric API required), andX.Y.Z+neoforge, the mods for the client or the server. It syncsMODRINTH.mdas the project page. -
Hangar (
hangar=true): projectMairwunNx/WorldAPI, Paper only, asX.Y.Z. The version links to the GitHub jar, since the jar is over Hangar's 15 MB limit. The Hangar page doesn't sync; edit it on the site.
The changelog input overrides the CHANGELOG.md section. Modrinth and Hangar need the MODRINTH_TOKEN and HANGAR_TOKEN secrets.
Watch the run with gh run watch, then look at the GitHub release, the Modrinth versions, and the Hangar versions page. Never delete or re-tag a published release; finish a half-failed one by hand.
The moonlands input, on by default, ships the release to Moonlands, my server, through its own workflow.
The expansion API has its own version and its own workflow. Set ExpansionApi.VERSION, add a “## X.Y.Z” section to expansion/CHANGELOG.md, then:
gh workflow run expansion.yml -R MairwunNx/minecraft-worldapi -f version=X.Y.ZIt signs com.mairwunnx:worldapi-expansion, publishes it to Maven Central at once through the Central Portal, waits until it's there, and tags expansion-vX.Y.Z. A version goes to Central once and stays. When a WorldAPI release needs a new API, release the library first.