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

条件

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 は条件のリストを取ります。リストでない値はエラー、空のリストは常に成立として扱われます。