InputTracker
Обзор
InputTracker превращает клавиатуру и инвентарь в триггеры для TypeWriter. Он отслеживает несколько видов ввода игрока (обмен руками, выброс, приседание, бег, чат, команды и выбор слота хотбара) и запускает выбранные вами действия. Он также может закреплять кнопки в инвентаре игрока или в сетке крафта 2x2: это предметы, которые нельзя переместить, выбросить или поставить и которые при клике запускают действия.
Всё настраивается в одной записи-манифесте Input Trigger Config. Это удобно для быстрых действий в RPG-стиле, например открывать меню клавишей F или выдавать каждому игроку часы «Меню» в последнем слоте хотбара.
Возможности
- Семь видов ввода — обмен руками (F), выброс (Q), приседание (Shift), бег (Ctrl), сообщение в чат, команда и выбор слота хотбара.
- Отмена исходного действия — при желании можно остановить ванильное поведение, например чтобы клавиша F не меняла предметы местами.
- Критерии, задержка и перезарядка — запуск только при выполнении условий, после задержки в тиках, с перезарядкой между двумя срабатываниями.
- Кнопки в инвентаре — предметы, закреплённые в выбранных слотах, которые нельзя переместить, выбросить, поставить или съесть.
- Типы кликов — свой набор действий для левого, правого, Shift+левого, Shift+правого клика, выброса, двойного клика или любого клика как запасной вариант.
- Кнопки хотбара в мире — левый и правый клики с кнопкой в руке запускают её действия.
- Кнопки в сетке крафта — кнопки в сетке крафта 2x2, при этом крафт отключается, пока в ней находится кнопка.
- Критерии для каждой кнопки — у каждой кнопки и каждой привязки клика могут быть свои условия.
Установка
- Используйте Paper 1.21 или новее. Библиотека пакетов не нужна.
- Поместите JAR-файл InputTracker в
plugins/Typewriter/extensions/и перезапустите сервер.
Расширение планирует задержки через планировщик Bukkit, поэтому оно рассчитано на Paper, а не на Folia.
Начало работы
Откройте меню, когда игрок нажимает F, и выдайте каждому игроку кнопку меню:
- В веб-панели TypeWriter откройте страницу manifest и добавьте запись Input Trigger Config. Создавайте только одну: используется первая найденная.
- В
keybindsдобавьте элемент. ЗадайтеtypeравнымSWAP_HAND, включитеenabled(по умолчанию он выключен) и включитеcancelAction, чтобы руки не менялись местами. - В его
actionsвыберите запись-действие, открывающую ваше меню. Задайтеcooldownравным10тикам, чтобы избежать двойных срабатываний. - В
inventoryButtonsдобавьте элемент. Задайтеslotравным8(последний слот хотбара) и выберитеitemдля отображения, например часы с названием<gold>Menu. - В его
clickActionsдобавьте привязку сclickTypeLEFTи тем же действием вactions. - Опубликуйте. Игроки получают кнопку при входе или возрождении.
Кнопка заменяет любой предмет, находящийся в её slot. Выбирайте слоты, которые ваши игроки не используют для собственных предметов.
Игрок, несущий хотя бы одну кнопку, не может умереть: смертельный урон отменяется. Учитывайте это в дизайне игры или убирайте кнопки в ситуациях, где игроки должны иметь возможность умереть.
Как это работает
Клавиши (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
- Input Trigger ConfigPlayer Input Triggers Configuration
Устранение неполадок
Клавиша ничего не делает. enabled по умолчанию выключен. Также проверьте, что у определения есть actions, что criteria выполняются и что для этого type у вас только одно определение: читается только первое. Запись должна быть опубликована, а Input Trigger Config должен быть только один.
Действие срабатывает лишь время от времени. cooldown общий для одного и того же игрока и одного и того же ввода и измеряется в тиках (20 тиков — это одна секунда). cancelAction продолжает действовать, пока перезарядка блокирует действия. DROP перезарядку не использует.
Клавиша F или Q по-прежнему выполняет обычное действие. Включите cancelAction. Для видов ввода «чат» и «команда» cancelAction не даёт сообщению или команде отправиться.
Кнопка не нажимается или ничего не делает. Клик ничего не делает, если criteria кнопки не выполняются либо ни одна привязка из clickActions не соответствует типу клика и нет привязки ALL. В actions должны быть записи-действия.
Предмет исчез из инвентаря. Кнопка заменяет предмет в своём slot каждый раз, когда кнопки размещаются. Выберите свободный слот.
Удалённая кнопка остаётся в инвентаре. Кнопки — это предметы, помеченные расширением. Когда вы удаляете или перемещаете кнопку в конфигурации, старые предметы очищаются, а текущие кнопки размещаются заново, когда игрок в следующий раз закроет инвентарь, зайдёт на сервер или возродится.
Игрок не умирает. Так и задумано: игрок, несущий кнопку, не может получить смертельный урон.