MC Toolkit

ガイド / コマンドとデータ

ダイアログ画面:MODなしで本格的なメニューを作る

データパックのダイアログを使えば、入力欄とボタンを備えた本物のウィンドウが作れます。ここではJSONの構造、ボタンからコマンドを実行する方法、そして本メニューのハックとの比較を解説します。保存先はdialogフォルダのJSONファイルです。

サーバーのメニューといえば、かつてはクリックできるページ付きの本や、額縁で偽装したチェストGUIでした。ダイアログはそのどちらも、実際の画面に置き換えます。

ダイアログとは

データパック内でウィンドウを記述するJSONファイルです:

data/<namespace>/dialog/welcome.json
{
  "type": "minecraft:notice",
  "title": { "text": "Welcome" },
  "body": [{ "type": "minecraft:plain_message",
             "contents": { "text": "Pick a class to begin." } }],
  "action": { "label": { "text": "Continue" } }
}

そのあとに /dialog show @p my_pack:welcome を実行します。

種類

種類形状
noticeテキストと閉じるボタン1つ
confirmationはい/いいえ、それぞれに独自のアクション
multi_actionボタンのグリッド
server_links組み込みのリンク一覧
dialog_list他のダイアログを開くメニュー

multi_action が主力です——クラス選択、ショップ、ワープ一覧はこれで作ります。

ボタンはコマンドを実行する

{ "label": { "text": "Warp to spawn" },
  "action": { "type": "minecraft:run_command", "command": "/spawn" } }

チャットの clickEvent と同様、これはクリックしたプレイヤーとして、その権限レベルで実行されます。OP専用コマンドを呼び出すボタンは、一般プレイヤーには何の効果もありません。定番の回避策は trigger のスコアボード目標です:ボタンで /trigger warp set 1 を実行し、ティック関数が特権的な処理を担当します。

入力欄

"inputs": [
  { "type": "minecraft:text", "key": "name", "label": { "text": "Your name" }, "max_length": 16 },
  { "type": "minecraft:boolean", "key": "pvp", "label": { "text": "Enable PvP" } },
  { "type": "minecraft:single_option", "key": "class", "label": { "text": "Class" }, "options": [
      { "id": "mage", "display": { "text": "Mage" } },
      { "id": "rogue", "display": { "text": "Rogue" } } ] }
]

値は、アクションが minecraft:dynamic/run_command であるボタンを通じてコマンドに渡ります:その template は各入力に対して $(key) を受け取ります。通常の run_command ボタンは何も受け取りません。

"action": {
  "type": "minecraft:dynamic/run_command",
  "template": "function my_pack:join {name:'$(name)',class:'$(class)'}"
}

呼び出される関数はマクロになります:

$say Welcome $(name), you chose $(class)

行頭の $ プレフィックスと、両端の $(key) による置換。これがバインディングの仕組みのすべてであり、ダイアログを装飾ではなく真に役立つものにしています。

本メニューのハックより優れている理由

  • 画面なので、チャット履歴に残らず入力を一時停止させます。
  • 入力欄が実際に存在します。 本ではリンクしか提供できませんでした。
  • アイテム不要。 失くす、落とす、複製される心配がありません。
  • きれいに閉じられ、スクロールで戻ることもできません。

本が今も優れている唯一の点は長文の読書です——ダイアログの本文は3ページ分の伝承を読むのに向いた場所ではありません。

ウェイポイントのスタイル

同じツールはロケーターバーのウェイポイントもカバーします。そのスタイルはリソースパックのアセット(assets/<namespace>/waypoint_style/)で、追跡中のプレイヤーや位置のスプライトとフェード距離を制御します。色は /waypoint modify <target> color で別途設定します。ボスバーでは主張が強すぎるチームマーカーに便利です。

入力欄とボタンを備えたダイアログ画面の作成、そしてウェイポイントスタイルのカスタマイズは、Dialog Input & Waypoint Style Builder で。

ダイアログ入力・ウェイポイントスタイルビルダー →

その他のガイド

すべて見る →