diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index abf0a84a8..c0fe11173 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -395,9 +395,9 @@ public class EventHooks { WrapperNpcAPI.EVENT_BUS.post(event); } - public static void onPlayerKeyPressed(EntityPlayerMP player, int button, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed, boolean buttonDown, int[] heldKeys) { + public static void onPlayerKeyPressed(EntityPlayerMP player, int button, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed, boolean repeatKey, boolean buttonDown, int[] heldKeys) { PlayerDataScript handler = ScriptController.Instance.playerScripts; - KeyPressedEvent event = new KeyPressedEvent((ScriptPlayer)ScriptController.Instance.getScriptForEntity(player), button, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed, buttonDown, heldKeys); + KeyPressedEvent event = new KeyPressedEvent((ScriptPlayer)ScriptController.Instance.getScriptForEntity(player), button, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed, repeatKey, buttonDown, heldKeys); handler.callScript(EnumScriptType.KEY_PRESSED, event); WrapperNpcAPI.EVENT_BUS.post(event); } diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 963a9f94c..5c4787165 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -69,6 +69,7 @@ public class PacketHandlerPlayer{ boolean isShiftPressed = buffer.readBoolean(); boolean isAltPressed = buffer.readBoolean(); boolean isMetaPressed = buffer.readBoolean(); + boolean repeatKey = buffer.readBoolean(); boolean buttonDown = buffer.readBoolean(); String ints = Server.readString(buffer); @@ -88,7 +89,7 @@ public class PacketHandlerPlayer{ keysDown = new int[0]; } - EventHooks.onPlayerKeyPressed(player, button, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, buttonDown, keysDown); + EventHooks.onPlayerKeyPressed(player, button, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, repeatKey, buttonDown, keysDown); } else if(type == EnumPlayerPacket.MouseClicked) { if(ScriptController.Instance.languages.isEmpty()) { diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 299afc566..c559579d1 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -68,19 +68,20 @@ public class ClientTickHandler{ boolean isShiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); boolean isAltPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); boolean isMetaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); + boolean repeatKey = Keyboard.isRepeatEvent(); boolean keyDown = Keyboard.isKeyDown(key); StringBuilder keysDownString = new StringBuilder(); - for(int i = 0; i < Keyboard.getKeyCount(); i++){//Creates a comma separated string of the integer IDs of held keys - if(Keyboard.isKeyDown(i)){ + for (int i = 0; i < Keyboard.getKeyCount(); i++) {//Creates a comma separated string of the integer IDs of held keys + if (Keyboard.isKeyDown(i)) { keysDownString.append(Integer.valueOf(i)).append(","); } } - if(keysDownString.length() > 0){//Removes last comma for later parsing - keysDownString.deleteCharAt(keysDownString.length()-1); + if (keysDownString.length() > 0) {//Removes last comma for later parsing + keysDownString.deleteCharAt(keysDownString.length() - 1); } - NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, new Object[]{Integer.valueOf(key), Boolean.valueOf(isCtrlPressed), Boolean.valueOf(isShiftPressed), Boolean.valueOf(isAltPressed), Boolean.valueOf(isMetaPressed), Boolean.valueOf(keyDown), keysDownString.toString()}); + NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, new Object[]{Integer.valueOf(key), Boolean.valueOf(isCtrlPressed), Boolean.valueOf(isShiftPressed), Boolean.valueOf(isAltPressed), Boolean.valueOf(isMetaPressed), Boolean.valueOf(repeatKey), Boolean.valueOf(keyDown), keysDownString.toString()}); } private boolean isIgnoredKey(int key) { diff --git a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java index 306bd81f1..36a145b2f 100644 --- a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java +++ b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java @@ -41,16 +41,18 @@ public class PlayerEvent extends CustomNPCsEvent { public final boolean isAltPressed; public final boolean isShiftPressed; public final boolean isMetaPressed; + public final boolean repeatKey; public final boolean keyDown; public final int[] keysDown; - public KeyPressedEvent(IPlayer player, int key, boolean isCtrlPressed, boolean isAltPressed, boolean isShiftPressed, boolean isMetaPressed, boolean keyDown, int[] heldKeys) { + public KeyPressedEvent(IPlayer player, int key, boolean isCtrlPressed, boolean isAltPressed, boolean isShiftPressed, boolean isMetaPressed, boolean repeatKey, boolean keyDown, int[] heldKeys) { super(player); this.key = key; this.isCtrlPressed = isCtrlPressed; this.isAltPressed = isAltPressed; this.isShiftPressed = isShiftPressed; this.isMetaPressed = isMetaPressed; + this.repeatKey = repeatKey; this.keyDown = keyDown; this.keysDown = heldKeys; }