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変数として再解釈・実行されることは一切ありません。