diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-08-02 17:43:50 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-02 17:43:50 +0900 |
| commit | 45c29405be5169e088023aa01cde50467f3eabed (patch) | |
| tree | 7a5ef472546694d939535a9f1d6d1fb4cbc15f5e | |
| parent | c2575cc3089819e3cd877c743b78f11bc9131e79 (diff) | |
| download | LunaticChat-45c29405be5169e088023aa01cde50467f3eabed.tar.gz LunaticChat-45c29405be5169e088023aa01cde50467f3eabed.tar.bz2 LunaticChat-45c29405be5169e088023aa01cde50467f3eabed.zip | |
feat: support Paper 26.2 (Minecraft 26.2)
Paper 26.2 bundles Adventure 5.2.0, a major bump from the 4.26.1 shipped by 26.1.
Adventure 5 makes ClickEvent generic, so the raw type in
CommandContext.replyWithEvent no longer compiled. Auditing the rest of the
Adventure 5 removals found no other affected usage.
api-version is raised to 26.2, dropping 26.1 support: the two Adventure majors
are not binary compatible, so claiming 26.1 compatibility would be a lie.
Also fixes two problems found while verifying on a real server: the Velocity
healthcheck invoked mc-health, which does not exist in the mc-proxy image, so the
container had never once passed its check; and the debug environments pinned no
build at all, which meant the proxy came up as 4.1.0-SNAPSHOT while the plugin is
compiled against velocity-api 3.5.1. Server versions are now derived by x from
the Gradle coordinates so they cannot drift from what the plugin targets.
| -rw-r--r-- | .github/workflows/release-paper.yaml | 4 | ||||
| -rw-r--r-- | .github/workflows/release-velocity.yaml | 1 | ||||
| -rw-r--r-- | .github/workflows/release.yaml | 5 | ||||
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | README.ja.md | 2 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | docker/folia/compose.yaml | 5 | ||||
| -rw-r--r-- | docker/paper/compose.yaml | 4 | ||||
| -rw-r--r-- | docker/velocity/compose.yaml | 14 | ||||
| -rw-r--r-- | engine/build.gradle.kts | 7 | ||||
| -rw-r--r-- | platform-paper/build.gradle.kts | 6 | ||||
| -rw-r--r-- | platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt | 2 | ||||
| -rw-r--r-- | platform-paper/src/main/resources/paper-plugin.yml | 2 | ||||
| -rw-r--r-- | website/.vitepress/theme/components/DownloadCard.vue | 4 | ||||
| -rw-r--r-- | website/src/docs/developers/resource.md | 3 | ||||
| -rw-r--r-- | website/src/docs/getting-started.md | 2 | ||||
| -rw-r--r-- | website/src/ja/docs/developers/resource.md | 3 | ||||
| -rw-r--r-- | website/src/ja/docs/getting-started.md | 2 | ||||
| -rwxr-xr-x | x | 27 |
19 files changed, 72 insertions, 24 deletions
diff --git a/.github/workflows/release-paper.yaml b/.github/workflows/release-paper.yaml index 2c05231..9459ed6 100644 --- a/.github/workflows/release-paper.yaml +++ b/.github/workflows/release-paper.yaml @@ -74,8 +74,8 @@ jobs: contents: write env: MODRINTH_CHANNEL: release - MODRINTH_PAPER_GAME_VERSIONS: "26.1.x" - MODRINTH_MC_VERSION: "26.1" + MODRINTH_PAPER_GAME_VERSIONS: "26.2.x" + MODRINTH_MC_VERSION: "26.2" steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/release-velocity.yaml b/.github/workflows/release-velocity.yaml index 56f2015..e71eef9 100644 --- a/.github/workflows/release-velocity.yaml +++ b/.github/workflows/release-velocity.yaml @@ -77,6 +77,7 @@ jobs: MODRINTH_VELOCITY_GAME_VERSIONS: |- 1.21.x 26.1.x + 26.2.x steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2389617..48be8f8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -75,11 +75,12 @@ jobs: contents: write env: MODRINTH_CHANNEL: release - MODRINTH_PAPER_GAME_VERSIONS: "26.1.x" + MODRINTH_PAPER_GAME_VERSIONS: "26.2.x" MODRINTH_VELOCITY_GAME_VERSIONS: |- 1.21.x 26.1.x - MODRINTH_MC_VERSION: "26.1" + 26.2.x + MODRINTH_MC_VERSION: "26.2" steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/CHANGELOG.md b/CHANGELOG.md index d9f7965..5596aa8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### v1.3.0 (UNRELEASED) - Paper 26.2 (Minecraft 26.2) is now supported. + - Support for Paper 26.1 has been dropped. Paper 26.2 bundles Adventure 5.2.0, which is not binary compatible with the Adventure 4.x shipped by 26.1, so `api-version` has been raised to `26.2` and the plugin will no longer load on 26.1 servers. - Added cross-server direct messaging functionality - Fixed a bug where the player argument for `/tell` used partial matching (we switched from the old Bukkit API to the new API) diff --git a/README.ja.md b/README.ja.md index 518ab7e..3b96f9e 100644 --- a/README.ja.md +++ b/README.ja.md @@ -20,7 +20,7 @@ cd LunaticChat ./gradlew shadowJar ``` -_[Supports Minecraft 26.1.2](https://ja.minecraft.wiki/w/Java_Edition_26.1.2) | [Requires Java 25+ and Gradle 9+](.github/CONTRIBUTING.md)_ +_[Supports Minecraft 26.2](https://ja.minecraft.wiki/w/Java_Edition_26.2) | [Requires Java 25+ and Gradle 9+](.github/CONTRIBUTING.md)_ ## インストール @@ -20,7 +20,7 @@ cd LunaticChat ./gradlew shadowJar ``` -_[Supports Minecraft 26.1.2](https://minecraft.wiki/w/Java_Edition_26.1.2) | [Requires Java 25+ and Gradle 9+](.github/CONTRIBUTING.md)_ +_[Supports Minecraft 26.2](https://minecraft.wiki/w/Java_Edition_26.2) | [Requires Java 25+ and Gradle 9+](.github/CONTRIBUTING.md)_ ## Installation diff --git a/docker/folia/compose.yaml b/docker/folia/compose.yaml index 80af32f..d64cca5 100644 --- a/docker/folia/compose.yaml +++ b/docker/folia/compose.yaml @@ -12,7 +12,10 @@ services: environment: EULA: "TRUE" TYPE: "FOLIA" - VERSION: "26.1.2" + # platform-paper/build.gradle.kts の paper-api から ./x が導出する + VERSION: "${PAPER_MC_VERSION:?run via ./x}" + # Folia のビルド番号は Paper とは別系列で paper-api から導出できないため手動で固定する + FOLIABUILD: "1" MEMORY: "2G" # デバッグ用高速化設定 diff --git a/docker/paper/compose.yaml b/docker/paper/compose.yaml index 2ebd445..16cb850 100644 --- a/docker/paper/compose.yaml +++ b/docker/paper/compose.yaml @@ -12,7 +12,9 @@ services: environment: EULA: "TRUE" TYPE: "PAPER" - VERSION: "26.1.2" + # platform-paper/build.gradle.kts の paper-api から ./x が導出する + VERSION: "${PAPER_MC_VERSION:?run via ./x}" + PAPER_BUILD: "${PAPER_BUILD:?run via ./x}" MEMORY: "1G" # デバッグ用高速化設定 diff --git a/docker/velocity/compose.yaml b/docker/velocity/compose.yaml index abbb89e..163deef 100644 --- a/docker/velocity/compose.yaml +++ b/docker/velocity/compose.yaml @@ -10,6 +10,9 @@ services: - ./velocity.toml:/server/velocity.toml environment: TYPE: "VELOCITY" + # 未指定だと latest (現時点では 4.x 系) が落ちてくるため固定する。 + # platform-velocity/build.gradle.kts の velocity-api から ./x が導出する + VELOCITY_VERSION: "${VELOCITY_VERSION:?run via ./x}" MEMORY: "512M" ONLINE_MODE: "false" depends_on: @@ -18,7 +21,8 @@ services: s2: condition: service_healthy healthcheck: - test: mc-health + # mc-proxy イメージに mc-health は無い (minecraft-server イメージ側のコマンド) + test: health.sh start_period: 60s interval: 10s timeout: 5s @@ -40,7 +44,9 @@ services: environment: EULA: "TRUE" TYPE: "PAPER" - VERSION: "26.1.2" + # platform-paper/build.gradle.kts の paper-api から ./x が導出する + VERSION: "${PAPER_MC_VERSION:?run via ./x}" + PAPER_BUILD: "${PAPER_BUILD:?run via ./x}" MEMORY: "1G" # デバッグ用高速化設定 @@ -87,7 +93,9 @@ services: environment: EULA: "TRUE" TYPE: "PAPER" - VERSION: "26.1.2" + # platform-paper/build.gradle.kts の paper-api から ./x が導出する + VERSION: "${PAPER_MC_VERSION:?run via ./x}" + PAPER_BUILD: "${PAPER_BUILD:?run via ./x}" MEMORY: "1G" # デバッグ用高速化設定 diff --git a/engine/build.gradle.kts b/engine/build.gradle.kts index cef169a..854d965 100644 --- a/engine/build.gradle.kts +++ b/engine/build.gradle.kts @@ -11,7 +11,10 @@ dependencies { api("io.ktor:ktor-client-cio:3.5.2") // Adventure API (provided by platform implementations) - compileOnly("net.kyori:adventure-api:4.26.1") + // Pinned to the Paper-bundled version. Velocity (velocity-api 3.5.1) still ships Adventure 4.26.1, + // so engine must stay within the API surface both versions share -- currently just the Component type. + // Once platform-velocity moves to velocity-api 4.x (Adventure 5.2.0), this constraint goes away. + compileOnly("net.kyori:adventure-api:5.2.0") - testImplementation("net.kyori:adventure-api:4.26.1") + testImplementation("net.kyori:adventure-api:5.2.0") } diff --git a/platform-paper/build.gradle.kts b/platform-paper/build.gradle.kts index 6cd9af0..1665d67 100644 --- a/platform-paper/build.gradle.kts +++ b/platform-paper/build.gradle.kts @@ -19,12 +19,12 @@ dependencies { api(project(":engine")) // Paper-specific dependencies - compileOnly("io.papermc.paper:paper-api:26.1.2.build.74-stable") + compileOnly("io.papermc.paper:paper-api:26.2.build.87-stable") implementation("com.charleskorn.kaml:kaml:0.104.0") // YAML configuration implementation("org.jetbrains.kotlin:kotlin-reflect:2.4.10") // Annotation processing // Test dependencies - testImplementation("io.papermc.paper:paper-api:26.1.2.build.74-stable") + testImplementation("io.papermc.paper:paper-api:26.2.build.87-stable") testImplementation("io.mockk:mockk:1.14.11") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0") } @@ -40,7 +40,7 @@ tasks { } runServer { - minecraftVersion("26.1.1") + minecraftVersion("26.2") } processResources { diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt index 7f1bb15..53f29f4 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt @@ -50,7 +50,7 @@ class CommandContext( */ fun replyWithEvent( message: Component, - event: ClickEvent, + event: ClickEvent<*>, ) { message .clickEvent(event) diff --git a/platform-paper/src/main/resources/paper-plugin.yml b/platform-paper/src/main/resources/paper-plugin.yml index 5e0074e..3b56cda 100644 --- a/platform-paper/src/main/resources/paper-plugin.yml +++ b/platform-paper/src/main/resources/paper-plugin.yml @@ -1,7 +1,7 @@ name: LunaticChat version: ${version} main: dev.m1sk9.lunaticChat.paper.LunaticChat -api-version: '26.1' +api-version: '26.2' folia-supported: true prefix: LunaticChat load: STARTUP diff --git a/website/.vitepress/theme/components/DownloadCard.vue b/website/.vitepress/theme/components/DownloadCard.vue index 6c16470..af54d10 100644 --- a/website/.vitepress/theme/components/DownloadCard.vue +++ b/website/.vitepress/theme/components/DownloadCard.vue @@ -14,7 +14,7 @@ const t = computed(() => description: 'Download the latest releases of LunaticChat.', requirements: 'Requirements', javaReq: '25 or later', - paperReq: '26.1.x or later', + paperReq: '26.2.x or later', velocityReq: '3.5.x or later', noRelease: 'No release', releaseDate: 'Release date', @@ -44,7 +44,7 @@ const t = computed(() => description: 'LunaticChat の最新リリースをダウンロードできます。', requirements: '動作要件', javaReq: '25 以降', - paperReq: '26.1.x 以降', + paperReq: '26.2.x 以降', velocityReq: '3.5.x 以降', noRelease: 'リリースなし', releaseDate: 'リリース日', diff --git a/website/src/docs/developers/resource.md b/website/src/docs/developers/resource.md index 2859480..ccc9eec 100644 --- a/website/src/docs/developers/resource.md +++ b/website/src/docs/developers/resource.md @@ -38,7 +38,7 @@ The release target switches based on the tag pattern. - Common flow: `validate` (check for a duplicate existing release) → `build` (mise + Gradle setup, `shadowJar`) → `release` (`gh release create --draft` + publish to Modrinth) - The per-platform workflows (paper / velocity) differ from `release.yaml` in requiring a strict match between the tag and `gradle.properties` -- Modrinth game-versions are Paper=`26.1.x` (loaders: paper, folia) and Velocity=`1.21.x` + `26.1.x` (loader: velocity) +- Modrinth game-versions are Paper=`26.2.x` (loaders: paper, folia) and Velocity=`1.21.x` + `26.1.x` + `26.2.x` (loader: velocity) ## CI @@ -53,6 +53,7 @@ The release target switches based on the tag pattern. - `mise.toml` — bun / java zulu-25 (consistent with `JVM_25`) - `x` — a bash debug-server script. `./x <action> <platform> [--stable]` for start/stop/log/clean/rcon/help. Without `--stable` it builds nightly. With `velocity` it brings up **1 Velocity + 2 Paper** so you can test cross-server chat relay for real - `docker/` — `compose.yaml` for three environments: paper / velocity / folia (`itzg/minecraft-server:java25`, etc.). velocity.toml enables plugin messaging with `bungee-plugin-message-channel=true` +- Server versions are derived by `x` from the `paper-api` / `velocity-api` coordinates in `build.gradle.kts` and passed to Compose as `PAPER_MC_VERSION` / `PAPER_BUILD` / `VELOCITY_VERSION`, so the debug environments always run the build the plugin is compiled against. Invoking `docker compose` directly fails with a message telling you to go through `./x`. Only Folia's build number is pinned by hand, since it is numbered separately from Paper ## Related diff --git a/website/src/docs/getting-started.md b/website/src/docs/getting-started.md index 12eb377..104e00d 100644 --- a/website/src/docs/getting-started.md +++ b/website/src/docs/getting-started.md @@ -14,7 +14,7 @@ LunaticChat only supports Paper / Folia servers. It does not work on Spigot or B | Item | Requirement | |------|-------------| -| Minecraft | 26.1 or later | +| Minecraft | 26.2 or later | | Java | 25 or later | | Server | Paper, Folia, or Velocity | diff --git a/website/src/ja/docs/developers/resource.md b/website/src/ja/docs/developers/resource.md index 2e241b7..78d6128 100644 --- a/website/src/ja/docs/developers/resource.md +++ b/website/src/ja/docs/developers/resource.md @@ -38,7 +38,7 @@ Paper と Velocity は別々のバージョン番号を持ち,独立にリリ - 共通フロー: `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) +- Modrinth の game-versions は Paper=`26.2.x` (loader: paper, folia),Velocity=`1.21.x` + `26.1.x` + `26.2.x` (loader: velocity) ## CI @@ -53,6 +53,7 @@ Paper と Velocity は別々のバージョン番号を持ち,独立にリリ - `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` でプラグインメッセージを有効化 +- サーバーのバージョンは `x` が `build.gradle.kts` の `paper-api` / `velocity-api` から導出し,`PAPER_MC_VERSION` / `PAPER_BUILD` / `VELOCITY_VERSION` として Compose に渡す.そのためデバッグ環境は常にプラグインのコンパイル対象と同じビルドで動く.`docker compose` を直接叩くと `./x` を経由するよう促すメッセージで失敗する.Folia のビルド番号だけは Paper と別系列のため手動固定 ## 関連 diff --git a/website/src/ja/docs/getting-started.md b/website/src/ja/docs/getting-started.md index 7525b14..91f4e89 100644 --- a/website/src/ja/docs/getting-started.md +++ b/website/src/ja/docs/getting-started.md @@ -14,7 +14,7 @@ LunaticChat は Paper / Folia サーバーのみをサポートしています | 項目 | 要件 | |------|------| -| Minecraft | 26.1 以降 | +| Minecraft | 26.2 以降 | | Java | 25 以降 | | サーバー | Paper, Folia, または Velocity | @@ -8,6 +8,33 @@ DC_FOLIA="docker compose -f docker/folia/compose.yaml" GRADLE_EXTRA_ARGS="" +# compose 側に値を複製すると Renovate の依存更新と乖離するため、 +# デバッグ環境のサーバーバージョンは build.gradle.kts を単一の情報源として導出する。 +# compose は未設定時に停止するので、全アクションの前に export しておく必要がある。 +derive_server_versions() { + local paper_coord velocity_coord + + paper_coord=$(grep -oE 'paper-api:[0-9.]+\.build\.[0-9]+' platform-paper/build.gradle.kts | head -1) + if [[ -z "$paper_coord" ]]; then + echo "Error: could not derive paper-api version from platform-paper/build.gradle.kts" >&2 + exit 1 + fi + paper_coord=${paper_coord#paper-api:} + PAPER_BUILD=${paper_coord##*.build.} + PAPER_MC_VERSION=${paper_coord%%.build.*} + + velocity_coord=$(grep -oE 'velocity-api:[0-9.]+' platform-velocity/build.gradle.kts | head -1) + if [[ -z "$velocity_coord" ]]; then + echo "Error: could not derive velocity-api version from platform-velocity/build.gradle.kts" >&2 + exit 1 + fi + VELOCITY_VERSION=${velocity_coord#velocity-api:} + + export PAPER_MC_VERSION PAPER_BUILD VELOCITY_VERSION +} + +derive_server_versions + help() { cat <<EOF Usage: ./x <action> <platform> [--stable] |
