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

InputTracker

Запускайте действия по клавишам F, Q, Shift, Ctrl, слотам хотбара и кликабельным кнопкам инвентаря.

Бесплатныеv0.5Утилиты
ТребуетсяTypeWriter0.9Paper1.21+

Обзор​

InputTracker превращает клавиатуру и инвентарь в триггеры для TypeWriter. Он отслеживает несколько видов ввода игрока (обмен руками, выброс, приседание, бег, чат, команды и выбор слота хотбара) и запускает выбранные вами действия. Он также может закреплять кнопки в инвентаре игрока или в сетке крафта 2x2: это предметы, которые нельзя переместить, выбросить или поставить и которые при клике запускают действия.

Всё настраивается в одной записи-манифесте Input Trigger Config. Это удобно для быстрых действий в RPG-стиле, например открывать меню клавишей F или выдавать каждому игроку часы «Меню» в последнем слоте хотбара.

Возможности​

  • Семь видов ввода — обмен руками (F), выброс (Q), приседание (Shift), бег (Ctrl), сообщение в чат, команда и выбор слота хотбара.
  • Отмена исходного действия — при желании можно остановить ванильное поведение, например чтобы клавиша F не меняла предметы местами.
  • Критерии, задержка и перезарядка — запуск только при выполнении условий, после задержки в тиках, с перезарядкой между двумя срабатываниями.
  • Кнопки в инвентаре — предметы, закреплённые в выбранных слотах, которые нельзя переместить, выбросить, поставить или съесть.
  • Типы кликов — свой набор действий для левого, правого, Shift+левого, Shift+правого клика, выброса, двойного клика или любого клика как запасной вариант.
  • Кнопки хотбара в мире — левый и правый клики с кнопкой в руке запускают её действия.
  • Кнопки в сетке крафта — кнопки в сетке крафта 2x2, при этом крафт отключается, пока в ней находится кнопка.
  • Критерии для каждой кнопки — у каждой кнопки и каждой привязки клика могут быть свои условия.

Установка​

  1. Используйте Paper 1.21 или новее. Библиотека пакетов не нужна.
  2. Поместите JAR-файл InputTracker в plugins/Typewriter/extensions/ и перезапустите сервер.

Расширение планирует задержки через планировщик Bukkit, поэтому оно рассчитано на Paper, а не на Folia.

Начало работы​

Откройте меню, когда игрок нажимает F, и выдайте каждому игроку кнопку меню:

  1. В веб-панели TypeWriter откройте страницу manifest и добавьте запись Input Trigger Config. Создавайте только одну: используется первая найденная.
  2. В keybinds добавьте элемент. Задайте type равным SWAP_HAND, включите enabled (по умолчанию он выключен) и включите cancelAction, чтобы руки не менялись местами.
  3. В его actions выберите запись-действие, открывающую ваше меню. Задайте cooldown равным 10 тикам, чтобы избежать двойных срабатываний.
  4. В inventoryButtons добавьте элемент. Задайте slot равным 8 (последний слот хотбара) и выберите item для отображения, например часы с названием <gold>Menu.
  5. В его clickActions добавьте привязку с clickType LEFT и тем же действием в actions.
  6. Опубликуйте. Игроки получают кнопку при входе или возрождении.
warning

Кнопка заменяет любой предмет, находящийся в её slot. Выбирайте слоты, которые ваши игроки не используют для собственных предметов.

warning

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

Как это работает​

Клавиши (keybinds). Для каждого type используется первое определение в keybinds, поэтому два определения для одного и того же ввода иметь нельзя. Это относится и к HOTBAR_SLOT: он реагирует на один слот, выбранный через hotbarSlot.

Что именно означает каждый вид ввода:

ТипСрабатывает, когда
SWAP_HANDИгрок нажимает F.
DROPИгрок нажимает Q, чтобы выбросить предмет (но не когда предмет удерживается курсором).
SNEAKИгрок начинает приседать.
SPRINTИгрок начинает бежать.
CHATИгрок отправляет сообщение в чат. Простое нажатие T ничего не делает.
COMMANDИгрок выполняет команду.
HOTBAR_SLOTИгрок выбирает слот хотбара hotbarSlot (от 0 до 8).

