Перейти к основному содержимому

Взаимодействия и навигация

Взаимодействие связывает клик по слоту с определённым поведением. Оно настраивается у предмета, в interactionList.

Добавление взаимодействия​

У предмета раскладки добавьте запись в interactionList:

ПолеНазначение
typeТип клика: LEFT_CLICK, RIGHT_CLICK, SHIFT_LEFT_CLICK, SHIFT_RIGHT_CLICK, MIDDLE_CLICK, DOUBLE_CLICK, от NUMBER_KEY_1 до NUMBER_KEY_9, DROP, DROP_ALL, SWAP_OFFHAND.
commandsКоманды, выполняемые от имени консоли. %player% заменяется именем игрока, плейсхолдеры PlaceholderAPI обрабатываются.
triggersЗаписи TypeWriter, которые нужно запустить для игрока.
closeMenuЗакрывает меню после действия.
executeReturnСнова открывает предыдущее меню после действия.

У самого предмета также есть triggers и modifiers. Они срабатывают при клике левой или правой кнопкой либо при совпадении какого-либо конкретного взаимодействия предмета. modifiers изменяют факты точно так же, как модификаторы действия.

Звук клика, заданный в audio.onClick, воспроизводится один раз за каждый клик, который что-то сделал.

Внутренние команды​

Команда, начинающаяся с gui:, обрабатывается GUI:

КомандаДействие
gui:closeЗакрыть меню.
gui:backСнова открыть предыдущее меню.
gui:open <entry_id>, gui:action <entry_id>Запустить другую запись, как правило другой Open GUI.
gui:view <view_id>Переключить представление, не закрывая окно.
gui:page <delta> [layout_id]Сменить страницу раскладки с пагинацией.
gui:scroll <dx> <dy> [layout_id]Прокрутить прокручиваемую раскладку.
gui:refreshПерерисовать меню.
gui:sound <sound_key>Воспроизвести звук по ключу, например minecraft:ui.button.click.

Вам редко придётся вручную вводить gui:close и gui:back: достаточно включить closeMenu или executeReturn.

Диалог ввода​

Если задать input у предмета, при клике по слоту откроется текстовый диалог. Диалог заменяет собой взаимодействия этого клика. Заполните title, placeholder, onInputCommands и onInputTriggers. В onInputCommands {input} заменяется введённым текстом, а %player% именем игрока. После подтверждения диалога меню перерисовывается.

warning

В подсказке к полю упоминается %value%, но в коде заменяется {input}. Проверяйте то, что вводят игроки, прежде чем это попадёт в команду, количество или право.

Права​

  • viewPermission скрывает слот.
  • clickPermission оставляет слот видимым и убирает его взаимодействия, ввод и триггеры.
  • criteria добавляет условие TypeWriter.

Используйте clickPermission, чтобы показать заблокированную кнопку с поясняющим описанием (lore), а viewPermission, чтобы её скрыть. Пустое значение ничего не ограничивает.

Кнопки, предоставляемые другими расширениями​

Предмет с buttonType становится помеченной кнопкой. Shops и Quest Codex размещают такие маркеры; затем другое расширение заменяет взаимодействия на свои. Метка состоит из buttonPrefix, за которым следует buttonType (например, shop_button: и SHOP_ITEM). Если ни одно расширение не заявило права на метку, предмет сохраняет настроенные вами взаимодействия.

Задержки и живые меню​

cooldownTicks блокирует тот же слот на указанное число тиков после клика. autoRefreshTicks у Open GUI перерисовывает названия и описания с их текущими плейсхолдерами каждые N тиков; для меню, которым не нужно обновляться, держите значение 20 или больше.

Если клик ничего не делает​

Проверяйте в таком порядке: clickPermission, cooldownTicks, criteria, input, перехватывающий клик, затем префикс buttonType. Команда, которой нужен игрок в качестве отправителя, не сработает, поскольку команды выполняются от имени консоли.