NMS UIv1.0.0已發布
NMS 自定義容器 GUI
NMS Custom Menu
繼承 AbstractContainerMenu 建立自定義容器 GUI,支援 slot 事件攔截與資料同步(Paper NMS + Mojang mappings)。
nmsinventoryguicontainermenuabstractcontainermenumojang-mapped
更新:2026年4月30日GitHub
NMS Custom Menu
目的
透過繼承 NMS AbstractContainerMenu 實作自定義容器 GUI,支援 slot 操作攔截、資料同步,比純 Bukkit API 更靈活。
平台需求
- Paper 1.21 – 1.21.3
- Paperweight userdev 1.7.2+
- Mojang mappings(Paper 1.20.5+ 原生支援)
- Java 21
產生的代碼
CustomMenu.java
public class CustomMenu extends AbstractContainerMenu {
// 注册 GUI slot(容器區 + 玩家物品欄)
// stillValid() — 控制是否允許保持開啟
// quickMoveStack() — 攔截 shift-click
// getBukkitView() — 提供 Bukkit InventoryView
}
CustomMenuProvider.java + 開啟方式
// 開啟 GUI
ServerPlayer nms = ((CraftPlayer) player).getHandle();
nms.openMenu(new CustomMenuProvider("§6商店"));
執行緒安全
nms.openMenu()及所有 GUI 操作必須在主執行緒呼叫- Bukkit 事件回呼(InventoryClickEvent)已在主執行緒觸發