Nutrition GUI 热键
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | key.nutrition(i18n key) |
| 默认按键 | Keyboard.KEY_NONE(默认未绑定,玩家需自行在控制选项中设置) |
| KeyBinding 类别 | "Nutrition" |
| 客户端字段 | ca.wescook.nutrition.proxy.ClientProxy.keyNutritionGui |
功能
按下热键时打开(或关闭)NutritionGui,让玩家随时查看每个 Nutrient 的当前值与进度。
实现
注册
public class ClientProxy extends CommonProxy {
public static KeyBinding keyNutritionGui;
@Override
public void init(FMLInitializationEvent event) {
if (NutritionConfig.gui.enable) {
ClientRegistry.registerKeyBinding(
keyNutritionGui = new KeyBinding("key.nutrition", Keyboard.KEY_NONE, "Nutrition"));
FMLCommonHandler.instance().bus().register(new EventNutritionKey());
if (NutritionConfig.gui.enableButton) {
MinecraftForge.EVENT_BUS.register(new EventNutritionButton());
}
}
if (NutritionConfig.gui.enableTooltips) {
MinecraftForge.EVENT_BUS.register(new EventTooltip());
}
}
}
按键处理
public class EventNutritionKey {
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void keyInput(InputEvent.KeyInputEvent event) {
if (ClientProxy.keyNutritionGui.isPressed()) {
Minecraft.getMinecraft().displayGuiScreen(new NutritionGui());
}
}
}
关闭逻辑
NutritionGui.keyTyped 中检测到以下任一键也关闭 GUI:
- Escape(keyCode 1)
- 玩家背包键(
mc.gameSettings.keyBindInventory.getKeyCode()) - 营养 GUI 键自身(实现 toggle 行为)
if (keyCode == 1 || keyCode == mc.gameSettings.keyBindInventory.getKeyCode()
|| keyCode == ClientProxy.keyNutritionGui.getKeyCode()) {
mc.thePlayer.closeScreen();
if (mc.currentScreen == null) mc.setIngameFocus();
}
配置项
NutritionConfig.gui.enable = true(默认):控制整个 GUI + 热键总开关;设为false时既不注册 KeyBinding 也不注册事件(McRestart 必需)NutritionConfig.gui.enableButton:控制是否在玩家背包 GUI 中注入营养按钮(McRestart 必需)
相关条目
- Nutrition GUI - 配置中
gui.enable控制整个功能 - 数据包同步 - GUI 打开时收到
SPacketNutrients会强制redrawLabels()