- JDK — see Toolchain Versions for the supported range
- Dependencies installed to local Maven repo
./gradlew :infinity-client:runFor complete setup instructions including all dependencies:
| Command | Description |
|---|---|
./gradlew build |
Build the project |
./gradlew :infinity-client:run |
Run the game (Linux/Windows default) |
./gradlew :infinity-client:runMac |
Run on macOS (-XstartOnFirstThread + headless AWT) |
./gradlew :infinity-client:runX11 |
Run on Linux/Wayland with X11 backend |
./gradlew clean |
Clean build artifacts |
./gradlew dependencyUpdates |
Check for dependency updates |
./gradlew test generates coverage reports at
<module>/build/reports/jacoco/test/ — html/index.html for humans,
jacocoTestReport.xml for SonarCloud.
./gradlew check runs jacocoTestCoverageVerification per module and fails
if line OR branch coverage drops below the floor in gradle.properties
(min<Module>LineCoverage / min<Module>BranchCoverage). The pre-push
hook (.githooks/pre-push) inherits this gate.
To ratchet up after raising coverage: re-read the report-level LINE/BRANCH counters from the XML, raise the matching property, commit. Same shape as the PMD/Checkstyle ceiling ratchet, inverted (minimums not maximums).
Editing the Groovy fragment files (zone/conf/<preset>/*.groovy,
zone/arenas/<name>/arena.groovy) at runtime updates the per-arena
ConfigRegistry snapshot. The flow-on effect depends on which fragment
you edited:
- Ship-stat fragments (
ships.groovy) — re-flow into existing live ships viaShipSpawnSystem.reprojectAll(). Capability stats and*Maxupdate; Energy/Health/inventory current counts are preserved (seeShipSpawnSystemTuningProjectionTest). - Weapon and prize fragments (
bombs.groovy,bullets.groovy,prize-weights.groovy, etc.) — registry update only. Existing in-flight projectiles + already-spawned prizes use the OLD config; next spawn / next shot picks up the NEW config. Per the template-vs- instance split (seeconfig-pattern.mdand ADR-0002).
When changing an arena fragment, pause new gameplay long enough for the live shots/prizes to expire if you need the change to apply uniformly.