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

バリアント

バリアント(Variants) は、同じスロットのアイテムについて、プレイヤーの権限や条件に応じて「見た目(名前・素材・説明文)」や「実行するコマンド」を動的に差し替える機能です。


設定例: VIPプレイヤー向けの割引表示

一般プレイヤーには通常価格(1000円)、VIP権限を持つプレイヤーには割引価格(500円)で表示・実行する例です。

menu-items:
- id: buy_diamond
slot: 13
material: DIAMOND
name: "&bダイヤモンドを購入"
lore:
- "&7通常価格: &e1,000円"
command: "shop buy diamond standard"

# VIP向けの差し替え設定
variants:
- id: vip_discount
when:
permission: "myserver.vip"
override:
name: "&d&l[VIP] ダイヤモンドを購入 (半額!)"
lore:
- "&7VIP限定価格: &a500円"
- "&dVIP特典が適用されています"
glint: true
command: "shop buy diamond vip"

バリアントの評価と適用ルール

  1. 上から順に評価: variants リストの上から順番に when 条件を判定し、最初に成立したバリアントが1つだけ適用されます。
  2. 指定したキーのみ上書き: override セクションに指定した項目(name, lore, material, command など)だけが上書きされ、指定しなかった項目(slot など)は基底要素の設定がそのまま引き継がれます。
  3. アクションのクリーンな置換: override 内で commandactionactions のいずれかを指定すると、基底要素のアクション定義全体が置き換わります。基底のアクションと混ざることはありません。
  4. セッション固定: バリアントはプレイヤーがメニューを開いた瞬間に決定され、そのセッション中は固定されます。表示されている見た目と、クリック時に実行されるアクションが常に100%一致することを保証します。

:::note バリアントの入れ子禁止 バリアントの中にさらにバリアントを記述すること(ネスト)はできません。 :::


リロード時の安全検証

バリアントの override 設定は、通常のアイテムと同様にサーバーリロード時に厳密に検証されます。

存在しない素材名や無効なコマンドが override 内に含まれていた場合、/menu reload の時点でエラーが検知されリロードが拒否されます。条件に合致したプレイヤーが後からエラーに遭遇することはありません。