ガイド

MinecraftのGUIメニュープラグインの作り方

2026年10月18日に更新

サーバーのメニュー(ワープ、ショップ、キット、設定)は、プラグインが開いて制御するチェストのインベントリです。各スロットには、ボタンとして働くアイテムが入っています。見た目は単純ですが、あらゆる種類のクリックをキャンセルしないメニューだと、プレイヤーがボタンを持ち帰れてしまいます。このガイドでは、メニューの仕組みと、ビルドしてテストする方法を解説します。

この例から始めましょう。

Codexeでこれを生成

手順

  1. 1.メニューの下書きを作る

    チェストメニューは1〜6行で、1行9スロット(9〜54スロット)です。どのスロットに何のアイテムを置くか、各クリックで何が起きるか、ガラス板のような飾りだけのスロットはどれかを書きます。

  2. 2.ホルダー付きでインベントリを作る

    独自のInventoryHolderクラスを使い、Bukkit.createInventory(holder, size, title)で開きます。プラグインは、このホルダーによって、クリックが普通のチェストではなく自分のメニューで起きたことを判断します。

  3. 3.クリックを処理する

    InventoryClickEventでホルダーを確認し、イベントをキャンセルしてから、そのスロットのアクションを実行します。アクションの後は、メニューを閉じるか更新します。

  4. 4.アイテムを動かすほかの方法をすべて防ぐ

    InventoryDragEventもキャンセルし、メニューを開いている間のShiftクリック、数字キー、プレイヤー自身のインベントリでのクリックも処理します。

  5. 5.リストが長ければページを追加する

    収まりきらないワープやショップのアイテムには、最下行を「前へ」「次へ」「閉じる」のボタン用に空けておきます。

  6. 6.コマンドから開く

    たとえば/warps、またはアイテムやNPCから開きます。メニューが全員向けでないなら、コマンドに権限を付けます。

  7. 7.ビルドしてクリックして確かめる

    Codexeにプラグインをコンパイルさせ、テストサーバーに参加して、すべてのボタンをクリックします。テストプレイヤーも、あなたの代わりにメニューを開いてスロットをクリックできます。

メニューを安全に保つルール

  • メニューはタイトルではなく、必ずホルダーで見分けます。タイトルは、名前を変えたチェストならどれでもまねできます。
  • ほかの処理をする前にクリックをキャンセルします。そうすれば、アクションでエラーが起きても、アイテムがプレイヤーのカーソルに残ることはありません。
  • プレイヤーのインベントリからのドラッグとShiftクリックをキャンセルします。そうしないと、アイテムをメニューに押し込まれます。
  • スロットにあるアイテムを信用しないこと。アクションは、スロット番号かアイテムのタグで調べます。
  • 時間のかかる処理(データベースの読み込み、Webリクエスト)はメインスレッドの外で実行し、終わったらメニューを更新します。

設定ファイルからメニューを作る

サーバーの管理者は、ビルドし直さずにメニューを変えたいものです。各メニューを設定ファイルで定義するよう指定しましょう。サイズ、タイトル、そしてボタンごとにスロット、素材、名前、説明文、アクションを書きます。

キー例役割
size27スロット数。9の倍数
slot13ボタンの位置。0から数える
materialENDER_PEARL表示するアイテム
actionwarp: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でこれを生成
MinecraftのGUIメニュープラグインの作り方 | Codexe