条件
EasyMenu 7では、メニューの開封条件(open-when)、アイテムの表示条件(visible-when)、使用条件(enabled-when)、およびバリアントの適用条件(when)で統一された共通の条件構文を使用します。
基本的な条件の書き方
1. 権限(パーミッション)チェック
文字列を直接指定するか、permission キーを指定します。
visible-when:
permission: "myserver.vip"
2. ワールド制限
プレイヤーが特定のワールドにいるかどうかを判定します。
# 単一ワールド
visible-when:
world: "world_nether"
# 複数ワールドのいずれか (リスト)
visible-when:
world:
- "world"
- "world_nether"
# in / not-in による指定
visible-when:
world:
not-in:
- "world_the_end"
3. ゲームモード制限
プレイヤーのゲームモード(SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR)を判定します。
visible-when:
gamemode: "SURVIVAL"
4. PlaceholderAPI による値・数値比較
PlaceholderAPIのプレースホルダー値と指定した値を比較します。
enabled-when:
placeholder:
value: "%vault_eco_balance%"
operator: ">="
compare: "1000"
比較演算子一覧 (operator)
placeholder 条件では以下の比較演算子が使用できます。
| 演算子 | 比較種類 | 説明 | 例 |
|---|---|---|---|
== | 文字列 / 数値 | 等しい | value: "%player_gamemode%", compare: "survival" |
!= | 文字列 / 数値 | 等しくない | value: "%server_online%", compare: "0" |
> | 数値 | より大きい | value: "%vault_eco_balance%", compare: "500" |
>= | 数値 | 以上 | value: "%vault_eco_balance%", compare: "1000" |
< | 数値 | 未満 | value: "%player_ping%", compare: "100" |
<= | 数値 | 以下 | value: "%player_level%", compare: "50" |
contains | 文字列 | 含む | value: "%luckperms_primary_group_name%", compare: "vip" |
not-contains | 文字列 | 含まない | value: "%luckperms_groups%", compare: "banned" |
starts-with | 文字列 | 前方一致 | value: "%player_name%", compare: "admin_" |
ends-with | 文字列 | 後方一致 | value: "%player_name%", compare: "_bot" |
:::note 数値比較の安全性
数値比較演算子(>, >=, <, <=)は任意精度の数値(BigDecimal)として評価されます。値が数値として解釈できない場合でもエラーでサーバーが停止することはなく、安全に false(不成立)として処理されます。
:::
論理演算子(AND / OR / NOT)
複数の条件を組み合わせて複雑な判定を行えます。
すべて満たす(AND): all
visible-when:
all:
- permission: "myserver.donor"
- placeholder:
value: "%vault_eco_balance%"
operator: ">="
compare: "5000"
いずれかを満たす(OR): any
visible-when:
any:
- permission: "myserver.admin"
- permission: "myserver.moderator"
反転(NOT): not
visible-when:
not:
world: "world_the_end"