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

入力

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
booleanON/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>} に安全に差し込まれ、プレースホルダーやコマンド構文として再解釈されることはありません。