Діалогові екрани: створення справжніх меню без модів
Діалоги з датапаків надають повноцінне вікно з полями вводу та кнопками. Ось структура JSON, опис того, як кнопка виконує команду, та порівняння з трюком через меню в книзі.
Раніше серверні меню були написаними книгами з клікабельними сторінками або інтерфейсом скрині через рамки. Діалоги замінили обидва варіанти повноцінним екраном.
Що таке діалог
Файл 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 | текст плюс одна кнопка закриття |
confirmation | так / ні, кожна зі своєю дією |
multi_action | сітка кнопок |
server_links | вбудований список посилань |
dialog_list | меню, що відкриває інші діалоги |
multi_action is the workhorse — it is the class-picker, the shop, the warp list.
Кнопки виконують команди
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
Як clickEvent in chat, this runs від імені гравця, який натиснув, з його рівнем дозволів. Кнопка, яка викликає команду тільки для операторів, нічого не зробить для звичайного гравця. Стандартне обхідне рішення — це trigger objective: the button runs /trigger warp set 1 and a ticking function does the privileged part.
Поля вводу
"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" } } ] }
]
Значення передаються як аргументи макросу до функції, яку викликає кнопка, тож функція-отримувач є макросом:
$say Welcome $(name), you chose $(class)
Це $ prefix on the line and $(key) for substitution. That is the whole binding mechanism, and it is what makes dialogs genuinely useful rather than decorative.
Чому це краще за трюк із книгою
- Це екран, тож він призупиняє введення замість того, щоб висіти в історії чату.
- Поля вводу дійсно існують. Книга могла пропонувати лише посилання.
- Предмет не потрібен. Нічого втратити, викинути чи продублювати.
- Він акуратно закривається і до нього не можна прокрутити назад.
Єдине, що книги все ще роблять краще — це довге читання: тіло діалогу не підходить для трьох сторінок лору.
Стилі точок маршруту
Цей самий інструмент охоплює точки маршруту панелі локатора — окремий реєстр набору даних, що керує кольором маркера та спрайтом для відстежуваного гравця чи позиції. Корисно для командних міток, коли смуга боса занадто нав'язлива.
Створюйте діалогові екрани з полями вводу та кнопками й налаштовуйте стилі точок маршруту в Конструктор діалогового вводу та стилів точок маршруту.