ビルド・リリース・バージョニング
Gradle マルチモジュール構成で,engine を共有しつつ Paper / Velocity を独立した成果物としてビルド・リリースします.
ビルド構成
- ルート
build.gradle.kts— Kotlin 2.4.0 + serialization / Shadow / ktlint / dokka を管理.JVM ターゲットは JVM_25.テストは JUnit Platform + jacoco で,共通テスト依存を全モジュールへ注入 engine— コアライブラリ (serialization / coroutines / ktor) をapi()で公開しプラットフォームへ伝播.Adventure はcompileOnly.Shadow を持たない純ライブラリplatform-paper—version = paperVersion.api(project(":engine")).paper-api をcompileOnly,KAML + kotlin-reflect をimplementation.成果物はLunaticChat-<ver>.jar(classifier なし,jarは無効化)platform-velocity—version = velocityVersion.api(project(":engine")).velocity-api をcompileOnly+annotationProcessor(@Plugin処理用).成果物はLunaticChat-<ver>-velocity.jar(classifier で区別)dokka— engine/paper/velocity を集約し HTML に README を include
両プラットフォームの processResources は git short hash と isNightly から version / gitCommitHash / channel を算出し,paper-plugin.yml / velocity-plugin.json と build-info.properties にトークン展開します.
独立バージョニング
properties
# gradle.properties
paperVersion=1.2.2
velocityVersion=1.1.0Paper と Velocity は別々のバージョン番号を持ち,独立にリリースできます.互換性を数値バージョンではなく engine 共有の ProtocolVersion で保証しているため,更新頻度の異なる 2 プラットフォームをそれぞれのペースでバンプ・公開できるからです.ワイヤ形式は JSON + ignoreUnknownKeys で前方互換,プロトコルの MAJOR 一致 + MINOR 範囲チェックで後方互換をコントロールします.
リリースワークフロー
タグのパターンでリリース対象が切り替わります.
| ワークフロー | トリガタグ | ビルド対象 | バージョン検証 |
|---|---|---|---|
release.yaml | v* | Paper + Velocity 両方 | gradle.properties から両バージョン抽出 |
release-paper.yaml | paper/v* | Paper のみ | タグと paperVersion の一致を必須検証 |
release-velocity.yaml | velocity/v* | Velocity のみ | タグと velocityVersion の一致を必須検証 |
- 共通フロー:
validate(既存リリースの重複チェック) →build(mise + Gradle setup,shadowJar) →release(gh release create --draft+ Modrinth 公開) - 個別ワークフロー (paper / velocity) はタグと
gradle.propertiesの厳密一致を要求する点がrelease.yamlと異なる - Modrinth の game-versions は Paper=
26.1.x(loader: paper, folia),Velocity=1.21.x+26.1.x(loader: velocity)
CI
ci.yaml は main への push / PR / 手動実行で動きます.
build_plugin— ktlintCheck → test + jacocoTestReport → Codecov アップロード → nightly shadowJar (-PisNightly=true) → artifact 保持build_dokka/deploy_dokka— Dokka 生成 → GitHub Pages デプロイ (main push のみ)build_docs—website/を bun で format/lint/build → Cloudflare Workers (wrangler) へデプロイ (main push のみ)
開発環境
mise.toml— bun / java zulu-25 (JVM_25と整合)x— bash 製のデバッグサーバースクリプト../x <action> <platform> [--stable]で start/stop/log/clean/rcon/help.--stable省略時は nightly ビルド.velocity指定時は 1 Velocity + 2 Paper を立ち上げ,サーバー間チャット中継を実地検証できるdocker/— paper / velocity / folia の 3 環境にcompose.yaml(itzg/minecraft-server:java25等).velocity.toml はbungee-plugin-message-channel=trueでプラグインメッセージを有効化