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

サブメニュー

メインメニュー(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.ymlsubmenu.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 の検証段階で自動検知され、リロードが拒否されます。

クリックしたプレイヤーだけがエラーに直面するのを未然に防ぎます。