サブメニュー
メインメニュー(main.yml)から遷移する各種サブ画面(ショップ、ワープ一覧、設定画面など)は、plugins/EasyMenu/sub/ ディレクトリ配下に作成します。
サブメニューのファイル配置
サブメニューファイルは、ファイル名(拡張子 .yml を除く)がそのまま メニューID になります。
plugins/EasyMenu/
├── main.yml # メインメニュー (ID: main)
└── sub/
├── shop.yml # サブメニュー (ID: shop)
├── warp.yml # サブメニュー (ID: warp)
└── admin/
└── panel.yml # サブフォルダ内 (ID: admin/panel または admin_panel)
:::tip サブフォルダの検索階層
サブフォルダは config.yml の submenu.search-depth(既定値: 3)の深さまで再帰的に読み込まれます。
:::
メニュー間の画面遷移
メニュー間でプレイヤーを移動させる方法は2通りあります。
方法1: 簡易記法(sub_<ID> / main_mainopen)
アイテムの command に直接記述する手軽な方法です。
plugins/EasyMenu/main.yml
menu-items:
# sub/shop.yml を開く
- slot: 11
material: EMERALD
name: "&aショップを開く"
command: "sub_shop"
close-menu: true
# sub/warp.yml を開く
- slot: 15
material: COMPASS
name: "&bワープ一覧"
command: "sub_warp"
close-menu: true
サブメニュー側からメインメニューに戻る場合は main_mainopen を使用します。
plugins/EasyMenu/sub/shop.yml
menu-items:
# メインメニューに戻る
- slot: 22
material: BARRIER
name: "&cメインメニューへ戻る"
command: "main_mainopen"
close-menu: true
方法2: 型付きアクション(type: open-menu)
複数のアクションと組み合わせたり、より明示的に記述したい場合に使用します。
menu-items:
- slot: 13
material: EMERALD
name: "&aショップへ移動"
actions:
- type: sound
sound: "UI_BUTTON_CLICK"
- type: open-menu
menu: "shop"
- type: message
message: "&aショップメニューを開きました。"
:::info open-menu の実行順序保証
EasyMenu 7では、open-menu アクションは移動先端のメニューが画面に正常に描画完了するまで待機してから後続のアクション(上記の message など)を実行します。そのため、画面遷移とメッセージの表示順がずれる心配がありません。
:::
存在しないメニューへの誤遷移防止
設定ファイル内に存在しないメニューIDへの遷移(例: open-menu: unknown_shop)が記述されている場合、/menu reload の検証段階で自動検知され、リロードが拒否されます。
クリックしたプレイヤーだけがエラーに直面するのを未然に防ぎます。