Added support for key modifiers; GUI can now be opened and closed with the same button (if no widget has focus). Closes #6

This commit is contained in:
Marcel Konrad
2019-10-18 19:11:39 +02:00
parent 3bf7cce0f1
commit 932bdc397f
2 changed files with 34 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.InputEvent.KeyInputEvent; import net.minecraftforge.client.event.InputEvent.KeyInputEvent;
import net.minecraftforge.client.settings.KeyModifier;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
@@ -27,21 +28,31 @@ public class KeyHandler
{ {
if(Minecraft.getInstance() != null && Minecraft.getInstance().currentScreen == null) if(Minecraft.getInstance() != null && Minecraft.getInstance().currentScreen == null)
{ {
if(KeyHandler.KEY_WORLD_HANDLER.isPressed()) if(KeyHandler.isPressed(KeyHandler.KEY_WORLD_HANDLER))
{ {
ActionHelper.displayGui(); ActionHelper.displayGui();
} }
else if(KeyHandler.KEY_WORLD_HANDLER_POS1.isPressed() && Config.getSettings().shortcutKeys()) else if(KeyHandler.isPressed(KeyHandler.KEY_WORLD_HANDLER_POS1) && Config.getSettings().shortcutKeys())
{ {
BlockHelper.setPos1(BlockHelper.getFocusedBlockPos()); BlockHelper.setPos1(BlockHelper.getFocusedBlockPos());
} }
else if(KeyHandler.KEY_WORLD_HANDLER_POS2.isPressed() && Config.getSettings().shortcutKeys()) else if(KeyHandler.isPressed(KeyHandler.KEY_WORLD_HANDLER_POS2) && Config.getSettings().shortcutKeys())
{ {
BlockHelper.setPos2(BlockHelper.getFocusedBlockPos()); BlockHelper.setPos2(BlockHelper.getFocusedBlockPos());
} }
} }
} }
public static boolean isPressed(KeyBinding keyBinding)
{
return keyBinding.isPressed() && (KeyModifier.NONE.equals(keyBinding.getKeyModifier()) || KeyModifier.getActiveModifier().equals(keyBinding.getKeyModifier()));
}
public static boolean isPressed(KeyBinding keyBinding, int keyCode)
{
return keyCode == keyBinding.getKey().getKeyCode() && (KeyModifier.NONE.equals(keyBinding.getKeyModifier()) || KeyModifier.getActiveModifier().equals(keyBinding.getKeyModifier()));
}
public static void updatePosKeys() public static void updatePosKeys()
{ {
boolean isRegistered = KeyHandler.arePosKeysRegistered(); boolean isRegistered = KeyHandler.arePosKeysRegistered();

View File

@@ -15,6 +15,7 @@ import exopandora.worldhandler.Main;
import exopandora.worldhandler.WorldHandler; import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.impl.BuilderWorldHandler; import exopandora.worldhandler.builder.impl.BuilderWorldHandler;
import exopandora.worldhandler.config.Config; import exopandora.worldhandler.config.Config;
import exopandora.worldhandler.event.KeyHandler;
import exopandora.worldhandler.gui.button.EnumIcon; import exopandora.worldhandler.gui.button.EnumIcon;
import exopandora.worldhandler.gui.button.GuiButtonIcon; import exopandora.worldhandler.gui.button.GuiButtonIcon;
import exopandora.worldhandler.gui.button.GuiButtonTab; import exopandora.worldhandler.gui.button.GuiButtonTab;
@@ -628,6 +629,25 @@ public class GuiWorldHandler extends Container
return super.mouseClicked(mouseX, mouseY, keyCode); return super.mouseClicked(mouseX, mouseY, keyCode);
} }
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers)
{
boolean focused = this.getFocused() != null;
if(focused && this.getFocused() instanceof Widget)
{
focused = ((Widget) this.getFocused()).isFocused();
}
if(!focused && KeyHandler.isPressed(KeyHandler.KEY_WORLD_HANDLER, keyCode))
{
this.onClose();
return true;
}
return super.keyPressed(keyCode, scanCode, modifiers);
}
@Override @Override
public void onClose() public void onClose()
{ {