summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-08-02 17:43:50 +0900
committerGitHub <noreply@github.com>2026-08-02 17:43:50 +0900
commit45c29405be5169e088023aa01cde50467f3eabed (patch)
tree7a5ef472546694d939535a9f1d6d1fb4cbc15f5e
parentc2575cc3089819e3cd877c743b78f11bc9131e79 (diff)
downloadLunaticChat-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.yaml4
-rw-r--r--.github/workflows/release-velocity.yaml1
-rw-r--r--.github/workflows/release.yaml5
-rw-r--r--CHANGELOG.md1
-rw-r--r--README.ja.md2
-rw-r--r--README.md2
-rw-r--r--docker/folia/compose.yaml5
-rw-r--r--docker/paper/compose.yaml4
-rw-r--r--docker/velocity/compose.yaml14
-rw-r--r--engine/build.gradle.kts7
-rw-r--r--platform-paper/build.gradle.kts6
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/core/CommandContext.kt2
-rw-r--r--platform-paper/src/main/resources/paper-plugin.yml2
-rw-r--r--website/.vitepress/theme/components/DownloadCard.vue4
-rw-r--r--website/src/docs/developers/resource.md3
-rw-r--r--website/src/docs/getting-started.md2
-rw-r--r--website/src/ja/docs/developers/resource.md3
-rw-r--r--website/src/ja/docs/getting-started.md2
-rwxr-xr-xx27
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)_
## インストール
diff --git a/README.md b/README.md
index d51e532..9e3c546 100644
--- a/README.md
+++ b/README.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 |
diff --git a/x b/x
index aa9a210..b9495b6 100755
--- a/x
+++ b/x
@@ -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]