入力
EasyMenu 7では、メニューを開く際やアイテムをクリックする際に、プレイヤーからテキスト、数値、真偽値、選択肢などの入力を受け付ける 入力フォーム(inputs) 機能を提供しています。
Native Dialog環境ではダイアログ内のグラフィカルな入力欄(テキストボックス、スライダー、スイッチなど)として提示され、インベントリGUI環境ではチャットプロンプトへ自動フォールバックします。
基本的な入力設定例
購入個数をプレイヤーに入力させてからコマンドを実行する例です。
# メニュー全体で受け付ける入力フィールドの定義
inputs:
- id: count
type: integer
label: "購入個数を入力 (1〜64)"
min: 1
max: 64
initial: 1
menu-items:
- id: buy_diamond
slot: 13
material: DIAMOND
name: "&bダイヤモンドを購入"
input-refs:
- count # 上記の入力フィールドを参照
command: "shop buy diamond {input.count}"
入力タイプ一覧 (type)
| 入力タイプ | 説明 | 主な設定キー |
|---|---|---|
text | 自由な文字列入力 | max-length, initial |
integer | 整数値の入力 | min, max, initial |
decimal | 小数値(実数)の入力 | min, max, initial |
boolean | ON/OFF(真偽値)の選択 | initial |
option | ドロップダウンや一覧からの単一選択 | options, initial |
選択肢入力 (type: option) の設定例
inputs:
- id: duration_choice
type: option
label: "ランクの期間を選択"
options:
- id: "1d"
display: "1日 (100円)"
- id: "7d"
display: "7日 (500円)"
- id: "30d"
display: "30日 (1,500円)"
initial: "7d"
menu-items:
- slot: 13
material: NETHER_STAR
name: "&6VIPランクを購入"
input-refs:
- duration_choice
command: "rank buy vip {input.duration_choice}"
環境間で統一された検証規則(パリティ保証)
Native DialogのUIフォームから送信された値も、チャット入力から送信された値も、すべてEasyMenuの共通バリデーター(InputContract)によって同一のルールで厳格に検証されます。
- 初期値(
initial)の検証: 設定ファイル内の初期値がその入力条件(範囲など)を満たしているか、サーバーリロード時に事前検証されます。 - 入力値の安全性: プレイヤーが入力した値は
{input.<id>}に安全に差し込まれ、プレースホルダーやコマンド構文として再解釈されることはありません。