MC Toolkit

Panduan / Perintah & Data

Layar dialog: membangun menu sungguhan tanpa mod

Dialog datapack memberi Anda jendela sungguhan dengan input dan tombol. Berikut bentuk JSON-nya, cara tombol menjalankan perintah, dan perbandingannya dengan trik menu buku.

Menu server dulu ditulis sebagai buku dengan halaman yang bisa diklik, atau GUI peti yang dipalsukan dengan item frame. Dialog menggantikan keduanya dengan layar sungguhan.

Apa itu dialog

Sebuah file JSON di dalam datapack yang mendeskripsikan sebuah jendela:

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" } }
}

Lalu /dialog show @p my_pack:welcome.

Jenis-jenisnya

JenisBentuk
noticeteks plus satu tombol tutup
confirmationya / tidak, masing-masing dengan aksinya sendiri
multi_actionkisi tombol
server_linksdaftar tautan bawaan
dialog_listmenu yang membuka dialog lain

multi_action adalah andalannya — ia adalah pemilih kelas, toko, daftar warp.

Tombol menjalankan perintah

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

Seperti clickEvent di chat, ini berjalan sebagai Pemain yang mengklik, pada tingkat izinnya. Tombol yang memanggil perintah khusus op tidak melakukan apa pun bagi Pemain biasa. Solusi standarnya adalah objective trigger: tombol menjalankan /trigger warp set 1 dan sebuah fungsi yang berjalan tiap tick melakukan bagian yang butuh hak istimewa.

Input

"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" } } ] }
]

Nilai mencapai perintah melalui tombol yang aksinya adalah minecraft:dynamic/run_command: template-nya mengambil $(key) untuk setiap input. Tombol run_command biasa tidak menerima apa pun.

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

Fungsi yang dipanggilnya kemudian menjadi makro:

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

Awalan $ pada baris dan $(key) untuk substitusi, di kedua ujungnya. Itulah keseluruhan mekanisme pengikatannya, dan itulah yang membuat dialog benar-benar berguna, bukan sekadar hiasan.

Mengapa ini lebih baik daripada trik buku

  • Ini adalah layar, jadi ia menghentikan input alih-alih duduk di riwayat chat.
  • Input benar-benar ada. Buku hanya bisa menawarkan tautan.
  • Tidak butuh item. Tidak ada yang bisa hilang, terjatuh, atau terduplikasi.
  • Ia tertutup dengan rapi dan tidak bisa di-scroll kembali.

Satu hal yang masih lebih baik dilakukan buku adalah bacaan panjang — badan dialog bukan tempat yang baik untuk tiga halaman lore.

Gaya waypoint

Alat yang sama mencakup waypoint locator-bar, yang gayanya adalah aset resource pack (assets/<namespace>/waypoint_style/) yang mengatur sprite dan jarak fade dari Pemain atau posisi yang dilacak; warnanya diatur terpisah dengan /waypoint modify <target> color. Berguna untuk penanda tim di mana bossbar akan terlalu mengganggu.

Bangun layar dialog dengan input dan tombol, serta kustomisasi gaya waypoint, di Dialog Input & Waypoint Style Builder.

Pembuat dialog dan gaya waypoint →

Panduan lainnya

Lihat semua →