指南

如何製作 Minecraft GUI 選單插件

更新於 2026年10月18日

伺服器選單(傳送點、商店、套組、設定)其實是由插件開啟並控制的箱子物品欄。每一格放一個物品,當作按鈕。它們看起來很簡單,但只要選單沒有取消每一種點擊,玩家就能把按鈕直接帶回家。這份指南說明選單如何運作,以及怎麼讓 Codexe 做出一個並測試它。

從這個範例開始。

用 Codexe 產生這個

逐步說明

  1. 1.先畫出選單草圖

    箱子選單有 1 到 6 列,每列 9 格(共 9 到 54 格)。寫明哪個物品放在哪一格、每次點擊會做什麼,以及哪些格子只是裝飾,例如玻璃片。

  2. 2.用 holder 建立物品欄

    用 Bukkit.createInventory(holder, size, title) 開啟它,並使用你自己的 InventoryHolder 類別。插件就是靠 holder 判斷這次點擊發生在它的選單裡,而不是一般的箱子。

  3. 3.處理點擊

    在 InventoryClickEvent 裡檢查 holder、取消事件,然後執行那一格對應的動作。動作完成後關閉或重新整理選單。

  4. 4.擋住所有其他移動物品的方式

    InventoryDragEvent 也要取消,並在選單開著的時候處理 Shift 點擊、數字鍵,以及在玩家自己物品欄裡的點擊。

  5. 5.清單很長就加上分頁

    放不下的傳送點或商店物品,就把最下面一列留給上一頁、下一頁和關閉按鈕。

  6. 6.用指令開啟

    例如 /warps,或從物品、NPC 開啟。如果選單不是給所有人用的,就替指令加上權限。

  7. 7.建置並逐一點擊測試

    讓 Codexe 編譯插件,加入測試伺服器,把每個按鈕都點一遍。測試玩家也能幫你開啟選單、點擊格子。

讓選單安全的規則

  • 用 holder 辨識選單,絕對不要靠標題:任何改過名的箱子都能複製標題。
  • 在做任何其他事之前先取消點擊,這樣就算動作出錯,物品也不會留在玩家的游標上。
  • 取消來自玩家物品欄的拖曳和 Shift 點擊,否則物品可能被塞進選單裡。
  • 不要相信格子裡的物品:依格子編號或物品上的標籤找出對應的動作。
  • 耗時的工作(讀取資料庫、網路請求)要在主執行緒之外執行,完成後再更新選單。

用設定檔定義選單

伺服器擁有者喜歡不必重新建置就能修改選單。要求把每個選單定義在設定檔裡,包含大小、標題,以及每個按鈕的格子、材料、名稱、物品描述和動作:

鍵範例作用
size27格子數量,必須是 9 的倍數
slot13按鈕放在哪一格,從 0 開始算
materialENDER_PEARL顯示的物品
actionwarp:spawn點擊後做什麼:傳送點、指令、另一個選單

描述範例

「一個名為 WarpMenu 的 Paper 1.21.4 插件。/warps 會開啟一個 6 列的選單,每個傳送點一個按鈕,每頁 45 個,最下面一列是上一頁、下一頁和關閉按鈕。管理員用 /setwarp <name> <material> 新增傳送點,用 /delwarp 刪除。點擊傳送點後有 3 秒準備時間,期間移動就會取消,時間到才傳送。玩家不能拿走或移動選單裡的任何物品。傳送點存在 warps.yml,選單標題、按鈕名稱和訊息放在 config.yml。」

用測試玩家測試選單

Codexe 的測試玩家可以開啟選單並點擊某一格,然後確認有沒有開啟選單、出現訊息或拿到物品。用你自己的話加入一項測試,例如「一般玩家執行 /warps 並點擊第 0 格,看到傳送訊息」,之後 Codexe 每次交付修改都會重新執行它。

常見問題

1.8 能用嗎?

從 1.8 開始每個版本都有箱子選單。API 在細節上(材料名稱、標題)有所不同,所以請在需求中寫明版本。

可以改用 Skript 做選單嗎?

可以,用 skript-gui 附加元件,Codexe 的 Skript 測試伺服器已經裝好了。大型或使用頻繁的選單,還是用插件比較好。

選單可以做成自訂材質的樣子嗎?

只能透過資源包,修改物品或物品欄的背景。插件這邊都一樣:格子、物品和點擊。

製作你的選單

這則提示詞開啟後即可直接傳送:

“一個名為 WarpMenu 的 Paper 1.21.4 插件:/warps 開啟 6 列選單,每個傳送點一個按鈕,每頁 45 個,最下面一列是上一頁/下一頁/關閉按鈕,管理員可用 /setwarp(帶名稱和材料)和 /delwarp,傳送前有 3 秒準備時間且移動就取消,任何物品都不能被拿走或移動,傳送點存在 warps.yml,標題和訊息放在 config.yml。”

用 Codexe 產生這個
如何製作 Minecraft 的 GUI 選單插件 | Codexe