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.OnlyIn;
import net.minecraftforge.client.event.InputEvent.KeyInputEvent;
import net.minecraftforge.client.settings.KeyModifier;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.registry.ClientRegistry;
@@ -27,21 +28,31 @@ public class KeyHandler
{
if(Minecraft.getInstance() != null && Minecraft.getInstance().currentScreen == null)
{
if(KeyHandler.KEY_WORLD_HANDLER.isPressed())
if(KeyHandler.isPressed(KeyHandler.KEY_WORLD_HANDLER))
{
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());
}
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());
}
}
}
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()
{
boolean isRegistered = KeyHandler.arePosKeysRegistered();

View File

@@ -15,6 +15,7 @@ import exopandora.worldhandler.Main;
import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.impl.BuilderWorldHandler;
import exopandora.worldhandler.config.Config;
import exopandora.worldhandler.event.KeyHandler;
import exopandora.worldhandler.gui.button.EnumIcon;
import exopandora.worldhandler.gui.button.GuiButtonIcon;
import exopandora.worldhandler.gui.button.GuiButtonTab;
@@ -628,6 +629,25 @@ public class GuiWorldHandler extends Container
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
public void onClose()
{