ガイド
MinecraftのGUIメニュープラグインの作り方
2026年10月18日に更新
サーバーのメニュー(ワープ、ショップ、キット、設定)は、プラグインが開いて制御するチェストのインベントリです。各スロットには、ボタンとして働くアイテムが入っています。見た目は単純ですが、あらゆる種類のクリックをキャンセルしないメニューだと、プレイヤーがボタンを持ち帰れてしまいます。このガイドでは、メニューの仕組みと、ビルドしてテストする方法を解説します。
この例から始めましょう。
Codexeでこれを生成手順
1.メニューの下書きを作る
チェストメニューは1〜6行で、1行9スロット(9〜54スロット)です。どのスロットに何のアイテムを置くか、各クリックで何が起きるか、ガラス板のような飾りだけのスロットはどれかを書きます。
2.ホルダー付きでインベントリを作る
独自の
InventoryHolderクラスを使い、Bukkit.createInventory(holder, size, title)で開きます。プラグインは、このホルダーによって、クリックが普通のチェストではなく自分のメニューで起きたことを判断します。3.クリックを処理する
InventoryClickEventでホルダーを確認し、イベントをキャンセルしてから、そのスロットのアクションを実行します。アクションの後は、メニューを閉じるか更新します。4.アイテムを動かすほかの方法をすべて防ぐ
InventoryDragEventもキャンセルし、メニューを開いている間のShiftクリック、数字キー、プレイヤー自身のインベントリでのクリックも処理します。5.リストが長ければページを追加する
収まりきらないワープやショップのアイテムには、最下行を「前へ」「次へ」「閉じる」のボタン用に空けておきます。
6.コマンドから開く
たとえば
/warps、またはアイテムやNPCから開きます。メニューが全員向けでないなら、コマンドに権限を付けます。7.ビルドしてクリックして確かめる
Codexeにプラグインをコンパイルさせ、テストサーバーに参加して、すべてのボタンをクリックします。テストプレイヤーも、あなたの代わりにメニューを開いてスロットをクリックできます。
メニューを安全に保つルール
- メニューはタイトルではなく、必ずホルダーで見分けます。タイトルは、名前を変えたチェストならどれでもまねできます。
- ほかの処理をする前にクリックをキャンセルします。そうすれば、アクションでエラーが起きても、アイテムがプレイヤーのカーソルに残ることはありません。
- プレイヤーのインベントリからのドラッグとShiftクリックをキャンセルします。そうしないと、アイテムをメニューに押し込まれます。
- スロットにあるアイテムを信用しないこと。アクションは、スロット番号かアイテムのタグで調べます。
- 時間のかかる処理(データベースの読み込み、Webリクエスト)はメインスレッドの外で実行し、終わったらメニューを更新します。
設定ファイルからメニューを作る
サーバーの管理者は、ビルドし直さずにメニューを変えたいものです。各メニューを設定ファイルで定義するよう指定しましょう。サイズ、タイトル、そしてボタンごとにスロット、素材、名前、説明文、アクションを書きます。
| キー | 例 | 役割 |
|---|---|---|
size | 27 | スロット数。9の倍数 |
slot | 13 | ボタンの位置。0から数える |
material | ENDER_PEARL | 表示するアイテム |
action | warp:spawn | クリックで起きること: ワープ、コマンド、別のメニュー |
説明の例
「WarpMenuという名前のPaper 1.21.4プラグイン。/warpsで6行のメニューを開き、ワープごとに1つのボタン、1ページ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行のメニューを開き、ワープごとに1つのボタン、1ページ45個、最下行に前へ/次へ/閉じるのボタン、管理者向けに名前と素材を指定する/setwarpと/delwarp、動くとキャンセルされる3秒のテレポート待機、アイテムは取ることも動かすこともできない、ワープはwarps.yml、タイトルとメッセージはconfig.ymlに保存。”
Codexeでこれを生成