From 850f55886b06254ae7b28bdb90b8f92b6fe43c68 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Sat, 4 Feb 2023 15:26:30 +0100 Subject: [PATCH] Keybinds (#70) * unbind keybinds by default * remove redundant static class reference * remove [GC] at the start of keybind names in the menu * slightly less cursed keybind handler --- .../core/tick/KeyHandlerClient.java | 170 +++++++++--------- .../core/util/ConfigManagerCore.java | 27 --- .../assets/galacticraftcore/lang/en_GB.lang | 6 +- .../assets/galacticraftcore/lang/en_US.lang | 6 +- 4 files changed, 90 insertions(+), 119 deletions(-) diff --git a/src/main/java/micdoodle8/mods/galacticraft/core/tick/KeyHandlerClient.java b/src/main/java/micdoodle8/mods/galacticraft/core/tick/KeyHandlerClient.java index 8c85c7e76a..9e430e4ef3 100644 --- a/src/main/java/micdoodle8/mods/galacticraft/core/tick/KeyHandlerClient.java +++ b/src/main/java/micdoodle8/mods/galacticraft/core/tick/KeyHandlerClient.java @@ -11,7 +11,6 @@ import micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStatsClient; import micdoodle8.mods.galacticraft.core.network.PacketSimple; import micdoodle8.mods.galacticraft.core.network.PacketSimple.EnumSimplePacket; -import micdoodle8.mods.galacticraft.core.util.ConfigManagerCore; import micdoodle8.mods.galacticraft.core.util.GCCoreUtil; import micdoodle8.mods.galacticraft.core.util.PlayerUtil; @@ -22,31 +21,26 @@ import org.lwjgl.input.Keyboard; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent.Type; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class KeyHandlerClient extends KeyHandler { - public static KeyBinding galaxyMap; - public static KeyBinding openFuelGui; - public static KeyBinding toggleAdvGoggles; - - static { - galaxyMap = new KeyBinding( - GCCoreUtil.translate("keybind.map.name"), - ConfigManagerCore.keyOverrideMapI == 0 ? Keyboard.KEY_M : ConfigManagerCore.keyOverrideMapI, - Constants.MOD_NAME_SIMPLE); - openFuelGui = new KeyBinding( - GCCoreUtil.translate("keybind.spaceshipinv.name"), - ConfigManagerCore.keyOverrideFuelLevelI == 0 ? Keyboard.KEY_F : ConfigManagerCore.keyOverrideFuelLevelI, - Constants.MOD_NAME_SIMPLE); - toggleAdvGoggles = new KeyBinding( - GCCoreUtil.translate("keybind.sensortoggle.name"), - ConfigManagerCore.keyOverrideToggleAdvGogglesI == 0 ? Keyboard.KEY_K - : ConfigManagerCore.keyOverrideToggleAdvGogglesI, - Constants.MOD_NAME_SIMPLE); - // See ConfigManagerCore.class for actual defaults. These do nothing - } - + public static KeyBinding galaxyMap = new KeyBinding( + GCCoreUtil.translate("keybind.map.name"), + Keyboard.KEY_NONE, + Constants.MOD_NAME_SIMPLE); + public static KeyBinding openFuelGui = new KeyBinding( + GCCoreUtil.translate("keybind.spaceshipinv.name"), + Keyboard.KEY_NONE, + Constants.MOD_NAME_SIMPLE); + public static KeyBinding toggleAdvGoggles = new KeyBinding( + GCCoreUtil.translate("keybind.sensortoggle.name"), + Keyboard.KEY_NONE, + Constants.MOD_NAME_SIMPLE); public static KeyBinding accelerateKey; public static KeyBinding decelerateKey; public static KeyBinding leftKey; @@ -59,104 +53,105 @@ public class KeyHandlerClient extends KeyHandler { public KeyHandlerClient() { super( - new KeyBinding[] { KeyHandlerClient.galaxyMap, KeyHandlerClient.openFuelGui, - KeyHandlerClient.toggleAdvGoggles }, + new KeyBinding[] { galaxyMap, openFuelGui, toggleAdvGoggles }, new boolean[] { false, false, false }, - KeyHandlerClient.getVanillaKeyBindings(), + getVanillaKeyBindings(), new boolean[] { false, true, true, true, true, true, true }); } private static KeyBinding[] getVanillaKeyBindings() { - final KeyBinding invKey = KeyHandlerClient.mc.gameSettings.keyBindInventory; - KeyHandlerClient.accelerateKey = KeyHandlerClient.mc.gameSettings.keyBindForward; - KeyHandlerClient.decelerateKey = KeyHandlerClient.mc.gameSettings.keyBindBack; - KeyHandlerClient.leftKey = KeyHandlerClient.mc.gameSettings.keyBindLeft; - KeyHandlerClient.rightKey = KeyHandlerClient.mc.gameSettings.keyBindRight; - KeyHandlerClient.upKey = KeyHandlerClient.mc.gameSettings.keyBindForward; - KeyHandlerClient.downKey = KeyHandlerClient.mc.gameSettings.keyBindBack; - KeyHandlerClient.spaceKey = KeyHandlerClient.mc.gameSettings.keyBindJump; - KeyHandlerClient.leftShiftKey = KeyHandlerClient.mc.gameSettings.keyBindSneak; - return new KeyBinding[] { invKey, KeyHandlerClient.accelerateKey, KeyHandlerClient.decelerateKey, - KeyHandlerClient.leftKey, KeyHandlerClient.rightKey, KeyHandlerClient.spaceKey, - KeyHandlerClient.leftShiftKey }; + final KeyBinding invKey = mc.gameSettings.keyBindInventory; + accelerateKey = mc.gameSettings.keyBindForward; + decelerateKey = mc.gameSettings.keyBindBack; + leftKey = mc.gameSettings.keyBindLeft; + rightKey = mc.gameSettings.keyBindRight; + upKey = mc.gameSettings.keyBindForward; + downKey = mc.gameSettings.keyBindBack; + spaceKey = mc.gameSettings.keyBindJump; + leftShiftKey = mc.gameSettings.keyBindSneak; + return new KeyBinding[] { invKey, accelerateKey, decelerateKey, leftKey, rightKey, spaceKey, leftShiftKey }; } - @Override - public void keyDown(Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat) { - if (KeyHandlerClient.mc.thePlayer != null && tickEnd) { - final EntityClientPlayerMP playerBase = PlayerUtil - .getPlayerBaseClientFromPlayer(KeyHandlerClient.mc.thePlayer, false); - + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onKeyPressed(InputEvent.KeyInputEvent event) { + if (mc.thePlayer == null) { + return; + } + if (galaxyMap.isPressed()) { + if (mc.currentScreen == null) { + mc.thePlayer.openGui( + GalacticraftCore.instance, + GuiIdsCore.GALAXY_MAP, + mc.theWorld, + (int) mc.thePlayer.posX, + (int) mc.thePlayer.posY, + (int) mc.thePlayer.posZ); + } + } else if (openFuelGui.isPressed()) { + final EntityClientPlayerMP playerBase = PlayerUtil.getPlayerBaseClientFromPlayer(mc.thePlayer, false); if (playerBase == null) { return; } - - final GCPlayerStatsClient stats = GCPlayerStatsClient.get(playerBase); - - if (kb.getKeyCode() == KeyHandlerClient.galaxyMap.getKeyCode()) { - if (KeyHandlerClient.mc.currentScreen == null) { - KeyHandlerClient.mc.thePlayer.openGui( - GalacticraftCore.instance, - GuiIdsCore.GALAXY_MAP, - KeyHandlerClient.mc.theWorld, - (int) KeyHandlerClient.mc.thePlayer.posX, - (int) KeyHandlerClient.mc.thePlayer.posY, - (int) KeyHandlerClient.mc.thePlayer.posZ); - } - } else if (kb.getKeyCode() == KeyHandlerClient.openFuelGui.getKeyCode()) { - if (playerBase.ridingEntity instanceof EntitySpaceshipBase - || playerBase.ridingEntity instanceof EntityBuggy) { - GalacticraftCore.packetPipeline.sendToServer( - new PacketSimple( - EnumSimplePacket.S_OPEN_FUEL_GUI, - new Object[] { playerBase.getGameProfile().getName() })); - } - } else if (kb.getKeyCode() == KeyHandlerClient.toggleAdvGoggles.getKeyCode()) { - if (playerBase != null) { - stats.usingAdvancedGoggles = !stats.usingAdvancedGoggles; - } + if (playerBase.ridingEntity instanceof EntitySpaceshipBase + || playerBase.ridingEntity instanceof EntityBuggy) { + GalacticraftCore.packetPipeline.sendToServer( + new PacketSimple( + EnumSimplePacket.S_OPEN_FUEL_GUI, + new Object[] { playerBase.getGameProfile().getName() })); + } + } else if (toggleAdvGoggles.isPressed()) { + final EntityClientPlayerMP playerBase = PlayerUtil.getPlayerBaseClientFromPlayer(mc.thePlayer, false); + if (playerBase == null) { + return; } + final GCPlayerStatsClient stats = GCPlayerStatsClient.get(playerBase); + stats.usingAdvancedGoggles = !stats.usingAdvancedGoggles; } + } + + @Override // TODO code something else to control buggys to avoid ontick checks + public void keyDown(Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat) { - if (KeyHandlerClient.mc.thePlayer != null && KeyHandlerClient.mc.currentScreen == null) { + if (mc.thePlayer != null && mc.currentScreen == null && mc.thePlayer.ridingEntity != null) { int keyNum = -1; - if (kb == KeyHandlerClient.accelerateKey) { + if (kb == accelerateKey) { keyNum = 0; - } else if (kb == KeyHandlerClient.decelerateKey) { + } else if (kb == decelerateKey) { keyNum = 1; - } else if (kb == KeyHandlerClient.leftKey) { + } else if (kb == leftKey) { keyNum = 2; - } else if (kb == KeyHandlerClient.rightKey) { + } else if (kb == rightKey) { keyNum = 3; - } else if (kb == KeyHandlerClient.spaceKey) { + } else if (kb == spaceKey) { keyNum = 4; - } else if (kb == KeyHandlerClient.leftShiftKey) { + } else if (kb == leftShiftKey) { keyNum = 5; } - final Entity entityTest = KeyHandlerClient.mc.thePlayer.ridingEntity; - if (entityTest != null && entityTest instanceof IControllableEntity && keyNum != -1) { - final IControllableEntity entity = (IControllableEntity) entityTest; + final Entity entityTest = mc.thePlayer.ridingEntity; - if (kb.getKeyCode() == KeyHandlerClient.mc.gameSettings.keyBindInventory.getKeyCode()) { - KeyBinding.setKeyBindState(KeyHandlerClient.mc.gameSettings.keyBindInventory.getKeyCode(), false); - } + if (entityTest instanceof IControllableEntity && keyNum != -1) { + final IControllableEntity entity = (IControllableEntity) entityTest; + if (kb.getKeyCode() == mc.gameSettings.keyBindInventory.getKeyCode()) { + KeyBinding.setKeyBindState(mc.gameSettings.keyBindInventory.getKeyCode(), false); + } entity.pressKey(keyNum); - } else if (entityTest != null && entityTest instanceof EntityAutoRocket) { - final EntityAutoRocket autoRocket = (EntityAutoRocket) entityTest; + } else if (entityTest instanceof EntityAutoRocket) { + + final EntityAutoRocket autoRocket = (EntityAutoRocket) entityTest; if (autoRocket.landing) { - if (kb == KeyHandlerClient.leftShiftKey) { + if (kb == leftShiftKey) { autoRocket.motionY -= 0.02D; GalacticraftCore.packetPipeline.sendToServer( new PacketSimple( EnumSimplePacket.S_UPDATE_SHIP_MOTION_Y, new Object[] { autoRocket.getEntityId(), false })); } - - if (kb == KeyHandlerClient.spaceKey) { + if (kb == spaceKey) { autoRocket.motionY += 0.02D; GalacticraftCore.packetPipeline.sendToServer( new PacketSimple( @@ -164,8 +159,11 @@ public void keyDown(Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat new Object[] { autoRocket.getEntityId(), true })); } } + } + } + } @Override diff --git a/src/main/java/micdoodle8/mods/galacticraft/core/util/ConfigManagerCore.java b/src/main/java/micdoodle8/mods/galacticraft/core/util/ConfigManagerCore.java index b4809fc805..e54237235e 100644 --- a/src/main/java/micdoodle8/mods/galacticraft/core/util/ConfigManagerCore.java +++ b/src/main/java/micdoodle8/mods/galacticraft/core/util/ConfigManagerCore.java @@ -128,12 +128,6 @@ public class ConfigManagerCore { public static boolean useOldFuelFluidID; // KEYBOARD AND MOUSE - public static String keyOverrideMap; - public static String keyOverrideFuelLevel; - public static String keyOverrideToggleAdvGoggles; - public static int keyOverrideMapI; - public static int keyOverrideFuelLevelI; - public static int keyOverrideToggleAdvGogglesI; public static float mapMouseScrollSensitivity; public static boolean invertMapMouseScroll; @@ -571,27 +565,6 @@ public static void syncConfig(boolean load) { allowSSatUnreachable = prop.getBoolean(); propOrder.add(prop.getName()); - prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Open Galaxy Map", "KEY_M"); - prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted"; - prop.setLanguageKey("gc.configgui.overrideMap").setRequiresMcRestart(true); - keyOverrideMap = prop.getString(); - keyOverrideMapI = parseKeyValue(keyOverrideMap); - propOrder.add(prop.getName()); - - prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Open Fuel GUI", "KEY_F"); - prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted"; - prop.setLanguageKey("gc.configgui.keyOverrideFuelLevel").setRequiresMcRestart(true); - keyOverrideFuelLevel = prop.getString(); - keyOverrideFuelLevelI = parseKeyValue(keyOverrideFuelLevel); - propOrder.add(prop.getName()); - - prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Toggle Advanced Goggles", "KEY_K"); - prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted"; - prop.setLanguageKey("gc.configgui.keyOverrideToggleAdvGoggles").setRequiresMcRestart(true); - keyOverrideToggleAdvGoggles = prop.getString(); - keyOverrideToggleAdvGogglesI = parseKeyValue(keyOverrideToggleAdvGoggles); - propOrder.add(prop.getName()); - prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Rocket fuel factor", 1); prop.comment = "The normal factor is 1. Increase this to 2 - 5 if other mods with a lot of oil (e.g. BuildCraft) are installed to increase GC rocket fuel requirement."; prop.setLanguageKey("gc.configgui.rocketFuelFactor"); diff --git a/src/main/resources/assets/galacticraftcore/lang/en_GB.lang b/src/main/resources/assets/galacticraftcore/lang/en_GB.lang index 296bc85fac..02b1a03812 100644 --- a/src/main/resources/assets/galacticraftcore/lang/en_GB.lang +++ b/src/main/resources/assets/galacticraftcore/lang/en_GB.lang @@ -256,9 +256,9 @@ newversion.failed.name=Galacticraft update check failed! Trying again in 15 seco newversion.success.name=Galacticraft remote version found: # KEYBINDINGS -keybind.map.name=[GC] Galaxy Map -keybind.spaceshipinv.name=[GC] Open Spaceship Inventory -keybind.sensortoggle.name=[GC] Toggle Sensor Goggles Mode +keybind.map.name=Open Galaxy Map +keybind.spaceshipinv.name=Open Spaceship Inventory +keybind.sensortoggle.name=Toggle Sensor Goggles Mode keybind.vehicleforward.name=[GC] Vehicle Forward Key keybind.vehiclebackward.name=[GC] Vehicle Backward Key keybind.vehicleleft.name=[GC] Vehicle Left Key diff --git a/src/main/resources/assets/galacticraftcore/lang/en_US.lang b/src/main/resources/assets/galacticraftcore/lang/en_US.lang index f3a24c7469..0ecbb96c67 100644 --- a/src/main/resources/assets/galacticraftcore/lang/en_US.lang +++ b/src/main/resources/assets/galacticraftcore/lang/en_US.lang @@ -249,9 +249,9 @@ tooltip.rocket_fuel_tier=Can be used as rocket fuel up to tier %s tooltip.rocket_fuel_tier_max=Can be used as rocket fuel for all tiers # KEYBINDINGS -keybind.map.name=[GC] Galaxy Map -keybind.spaceshipinv.name=[GC] Open Spaceship Inventory -keybind.sensortoggle.name=[GC] Toggle Sensor Goggles Mode +keybind.map.name=Open Galaxy Map +keybind.spaceshipinv.name=Open Spaceship Inventory +keybind.sensortoggle.name=Toggle Sensor Goggles Mode keybind.vehicleforward.name=[GC] Vehicle Forward Key keybind.vehiclebackward.name=[GC] Vehicle Backward Key keybind.vehicleleft.name=[GC] Vehicle Left Key