メインコンテンツまでスキップ

Native Dialog

Minecraft 1.21.6以降のPaperサーバーでは、新しい Native Dialog API が利用可能になりました。

EasyMenu 7では、設定ファイルに dialog: true と書くだけで、対応環境のプレイヤーに対して洗練されたクライアントネイティブのダイアログ画面としてメニューを表示できます。


Native Dialogの有効化​

最もシンプルな有効化方法は、メニューファイルに dialog: true を追加することです。

plugins/EasyMenu/sub/shop.yml
menu-title: "&aショップ"
dialog: true # 対応サーバーではダイアログ、非対応サーバーではチェストUI

menu-items:
- id: buy_diamond
material: DIAMOND
name: "ダイヤモンドを購入"
lore:
- "価格: 1,000円"
command: "shop buy diamond"

- id: buy_gold
material: GOLD_INGOT
name: "金を購入"
lore:
- "価格: 500円"
command: "shop buy gold"

dialog キーの意味は次のとおりです。

書き方結果
dialog: truepresentation.mode: native-preferred と同じ扱いです(ダイアログ非対応ならインベントリGUIへ)。
dialog: falseインベントリ表示を強制します。 config.yml の runtime.default-presentation が auto などでも、このメニューだけは常にインベントリGUIになります。
書かないruntime.default-presentation(既定: inventory)に従います。
dialog と presentation を両方書くpresentation が優先され、dialog は無視されます。警告(dialog-key-ignored)が出力されます。

Native Dialogでの要素の変換​

Native Dialogでは、アイテムはインベントリのスロットではなく、ダイアログ上のボタンとして描画されます。

アイテム設定Native Dialogでの描画
nameボタンのラベルテキスト
loreボタンにカーソルを合わせたときのツールチップ
materialアイテム外観の元データ(対応環境ではボタンのSprite / Headにも使用)

ダイアログレイアウトのカスタマイズ​

presentation.native セクションで、ボタンの列数や幅、ESCキーでの終了挙動などを細かく調整できます。

presentation:
mode: native-preferred
fallback: true

native:
columns: 3 # ボタンの列数 (既定: 3、範囲: 1〜8)
button-width: 150 # ボタンの横幅 (既定: 150、範囲: 1〜1024)
can-close-with-escape: true # ESCキーで閉じられるようにするか (既定: true)
pause: false # シングルプレイ時のゲーム一時停止フラグ (既定: false)
キー既定値範囲・補足
columns31〜8 に丸められます。1 未満を書くと警告が出て既定値が使われます。
button-width1501〜1024 に丸められます。1 未満を書くと警告が出て既定値が使われます。
can-close-with-escapetruefalse にすると、ESCキーでダイアログを閉じられません。ボタンで閉じる手段を用意してください。
pausefalseシングルプレイ(統合サーバー)でのみ意味を持つ設定です。
Bedrock(Geyser)での扱い

columns と button-width は、Bedrockプレイヤー向けのフォームでも「レイアウトの希望値」として使われますが、Java版のNative Dialogとは制約が異なります。 Bedrock Rich UIでは、列数は最大3列に制限され、ボタン幅は 100 以下・101〜180・181 以上の3段階に丸められます。詳しくは Bedrock / Geyser / Rich UI ガイド を参照してください。


非対応環境での自動フォールバック​

Native Dialog APIを持たない環境(Minecraft 1.20.1〜1.21.5のサーバーなど)では、dialog: true や mode: native-preferred と記述されていても、自動的に従来のインベントリGUI(チェスト画面)へフォールバックしてメニューが開きます。

管理者がサーバーバージョンごとに設定ファイルを書き分けたり、条件分岐を設定する必要は一切ありません。