アクション
アイテムをクリックした際に行われる処理を「アクション」と呼びます。
EasyMenu 7では、シンプルなコマンド実行から、メッセージ送信、画面遷移、効果音、待機(ディレイ)、チャット入力まで、多彩な処理を自由に組み合わせて記述できます。
3つの書き方(ステップアップ)
アクションには用途に応じて3つの書き方があります。
1. 最も簡単な書き方 (command)
コマンドを実行したり画面遷移するだけなら、command: 1行で指定できます。
# プレイヤーコマンドを実行
command: "spawn"
# サブメニューを開く
command: "sub_shop"
# メインメニューに戻る
command: "main_mainopen"
2. 単一の型付きアクション (action)
アクションの種類(プレイヤーコマンド、コンソールコマンド、メッセージなど)を明示して1つだけ実行したい場合に記述します。
action:
type: player-command
command: "spawn"
3. 複数のアクションを連続実行 (actions)
「メッセージを表示して、音を鳴らして、コマンドを実行する」といった複数の処理を上から順番に実行します。
actions:
- type: message
message: "&aサバイバルへ移動します..."
- type: sound
sound: BLOCK_NOTE_BLOCK_PLING
- type: player-command
command: "spawn"
書き方を併用したときの扱い
| 書き方 | 結果 |
|---|---|
command と action / actions を両方書く | action / actions が優先されます。command は無視され、警告(action-overrides-command)が出力されます。 |
action と actions を両方書く | エラー(ambiguous-action)です。リロードは拒否されます。 |
| 3つとも書かない | エラーです(アイテムには command、action、actions のいずれかが必要です)。装飾専用にしたい場合は actions: [] と書きます。 |
actions に書いた項目がすべて無効 | エラー(no-usable-action)です。ボタンが黙って無反応になることを防ぎます。 |
診断コードの意味は 診断コード一覧 を参照してください。
順番通りの厳密な実行(シーケンス制御)
EasyMenu 7の actions リストは、記述された順序通りに厳密に1つずつ実行されます。
途中に時間がかかる処理が含まれていても、サーバースレッドを停止(フリーズ)させることなく非同期で安全に待機し、完了後に自動的に次のアクションへ進みます。
待機(delay)を含むアクションの例
actions:
- type: message
message: "&e3秒後にテレポートします..."
- type: sound
sound: BLOCK_NOTE_BLOCK_HAT
- type: delay
duration: 3s # 3秒間待機(サーバーは止まりません)
- type: player-command
command: "warp survival"
- type: message
message: "&aテレポート完了!"
失敗時の安全停止
もし途中のアクションが失敗した場合(例: 存在しないメニューへの遷移、権限不足、入力のキャンセルなど)、それ以降の後続アクションは安全に実行が中断されます。
クリック操作の判別 (click-policy)
どのマウス操作でアクションを実行するかを指定できます。
menu-items:
- slot: 13
material: DIAMOND
click-policy: RIGHT # 右クリック時のみ実行
command: "shop buy"
| 設定値 | 説明 |
|---|---|
PRIMARY (既定値) | 通常の決定クリック(Shiftなしの左クリック、またはダイアログ・Bedrockフォームのボタン押下)。 |
LEFT | 左クリック(Shift+左クリックを含む)。 |
RIGHT | 右クリック(Shift+右クリックを含む)。 |
ANY | ミドルクリックなどを含む、すべてのクリック操作。 |
ダイアログやBedrockフォームにはクリックの種類がないため、常に PRIMARY として扱われます。click-policy: RIGHT のアイテムはそれらの画面では反応しません。