The Best Resource for Minecraft
The Best Resource for Minecraft

Діалогові екрани: створення справжніх меню без модів

Діалогові екрани: створення справжніх меню без модів

Діалоги з датапаків надають повноцінне вікно з полями вводу та кнопками. Ось структура 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.

Чому це краще за трюк із книгою

  • Це екран, тож він призупиняє введення замість того, щоб висіти в історії чату.
  • Поля вводу дійсно існують. Книга могла пропонувати лише посилання.
  • Предмет не потрібен. Нічого втратити, викинути чи продублювати.
  • Він акуратно закривається і до нього не можна прокрутити назад.

Єдине, що книги все ще роблять краще — це довге читання: тіло діалогу не підходить для трьох сторінок лору.

Стилі точок маршруту

Цей самий інструмент охоплює точки маршруту панелі локатора — окремий реєстр набору даних, що керує кольором маркера та спрайтом для відстежуваного гравця чи позиції. Корисно для командних міток, коли смуга боса занадто нав'язлива.

Створюйте діалогові екрани з полями вводу та кнопками й налаштовуйте стилі точок маршруту в Конструктор діалогового вводу та стилів точок маршруту.

Спробувати інструмент: Dialog Input & Waypoint Style Builder →