医疗包按键
基本信息
| 属性 | 值 |
|---|---|
| 字段 | ClientProxy.MEDICAL_KEY(proxy/ClientProxy.java:27) |
| 键名 | GraviSuite MedKit |
| 分类 | GraviSuite(在「选项 → 控制」下的独立分组) |
| 默认键 | 无绑定(Keyboard.KEY_NONE) |
| 注册方式 | ClientRegistry.registerKeyBinding(ClientProxy.java:38) |
| 监听事件 | KeyInputEvent(ClientProxy.java:192-193) |
| 侧别 | 仅客户端 |
本 mod 只注册这一个按键。它不用 GTNHLib 的 SyncedKeybind,而是标准 FML KeyBinding + KeyInputEvent。
行为
onKeyInput(ClientProxy.java:192-200)的触发条件:
- 聊天界面未打开(
!isGUIOpen(GuiChat.class)) MEDICAL_KEY.isPressed()(1.7.10 的isPressed为边沿触发,每次按下计一次,不会每 tick 重复)
满足后:
| 步骤 | 行为 | 源码 |
|---|---|---|
| 1 | 读玩家胸甲槽(armorItemInSlot(2)) |
:195 |
| 2 | 非空且物品 == GraviSuite.graviChestPlate |
:196 |
| 3 | 发出 PacketKeyPress.issue(4) |
:197 |
即「穿着量子护盾胸甲时按此键,向服务端请求一次医疗包」。伤害/治疗的具体结算在父模组 GraviSuite 内完成(不在本 wiki 收录范围)。
已知注意点
- 默认无绑定:出厂状态该键不响应任何按键,玩家必须自行在「选项 → 控制 → GraviSuite」分组里绑定
- 只认胸甲槽的精确实例:判定用
itemstack.getItem() == GraviSuite.graviChestPlate(对象引用相等),量子护盾胸甲的染色变体或被替换的等价物品都不触发 - 无
isGUIOpen之外的 GUI 屏蔽:只判断了聊天界面。打开箱子、任务书等任何 GUI 时按此键仍会发包(此时thePlayer存在,故不会崩,但会误触发医疗包) - 第 3 步的包号 4 是父模组协议:
PacketKeyPress.issue(4)中的4必须在父模组侧有对应处理,本 mod 自己不发包