Guides / Commands & Data

Экраны диалогов: создаем полноценные меню без модов

Диалоги датапаков дают вам полноценное окно с полями ввода и кнопками. Здесь вы найдете описание 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текст плюс одна кнопка закрытия
confirmationда / нет, каждая со своим действием
multi_actionсетка кнопок
server_linksвстроенный список ссылок
dialog_listменю, открывающее другие диалоги

multi_action — это рабочая лошадка: выбор класса, магазин, список телепортов.

Кнопки запускают команды

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

Как clickEvent в чате, это выполняется от имени кликнувшего Игрока, с его уровнем разрешений. Кнопка, вызывающая команду только для операторов, ничего не сделает для обычного Игрока. Стандартное решение — это цель 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", "options": [
      { "id": "mage", "display": { "text": "Mage" } },
      { "id": "rogue", "display": { "text": "Rogue" } } ] }
]

Значения поступают в виде аргументов макроса в функцию, которую вызывает кнопка, поэтому принимающая функция является макросом:

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

Префикс $ в строке и $(key) для подстановки. Это весь механизм привязки, и именно он делает диалоги по-настоящему полезными, а не просто декоративными.

Почему это лучше, чем хитрость с книгой

  • Это экран, поэтому он приостанавливает ввод, а не просто висит в истории чата.
  • Поля ввода действительно существуют. Книга могла предлагать только ссылки.
  • Не требуется предмет. Ничего не потерять, не выбросить и не продублировать.
  • Он чисто закрывается и к нему нельзя вернуться прокруткой.

Единственное, что книги все еще делают лучше, — это чтение длинных текстов: тело диалога не лучшее место для трех страниц лора.

Стили путевых точек

Тот же инструмент охватывает путевые точки на панели локатора, которые представляют собой отдельный реестр датапаков, контролирующий цвет маркера и спрайт, отображаемый для отслеживаемого Игрока или позиции. Полезно для командных маркеров, где полоса босса была бы слишком навязчивой.

Создавайте диалоговые экраны с полями ввода и кнопками, а также настраивайте стили путевых точек в Dialog Input & Waypoint Style Builder.

Конструктор диалогов и стилей точек →

More guides

Browse all →

Нужны другие инструменты для Minecraft?

Набор генераторов, просмотрщиков и конвертеров прямо в браузере — всё бесплатно.