Repository navigation
FormCreator
Koukunn_ edited this page Feb 25, 2025
·
2 revisions
このモジュールは、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には、プレイヤー名+フォーム定義のオブジェクト+フォームの値のオブジェクトを文字列化したものが保存されます
- Action/MessageFormの場合、
| プロパティ | 説明 | タイプ | 必須 |
|---|---|---|---|
type |
フォームの種類 ("action", "message", "modal") | string | ○ |
title |
フォームのタイトル | string | ○ |
body |
フォームの説明文 (ActionForm, MessageForm のみ) | string | △ |
| プロパティ | 説明 | タイプ | 必須 |
|---|---|---|---|
buttons |
ボタンのテキストの配列 | string[] | ○ |
iconPaths |
各ボタンに対応するアイコンのパスの配列 (空文字列 "" でアイコンなしにできます) | string[] | △ |
| プロパティ | 説明 | タイプ | 必須 |
|---|---|---|---|
buttons |
ボタンのテキストの配列 (最大2つまで) | string[] | △ |
| プロパティ | 説明 | タイプ | 必須 |
|---|---|---|---|
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 }[] |
△ |
{
label: string; // ドロップダウンのラベル
options: string[]; // 選択肢の配列
defaultIndex?: number; // デフォルトで選択されている項目のインデックス (0始まり)
}{
label: string; // 入力欄のラベル
placeholder?: string; // 入力欄に表示するプレースホルダーテキスト
defaultValue?: string; // 入力欄の初期値
}{
label: string; // トグルスイッチのラベル
defaultValue?: boolean; //トグルスイッチの初期状態(true/false)
}{
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の使用を推奨します