Layar dialog: membuat menu sungguhan tanpa mod
Dialog datapack memberi Anda jendela yang layak dengan input dan tombol. Berikut adalah bentuk JSON-nya, cara tombol menjalankan perintah, dan perbandingannya dengan trik menu buku.
Menu server dulunya adalah buku tertulis dengan halaman yang bisa diklik, atau GUI Peti yang dipalsukan dengan bingkai item. Dialog menggantikan keduanya dengan layar yang sebenarnya.
Apa itu dialog
Sebuah file JSON dalam datapack yang menjelaskan 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
| Tipe | Bentuk |
|---|---|
notice | teks ditambah satu tombol tutup |
confirmation | ya / tidak, masing-masing dengan tindakannya sendiri |
multi_action | kisi tombol |
server_links | daftar tautan bawaan |
dialog_list | menu yang membuka dialog lain |
multi_action adalah pekerja keras — ini adalah pemilih kelas, toko, daftar warp.
Tombol menjalankan perintah
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
Seperti clickEvent di obrolan, ini berjalan sebagai Pemain yang mengklik, pada tingkat izin mereka. Tombol yang memanggil perintah khusus op tidak melakukan apa-apa untuk Pemain biasa. Solusi standar adalah objektif trigger: tombol menjalankan /trigger warp set 1 dan fungsi berdetak melakukan bagian yang 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", "options": [
{ "id": "mage", "display": { "text": "Mage" } },
{ "id": "rogue", "display": { "text": "Rogue" } } ] }
]
Nilai-nilai tiba sebagai argumen makro ke fungsi yang dipanggil tombol, jadi fungsi penerima adalah makro:
$say Welcome $(name), you chose $(class)
Awalan $ pada baris dan $(key) untuk substitusi. Itulah seluruh mekanisme pengikatan, dan itulah yang membuat dialog benar-benar berguna daripada sekadar dekoratif.
Mengapa ini mengalahkan trik buku
- Ini adalah layar, jadi ini menghentikan input daripada hanya duduk di riwayat obrolan.
- Input benar-benar ada. Sebuah buku hanya bisa menawarkan tautan.
- Tidak perlu item. Tidak ada yang hilang, jatuh, atau diduplikasi.
- Ini menutup dengan bersih dan tidak bisa digulir kembali.
Satu-satunya hal yang masih lebih baik dilakukan buku adalah membaca bentuk panjang — badan dialog bukanlah tempat yang baik untuk tiga halaman cerita.
Gaya titik jalan
Alat yang sama mencakup titik jalan bilah pencari (locator-bar waypoints), yang merupakan registri datapack terpisah yang mengontrol warna penanda dan sprite yang ditampilkan untuk Pemain atau posisi yang dilacak. Berguna untuk penanda tim di mana bilah bos (bossbar) akan terlalu mengganggu.
Buat layar dialog dengan input dan tombol, dan sesuaikan gaya titik jalan, di Dialog Input & Waypoint Style Builder.