表示・使用条件
EasyMenu 7では、条件(Condition)を使って「メニューを開けるか」「アイテムを見せるか」「アイテムを押せるか」を明確に制御できます。
3つの条件制御の違い
open-when → メニュー自体を開けるか
visible-when → アイテムを見せるか
enabled-when → アイテムを押せるか
| 設定キー | 設定場所 | 目的 | 条件不成立時の動作 |
|---|---|---|---|
open-when | メニュー全体 | 条件を満たさないプレイヤーからメニュー自体の開封を禁止する | メニューが開かず、open-denied-message をプレイヤーに送信。 |
visible-when | アイテム (menu-items) | 条件を満たさないプレイヤーから要素の存在を隠す | メニュー上にアイテムが表示されない(空欄/背景になる)。 |
enabled-when | アイテム (menu-items) | アイテムの存在は見せつつ、条件未達のクリックを拒否する | アイテムは表示されるが、クリック時に disabled-message を送信してアクションを実行しない。 |
設定例
1. open-when(メニュー全体の入場制限)
VIP権限を持っているプレイヤーのみが開けるメニューです。一般プレイヤーが /menu や /shop で開こうとすると拒否されます。
plugins/EasyMenu/sub/vip_shop.yml
menu-title: "&d&lVIPショップ"
menu-size: 27
# VIP権限がないと開けない
open-when:
permission: "myserver.vip"
open-denied-message: "&cこのメニューはVIPランク専用です。"
menu-items:
- slot: 13
material: NETHERITE_INGOT
name: "&5VIP特典アイテム"
command: "vip claim"
2. visible-when(管理者専用アイテムの非表示)
管理者権限を持っているプレイヤーにのみ表示されるボタンです。一般プレイヤーには空きスロット(背景ガラス)に見えます。
menu-items:
- slot: 26
material: BEDROCK
name: "&c&l管理者パネル"
lore:
- "&7クリックして管理者画面を開く"
visible-when:
permission: "myserver.admin"
command: "sub_admin_panel"
3. enabled-when(所持金が必要な購入ボタン)
メニューにはダイヤモンドが表示されますが、所持金が1,000円未満のプレイヤーがクリックするとエラーメッセージが表示され、購入コマンドは実行されません。
menu-items:
- slot: 13
material: DIAMOND
name: "&bダイヤモンドを購入"
lore:
- "&7価格: &e1,000円"
- "&7所持金: &a%vault_eco_balance%円"
enabled-when:
placeholder:
value: "%vault_eco_balance%"
operator: ">="
compare: "1000"
disabled-message: "&c所持金が足りません! (必要: 1,000円 / 現在: %vault_eco_balance%円)"
command: "shop buy diamond"
クリック時の動的再評価による安全性
所持金や権限、ワールドは、メニューを開いた後でも変化する可能性があります。
EasyMenu 7では、メニューを開いた時点だけでなく、プレイヤーがアイテムをクリックした瞬間にも visible-when と enabled-when を再度評価します。
そのため、メニューを開いたまま所持金を使い切った後に連打して購入してしまうような不正やレースコンディションを完全に防止します。