83 lines
1.9 KiB
Java
83 lines
1.9 KiB
Java
package wayoftime.bloodmagic.client.key;
|
|
|
|
import java.util.BitSet;
|
|
|
|
import org.lwjgl.glfw.GLFW;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.settings.KeyBinding;
|
|
import net.minecraft.client.util.InputMappings;
|
|
import net.minecraftforge.client.event.InputEvent;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
|
|
public class BloodMagicKeyHandler
|
|
{
|
|
|
|
private final BitSet keyDown;
|
|
|
|
private final BitSet repeatings;
|
|
|
|
public BloodMagicKeyHandler()
|
|
{
|
|
this.keyDown = new BitSet();
|
|
this.repeatings = new BitSet();
|
|
MinecraftForge.EVENT_BUS.addListener(this::keyTick);
|
|
}
|
|
|
|
public static boolean isKeyDown(KeyBinding keyBinding)
|
|
{
|
|
InputMappings.Input key = keyBinding.getKey();
|
|
int keyCode = key.getKeyCode();
|
|
if (keyCode != InputMappings.INPUT_INVALID.getKeyCode())
|
|
{
|
|
long windowHandle = Minecraft.getInstance().getMainWindow().getHandle();
|
|
try
|
|
{
|
|
if (key.getType() == InputMappings.Type.KEYSYM)
|
|
{
|
|
return InputMappings.isKeyDown(windowHandle, keyCode);
|
|
} else if (key.getType() == InputMappings.Type.MOUSE)
|
|
{
|
|
return GLFW.glfwGetMouseButton(windowHandle, keyCode) == GLFW.GLFW_PRESS;
|
|
}
|
|
} catch (Exception ignored)
|
|
{
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void keyTick(InputEvent.KeyInputEvent event)
|
|
{
|
|
// System.out.println("Pressing the key handlers");
|
|
for (int i = 0; i < KeyBindings.values().length; i++)
|
|
{
|
|
KeyBindings keyBindings = KeyBindings.values()[i];
|
|
KeyBinding keyBinding = keyBindings.getKey();
|
|
boolean state = keyBinding.isKeyDown();
|
|
boolean lastState = keyDown.get(i);
|
|
if (state != lastState || (state && repeatings.get(i)))
|
|
{
|
|
if (state)
|
|
{
|
|
keyDown(keyBindings, lastState);
|
|
} else
|
|
{
|
|
keyUp(keyBindings);
|
|
}
|
|
keyDown.set(i, state);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void keyDown(KeyBindings kb, boolean isRepeat)
|
|
{
|
|
kb.handleKeybind();
|
|
}
|
|
|
|
public void keyUp(KeyBindings kb)
|
|
{
|
|
|
|
}
|
|
}
|