Skip to content

FormCreator

Koukunn_ edited this page Feb 25, 2025 · 2 revisions

FormCreator Module

このモジュールは、Minecraft Bedrock Edition の Script API を使用して、JSON形式のデータからフォーム(ActionForm, MessageForm, ModalForm)を動的に生成し、プレイヤーに表示するためのモジュールです。フォームの応答結果は一時的にデータベースに保存されます。

機能概要

  • JSONによるフォーム定義:

    • ActionForm、MessageForm、ModalForm の3種類のフォームをJSON形式で定義できます。
    • タイトル、本文、ボタン、アイコン(ActionFormのみ)、ドロップダウン(ModalFormのみ)、テキスト入力欄(ModalFormのみ)、トグルスイッチ(ModalFormのみ)、スライダー(ModalFormのみ) などを細かく設定できます。
  • フォームの表示:

    • 定義したJSONを基に、対応するフォームを生成し、プレイヤーに表示します。
  • 応答結果の保存:

    • プレイヤーのフォームへの応答結果(選択したボタン、入力したテキストなど)を、一時的にデータベース(Databaseモジュールを使用)に保存します。
    • 保存されたデータは、20tick後に自動的に削除されます。
    • フォームの種類によって保存/削除の挙動が変わります。
      • Action/MessageFormの場合、ws_form_responsesには、押されたボタンの番号が保存され(1-indexed)、ws_form_resultsには、プレイヤー名+フォーム定義のオブジェクトを文字列化したものがキーとして、1が保存されます
      • ModalFormの場合、ws_form_responsesは、ws_form_resultと同じ処理が行われ、値として1が保存されます。ws_form_resultには、プレイヤー名+フォーム定義のオブジェクト+フォームの値のオブジェクトを文字列化したものが保存されます

フォーム定義 (JSON形式)

共通プロパティ

プロパティ 説明 タイプ 必須
type フォームの種類 ("action", "message", "modal") string ○
title フォームのタイトル string ○
body フォームの説明文 (ActionForm, MessageForm のみ) string △

ActionForm 専用プロパティ

プロパティ 説明 タイプ 必須
buttons ボタンのテキストの配列 string[] ○
iconPaths 各ボタンに対応するアイコンのパスの配列 (空文字列 "" でアイコンなしにできます) string[] △

MessageForm 専用プロパティ

プロパティ 説明 タイプ 必須
buttons ボタンのテキストの配列 (最大2つまで) string[] △

ModalForm 専用プロパティ

プロパティ 説明 タイプ 必須
dropdowns ドロップダウンの配列 { label: string, options: string[], defaultIndex?: number }[] △
inputs テキスト入力欄の配列 { label: string, placeholder?: string, defaultValue?: string }[] △
toggles トグルスイッチの配列 { label: string, defaultValue?: boolean }[] △
sliders スライダーの配列 { label: string, min: number, max: number, step?: number, defaultValue?: number }[] △

ModalFormの各要素

dropdowns (ドロップダウン)
{
  label: string;       // ドロップダウンのラベル
  options: string[];   // 選択肢の配列
  defaultIndex?: number; // デフォルトで選択されている項目のインデックス (0始まり)
}
inputs (テキスト入力)
{
  label: string;           // 入力欄のラベル
  placeholder?: string;    // 入力欄に表示するプレースホルダーテキスト
  defaultValue?: string;   // 入力欄の初期値
}
toggles (トグルスイッチ)
{
    label: string; // トグルスイッチのラベル
    defaultValue?: boolean;  //トグルスイッチの初期状態(true/false)
}
sliders (スライダー)
{
    label: string;       // スライダーのラベル
    min: number;        // 最小値
    max: number;          // 最大値
    step?: number;       // スライダーの刻み幅(デフォルトは1)
    defaultValue?: number //スライダーの初期値
}

使用データベース

このモジュールは、Database モジュールを使用して、以下の2つのデータベースを使用します。

データベース名 説明 キー(Key) 値 (Value) 備考
ws_form_results フォームの結果を一時的に保存します。 フォームの種類によって異なる フォームの種類によって異なる 20tick後自動削除
ws_form_responses フォームの応答(ボタンが押されたなど)を一時的に保存します Playerオブジェクト アクション/メッセージフォームの場合:押されたボタンの番号(1-indexed) モーダルフォームの場合:1 20tick後自動削除

コマンド

/scriptevent ws:form <JSON形式のフォーム定義>
  • ws:form: このモジュールを呼び出すためのイベント名です。
  • <JSON形式のフォーム定義>: 上記のJSON形式でフォームを定義した文字列です。

コマンド例:

  • ActionForm:

    /scriptevent ws:form {"type": "action", "title": "質問", "body": "好きな果物は?", "buttons": ["りんご", "バナナ", "みかん"], "iconPaths": ["textures/items/apple", "", "textures/items/orange"]}
    
  • MessageForm:

    /scriptevent ws:form {"type": "message", "title": "確認", "body": "本当に削除しますか?", "buttons": ["はい", "いいえ"]}
    
  • ModalForm:

/scriptevent ws:form {"type": "modal", "title": "設定", "dropdowns": [ { "label": "難易度", "options": ["イージー", "ノーマル", "ハード"], "defaultIndex": 1 } ], "inputs": [ { "label": "名前", "placeholder": "名前を入力", "defaultValue": "名無し" } ], "toggles": [ {"label": "通知を有効にする", "defaultValue": true} ], "sliders": [ {"label": "音量", "min": 0, "max": 100, "step": 5, "defaultValue": 50} ]}

注意点

  • JSONの文字列化の際、予期せぬエラーが発生する可能性があるため、/scripteventの使用を推奨します

Clone this wiki locally