InputTracker
概览
InputTracker 将键盘和物品栏变成 TypeWriter 的触发器。它会监听一组玩家输入(交换手持物、丢弃、潜行、疾跑、聊天、命令和快捷栏选择),并运行你选择的动作。它还可以在玩家物品栏或 2x2 合成格中固定按钮:这些物品无法被移动、丢弃或放置,点击时会运行动作。
所有内容都在一个清单条目 Input Trigger Config 中配置。它适用于 RPG 风格的快捷操作,例如按 F 键打开菜单,或在最后一个快捷栏槽位给每位玩家一个“菜单”时钟。
功能
- 七种输入 — 交换手持物(F)、丢弃(Q)、潜行(Shift)、疾跑(Ctrl)、聊天消息、命令和快捷栏槽位选择。
- 取消原始动作 — 可选择阻止原版行为,例如让 F 键不再交换物品。
- 条件、延迟和冷却 — 仅在条件匹配时运行,可延迟若干 tick,两次触发之间可设置冷却。
- 物品栏按钮 — 固定在指定槽位的物品,无法被移动、丢弃、放置或食用。
- 点击类型 — 针对左键、右键、Shift+左键、Shift+右键、丢弃、双击分别设置不同的动作,或使用任意点击作为后备。
- 世界中的快捷栏按钮 — 手持按钮时的左键和右键点击会运行其动作。
- 合成格按钮 — 位于 2x2 合成格中的按钮,当按钮占据合成格时合成功能被禁用。
- 按按钮设置条件 — 每个按钮以及每个点击绑定都可以有自己的条件。
安装
- 使用 Paper 1.21 或更高版本。不需要数据包库。
- 将 InputTracker 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。
该扩展使用 Bukkit 调度器来安排延迟,因此适用于 Paper,而不适用于 Folia。
快速上手
玩家按 F 时打开菜单,并给每位玩家一个菜单按钮:
- 在 TypeWriter 网页面板中,打开一个**清单(manifest)**页面,添加一个 Input Trigger Config 条目。只创建一个:会使用找到的第一个。
- 在
keybinds中添加一项。将type设为SWAP_HAND,勾选enabled(默认关闭),并勾选cancelAction,这样双手就不会被交换。 - 在它的
actions中,选择用于打开你菜单的动作条目。将cooldown设为10tick,以避免重复触发。 - 在
inventoryButtons中添加一项。将slot设为8(最后一个快捷栏槽位),并选择要显示的item,例如一个名为<gold>Menu的时钟。 - 在它的
clickActions中,添加一个clickType为LEFT的绑定,并在actions中填入相同的动作。 - 发布。玩家在加入或重生时会获得该按钮。
按钮会替换其 slot 中原有的任何物品。请选择玩家不会用来放自己物品的槽位。
只要玩家携带至少一个按钮,就无法死亡:本应致命的伤害会被取消。请围绕这一点规划你的游戏设计,或者在玩家必须能够死亡的场景中移除这些按钮。
工作原理
按键绑定。 对于每个 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 开启时使用。
按钮。 按钮是带有标记的物品。当玩家加入、重生或打开合成物品栏时,它们会被放入玩家的物品栏。它们无法被移动、拖动、丢弃、交换到副手、放置或食用。
点击按钮时,扩展会选取第一个 clickType 与该点击匹配且 criteria 通过的 clickActions 绑定。如果没有,则使用第一个条件通过的 ALL 绑定。中键点击或数字键视为左键点击。在世界中,手持按钮时的左键和右键点击分别视为 LEFT 和 RIGHT。
配置
所有设置都是 Input Trigger Config 条目的字段。
keybinds 字段
| 字段 | 说明 |
|---|---|
type | 要监听的输入。 |
enabled | 必须开启,该定义才会生效。默认关闭。 |
cancelAction | 取消原版行为。 |
actions | 要运行的动作条目。 |
delay | 运行动作之前等待的 tick 数(0 表示立即运行)。 |
cooldown | 同一玩家同一输入两次触发之间的 tick 数(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 | 运行动作前的 tick 数。 |
isCraftingGrid | 将按钮放在 2x2 合成格而不是物品栏中。 |
criteria | 点击该按钮要产生效果所需满足的条件。 |
在合成格中,槽位 0 是结果槽位,其作用相当于“提交”按钮,槽位 1 到 4 是四个合成格槽位。当按钮占据某个合成格槽位时,合成结果会被阻止,因此没有人可以复制物品。
条目
1 个条目,由扩展源码生成。
清单1
- Input Trigger ConfigPlayer Input Triggers Configuration
故障排查
按键绑定没有任何作用。 enabled 默认是关闭的。同时请检查该定义是否有 actions、criteria 是否匹配,以及同一个 type 是否只有一个定义:只会读取第一个。条目必须已发布,并且只能有一个 Input Trigger Config。
动作只是偶尔运行。 cooldown 对同一玩家和同一输入是共享的,单位为 tick(20 tick 为一秒)。即使冷却阻止了动作,cancelAction 仍然生效。DROP 不使用冷却。
F 或 Q 键仍会执行其正常动作。 请勾选 cancelAction。对于聊天和命令输入,cancelAction 会阻止消息或命令被发送。
按钮无法点击,或没有任何作用。 当按钮的 criteria 不通过,或没有 clickActions 绑定匹配该点击类型且没有 ALL 绑定时,点击不会有任何作用。actions 必须是动作条目。
物品栏中的某个物品消失了。 每次放置按钮时,按钮都会替换其 slot 中的物品。请选择一个空闲的槽位。
已删除的按钮仍留在物品栏中。 按钮是由扩展标记的物品。当你在配置中删除或移动按钮时,旧的物品会在玩家下次关闭物品栏、加入或重生时被清除,并重新放置当前的按钮。
玩家不会死亡。 这是有意为之:携带按钮的玩家不会受到致命伤害。