← ClaudeAtlas

nms-reflection-bridgelisted

反射式 NMS 存取橋接:避開 CraftBukkit v1_21_R1 版本編譯依賴,透過 reflection 快取取得跨版本相容性 / Reflection-based NMS bridge for cross-version compatibility without Paperweight compile dependency
MrPippi/MJP-Claude-Skills · ★ 1 · Code & Development · score 70
Install: claude install-skill MrPippi/MJP-Claude-Skills
# NMS Reflection Bridge / NMS 反射橋接器 ## 技能名稱 / Skill Name `nms-reflection-bridge` ## 目的 / Purpose 提供**不依賴 Paperweight userdev** 的 NMS 存取方式,透過 Java reflection + 快取 Method/Field handle,使同一 JAR 可在多個 NMS 版本執行(例如 1.21、1.21.1、1.21.3)。 > 若專案只需單一版本,請使用 Paperweight 的原生 API(`nms-packet-sender` 等)更簡潔。本技能適用於跨版本分發場景。 ## NMS 版本需求 / NMS Version Requirements - Paper 1.20.5+(原生使用 Mojang mappings) - 不需 Paperweight 編譯依賴 - 僅需 `org.spigotmc:spigot-api` 或 `io.papermc.paper:paper-api` ## 觸發條件 / Triggers - 「reflection bridge」「反射橋接」「NMS reflection」 - 「跨版本 NMS」「cross-version」「版本無關」 - 「避開 Paperweight」「no paperweight」 ## 輸入參數 / Inputs | 參數 | 範例 | 說明 | |------|------|------| | `package_name` | `com.example.nms` | 產出類別所在 package | | `bridge_class_name` | `NmsBridge` | 核心反射類 | | `cache_enabled` | `true` | 是否快取 Method handle | ## 輸出產物 / Outputs - `NmsBridge.java` — 反射工具核心(含 Method 快取) - `NmsClasses.java` — NMS 類別名稱常數 - `MethodHandleCache.java` — `java.lang.invoke.MethodHandle` 快取機制 ## 代碼範本 / Code Template ### `NmsClasses.java` ```java package com.example.nms; /** * Mojang-mapped NMS 類別全名常數。 * Paper 1.20.5+ runtime 原生使用這些名稱,無需 remap。 */ public final class NmsClasses { private NmsClasses() {} public static final String SERVER_PLAYER = "net.minecraft.server.level.ServerPlayer"; public static final String SERVER_LEVEL = "net.minecraft.server.level.ServerLevel"; public static final String SERVER_GAME_PACKET_LISTENER = "net.minecraft.server.network.ServerGamePacketListe