С cancelAction исходное событие отменяется: руки не меняются местами, сообщение или команда не отправляются. Для DROP параметр dropCount (-1 для всей стопки, число больше 1 для заданного количества) используется только при включённом cancelAction.

Кнопки. Кнопки — это помеченные предметы. Они помещаются в инвентарь игрока, когда он заходит на сервер, возрождается или открывает инвентарь крафта. Их нельзя переместить, перетащить, выбросить, переложить во вторую руку, поставить или съесть.

При клике по кнопке расширение выбирает первую привязку из clickActions, у которой clickType соответствует клику, а criteria выполняются. Если такой нет, используется первая привязка ALL, у которой критерии выполняются. Клик средней кнопкой или цифровая клавиша считаются левым кликом. В мире левый и правый клики с кнопкой в руке считаются LEFT и RIGHT.

Конфигурация​

Все параметры — это поля записи Input Trigger Config.

Поля keybinds

ПолеОписание
typeВид ввода, который нужно отслеживать.
enabledДолжно быть включено, чтобы определение работало. По умолчанию выключено.
cancelActionОтменить ванильное поведение.
actionsЗаписи-действия, которые нужно выполнить.
delayКоличество тиков ожидания перед выполнением действий (0 выполняет их сразу).
cooldownТики между двумя срабатываниями для одного игрока и одного ввода (0 — без перезарядки).
dropCountДля DROP. 1 — один предмет, -1 — вся стопка.
hotbarSlotДля HOTBAR_SLOT: слот от 0 до 8.
criteriaУсловия, при которых срабатывание выполняется.

Поля inventoryButtons

ПолеОписание
slotСлот инвентаря от 0 до 40 (0–8 хотбар, 36–39 броня, 40 вторая рука). В сетке крафта — от 0 до 4.
itemПредмет, отображаемый как кнопка.
clickActionsСписок привязок с clickType, actions и criteria.
delayТики до выполнения действий.
isCraftingGridПоместить кнопку в сетку крафта 2x2 вместо инвентаря.
criteriaУсловия, при которых клик по кнопке вообще что-то делает.

В сетке крафта слот 0 — это слот результата, он работает как кнопка «отправить», а слоты от 1 до 4 — четыре слота сетки. Результат крафта блокируется, пока кнопка находится в одном из слотов сетки, поэтому никто не сможет дублировать предметы.

Записи​

Записей: 1, сгенерированы из исходного кода расширения.

Манифесты1

Устранение неполадок​

Клавиша ничего не делает. enabled по умолчанию выключен. Также проверьте, что у определения есть actions, что criteria выполняются и что для этого type у вас только одно определение: читается только первое. Запись должна быть опубликована, а Input Trigger Config должен быть только один.

Действие срабатывает лишь время от времени. cooldown общий для одного и того же игрока и одного и того же ввода и измеряется в тиках (20 тиков — это одна секунда). cancelAction продолжает действовать, пока перезарядка блокирует действия. DROP перезарядку не использует.

Клавиша F или Q по-прежнему выполняет обычное действие. Включите cancelAction. Для видов ввода «чат» и «команда» cancelAction не даёт сообщению или команде отправиться.

Кнопка не нажимается или ничего не делает. Клик ничего не делает, если criteria кнопки не выполняются либо ни одна привязка из clickActions не соответствует типу клика и нет привязки ALL. В actions должны быть записи-действия.

Предмет исчез из инвентаря. Кнопка заменяет предмет в своём slot каждый раз, когда кнопки размещаются. Выберите свободный слот.

Удалённая кнопка остаётся в инвентаре. Кнопки — это предметы, помеченные расширением. Когда вы удаляете или перемещаете кнопку в конфигурации, старые предметы очищаются, а текущие кнопки размещаются заново, когда игрок в следующий раз закроет инвентарь, зайдёт на сервер или возродится.

Игрок не умирает. Так и задумано: игрок, несущий кнопку, не может получить смертельный урон.