条件
EasyMenu 7では、メニューの開封条件(open-when)、アイテムの表示条件(visible-when)、使用条件(enabled-when)、およびバリアントの適用条件(when)で統一された共通の条件構文を使用します。
基本的な条件の書き方
短縮記法
条件にはセクションのほかに、次の短縮形も書けます。
| 書き方 | 意味 |
|---|---|
visible-when: "myserver.vip" | 文字列だけを書くと、その権限を持っているかの判定(permission)になります。空文字列はエラーです。 |
visible-when: true / false | 常に成立 / 常に不成立します。一時的に項目を隠したいときに使えます。 |
| 書かない(または空のセクション) | 常に成立します。 |
1つのセクションに複数のキーを並べた場合は、すべてを満たす必要があります(暗黙の all)。
visible-when:
permission: "myserver.vip" # 次の2つを両方満たす場合のみ表示
world: "world"
未知のキーを書くとエラー(invalid-condition)になり、リロードが拒否されます。
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"
# 複数指定(いずれか)
enabled-when:
gamemode:
- SURVIVAL
- ADVENTURE
4. PlaceholderAPI による値・数値比較
PlaceholderAPIのプレースホルダー値と指定した値を比較します。value・operator・compare の3つがすべて必須です。
enabled-when:
placeholder:
value: "%vault_eco_balance%"
operator: ">="
compare: "1000"
value と compare は、どちらもクリック時や表示時に展開されます(どちらにプレースホルダーを書いても構いません)。
比較演算子一覧 (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" |
演算子の別名
次の別名も使えます。大文字小文字は区別されません。
| 演算子 | 別名 |
|---|---|
== | =, eq, equals |
!= | <>, ne, not-equals |
> | gt |
>= | ge, gte |
< | lt |
<= | le, lte |
数値比較演算子(>, >=, <, <=)は任意精度の数値(BigDecimal)として評価されます。カンマ区切り(1,000)は取り除いて読み取ります。値が数値として解釈できない場合でもエラーでサーバーが停止することはなく、安全に 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"
all と any は条件のリストを取ります。リストでない値はエラー、空のリストは常に成立として扱われます。