nms-version-adapterlisted
Install: claude install-skill MrPippi/MJP-Claude-Skills
# NMS Version Adapter / NMS 多版本適配器
## 技能名稱 / Skill Name
`nms-version-adapter`
## 目的 / Purpose
建立抽象 Adapter 介面定義共通 NMS 操作,再為每個支援的 MC 版本提供具體實作,runtime 時根據伺服器版本自動選擇正確 adapter。適合需支援多版本發佈的商業/大型 plugin。
## NMS 版本需求 / NMS Version Requirements
- 支援範圍:Paper 1.21 – 1.21.3
- 建議搭配 `nms-reflection-bridge` 或 multi-module Gradle build
- Adapter 實作可選 Paperweight(需 multi-module)或純反射
## 觸發條件 / Triggers
- 「version adapter」「版本適配器」「multi-version」
- 「多版本相容」「跨版本 NMS」「backwards compatibility」
- 「adapter pattern NMS」
## 輸入參數 / Inputs
| 參數 | 範例 | 說明 |
|------|------|------|
| `package_name` | `com.example.nms` | 產出類別所在 package |
| `adapter_interface` | `NmsAdapter` | 抽象介面名稱 |
| `supported_versions` | `1.21, 1.21.1, 1.21.3` | 需支援的 MC 版本列表 |
## 輸出產物 / Outputs
- `NmsAdapter.java` — 共通抽象介面
- `AdapterRegistry.java` — 版本偵測與 adapter 選擇器
- `V1_21_Adapter.java` — Paper 1.21/1.21.1 實作
- `V1_21_3_Adapter.java` — Paper 1.21.3 實作
- `NmsVersion.java` — 版本列舉
## Paperweight 建置設定 / Build Setup
建議採用 **multi-module Gradle build**,每個版本各自 module 編譯:
```
my-plugin/
├── build.gradle
├── core/ # 版本無關邏輯 + NmsAdapter 介面
├── adapter-v1_21/ # 使用 paperweight 1.21 編譯
├── adapter-v1_21_3/ # 使用 paperweight 1.21.3 編譯
└── plugin/ # 整合所有 adapter 並打包
```
## 代碼範本 / Code Template
### `NmsVersion.java`
```java
package com.example.nms;
import org.bukkit.Bukkit;
public enum NmsVersion {
V1_21,
V1_21_1,
V1_21_3,
UNSUPPORTED;
public static NmsVersion detect(