Repository navigation
Building and Releasing
github-actions[bot] edited this page Jun 28, 2026
·
1 revision
Requires Git and Maven. JDK 21 builds the 1.21 line; JDK 25 builds the 26 line.
# 26.x build (default, needs JDK 25)
mvn clean package
# 1.21.x build (needs JDK 21+)
mvn clean package -Dpaper.version=1.21.4-R0.1-SNAPSHOT \
-Dmaven.compiler.release=21 \
-Dapi.version=1.21 -Dtarget.id=mc1.21 \
-Dmc.range="1.21.4 - 1.21.x"Jars are produced in target/ as connection-verify-<version>-<target>.jar.
The Build
workflow runs on every push and pull request:
-
validate — checks
plugin.yml,config.ymlandlang/*.ymlare valid. -
build — a matrix builds both targets (
mc1.21on JDK 21,mc26on JDK 25) and uploads each jar as an artifact. -
release (main only) — publishes a GitHub Release
v<version>with both jars, and (optionally) to Modrinth.
The Publish Wiki
workflow mirrors the wiki/ folder to this GitHub Wiki on every push to main.
Releases can be published to Modrinth automatically. It is opt-in: nothing is sent to Modrinth unless you add a token secret.
-
Create the project on Modrinth (type: Plugin, loader: Paper). Set its
slug to
connection-verify(or update the slug inbuild.yml). - Create a token: Modrinth → Settings → PATs → create a token with the Create versions scope (add Write projects if you also want the description synced).
-
Add the secret: GitHub repo → Settings → Secrets and variables →
Actions → New repository secret:
- Name:
MODRINTH_TOKEN - Value: the token from step 2.
- Name:
That's it. On the next push to main:
- the built jars are uploaded as a new Modrinth version, and
- the project description is synced from
resources/modrinth.md.
If MODRINTH_TOKEN is not set, both steps are skipped and only the GitHub
Release is created.
Edit the game-versions list in the Publish to Modrinth step of build.yml
to match the Minecraft versions you support.
- Bump
<version>inpom.xmlonmain. - Push to
main. CI builds both jars, createsv<version>on GitHub, and (if configured) publishes to Modrinth.
Pushing the same version again refreshes that release/version in place.