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:
@@ -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();
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user