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

PlaceholderAPI

PlaceholderAPIを導入することで、プレイヤーの名前、所持金、ランク、キル数など、外部プラグインの様々な動的データをメニュー内に表示・利用できます。

:::info PlaceholderAPIは任意です PlaceholderAPIがサーバーに導入されていない場合でも、EasyMenuは正常に起動します。その場合、プレースホルダー文字列はそのまま表示されます。 :::


プレースホルダーの利用箇所

プレースホルダー(%...%)は以下の場所で使用できます。

  • menu-title(メニュータイトル)
  • name(アイテム表示名)
  • lore(アイテム説明文)
  • message(アクションのメッセージ送信)
  • command(実行するコマンド引数)
  • title / subtitle(タイトル表示)
  • open-denied-message / disabled-message(拒否メッセージ)
  • body(Native Dialogのボディテキスト)
  • placeholder 条件(条件分岐の比較値)
menu-title: "&6%player_name%のステータス"

menu-items:
- slot: 13
material: PLAYER_HEAD
name: "&e%player_displayname%"
lore:
- "&7所持金: &a$%vault_eco_balance%"
- "&7ランク: &b%luckperms_primary_group_name%"
- "&7プレイ時間: &f%statistic_hours_played%時間"
command: "stats"

:::warning 構造値でのプレースホルダー禁止 スロット番号(slot)、メニューサイズ(menu-size)、アクション種別(type)、パーミッションノード、素材名(material)などのメニューの構造を決定する値にはプレースホルダーを使用できません。素材をプレイヤーの状態に応じて変えたい場合は バリアント を使用してください。 :::


プレースホルダーの展開順序とインジェクション保護

EasyMenu 7では、セキュリティを最優先にし、テキストを厳密に固定された順序で展開します。

1. 信頼された内部変数 {player}, {menu}, {session}
2. PlaceholderAPI %placeholder%
3. カラーコードのフォーマット &a, &l など
4. プレイヤー入力値 {input}, {input.<id>}, {remaining}

プレイヤー入力値のサニタイズ保護

プレイヤーがチャットや入力フォームに入力した値({input})は、必ず最後に差し込まれ、セクション記号(§)が除去されます。

例えば、悪意あるプレイヤーが入力欄に %vault_eco_balance%&4RED{player} と入力しても、それがプレースホルダーや色コード、EasyMenu変数として再解釈・実行されることは一切ありません。