diff --git a/src/main/java/com/minecrafttas/mctcommon/Configuration.java b/src/main/java/com/minecrafttas/mctcommon/Configuration.java
index 8969a073..5d461f89 100644
--- a/src/main/java/com/minecrafttas/mctcommon/Configuration.java
+++ b/src/main/java/com/minecrafttas/mctcommon/Configuration.java
@@ -10,7 +10,6 @@
import java.util.Map;
import java.util.Properties;
-import org.apache.commons.io.FileUtils;
/**
* A very simple configuration class
diff --git a/src/main/java/com/minecrafttas/mctcommon/LanguageManager.java b/src/main/java/com/minecrafttas/mctcommon/LanguageManager.java
index 0cc90dfd..da3a4bce 100644
--- a/src/main/java/com/minecrafttas/mctcommon/LanguageManager.java
+++ b/src/main/java/com/minecrafttas/mctcommon/LanguageManager.java
@@ -88,7 +88,9 @@ private static HashMap loadJson(InputStream inputStream) {
}
Gson gson = new Gson();
HashMap template = new HashMap<>();
- HashMap out = (HashMap) gson.fromJson(new InputStreamReader(inputStream), template.getClass());
+
+ @SuppressWarnings("unchecked")
+ HashMap out = (HashMap) gson.fromJson(new InputStreamReader(inputStream), template.getClass());
out.forEach((key, value) -> {
value = PATTERN.matcher(value).replaceAll("%$1s");
});
diff --git a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java
index ea92d474..279b608b 100644
--- a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java
+++ b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java
@@ -126,7 +126,7 @@ public void onInitializeClient() {
} else {
config.reset(ConfigOptions.FileToOpen);
}
- virtual=new VirtualInput2(); //TODO Move fileOnStart to PlaybackController
+ virtual=new VirtualInput2(LOGGER); //TODO Move fileOnStart to PlaybackController
// Initialize InfoHud
hud = new InfoHud();
diff --git a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java
index f948bf5b..ae30b176 100644
--- a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java
+++ b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java
@@ -11,7 +11,6 @@
import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.input.Keyboard;
-import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.GL11;
import com.minecrafttas.mctcommon.events.EventClient.EventClientTick;
diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java
index 62994df7..9ed658ac 100644
--- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java
+++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java
@@ -1,17 +1,19 @@
package com.minecrafttas.tasmod.virtual;
-import com.minecrafttas.tasmod.TASmod;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import org.apache.logging.log4j.Logger;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.input.Mouse;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
import com.minecrafttas.tasmod.mixin.playbackhooks.MixinMinecraft;
import com.minecrafttas.tasmod.util.Ducks;
import com.minecrafttas.tasmod.util.LoggerMarkers;
import com.minecrafttas.tasmod.util.PointerNormalizer;
-import net.minecraft.client.gui.GuiScreen;
-import org.lwjgl.input.Keyboard;
-import org.lwjgl.input.Mouse;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
+import net.minecraft.client.gui.GuiScreen;
/**
* Main component for redirecting inputs.
@@ -21,12 +23,13 @@
*
*/
public class VirtualInput2 {
+ private final Logger LOGGER;
public final VirtualKeyboardInput KEYBOARD;
public final VirtualMouseInput MOUSE;
public final VirtualCameraAngleInput CAMERA_ANGLE;
- public VirtualInput2() {
- this(new VirtualKeyboard2(), new VirtualMouse2(), new VirtualCameraAngle2());
+ public VirtualInput2(Logger logger) {
+ this(logger, new VirtualKeyboard2(), new VirtualMouse2(), new VirtualCameraAngle2());
}
/**
@@ -36,7 +39,8 @@ public VirtualInput2() {
* @param preloadedMouse
* @param preloadedCamera
*/
- public VirtualInput2(VirtualKeyboard2 preloadedKeyboard, VirtualMouse2 preloadedMouse, VirtualCameraAngle2 preloadedCamera) {
+ public VirtualInput2(Logger logger, VirtualKeyboard2 preloadedKeyboard, VirtualMouse2 preloadedMouse, VirtualCameraAngle2 preloadedCamera) {
+ this.LOGGER = logger;
KEYBOARD = new VirtualKeyboardInput(preloadedKeyboard);
MOUSE = new VirtualMouseInput(preloadedMouse);
CAMERA_ANGLE = new VirtualCameraAngleInput(preloadedCamera);
@@ -54,7 +58,7 @@ public VirtualInput2(VirtualKeyboard2 preloadedKeyboard, VirtualMouse2 preloaded
*/
public void update(GuiScreen currentScreen) {
while (Keyboard.next()) {
- KEYBOARD.updateNextKeyboard(Keyboard.getEventKey(), Keyboard.getEventKeyState(), Keyboard.getEventCharacter());
+ KEYBOARD.updateNextKeyboard(Keyboard.getEventKey(), Keyboard.getEventKeyState(), Keyboard.getEventCharacter(), Keyboard.areRepeatEventsEnabled());
}
while (Mouse.next()) {
if (currentScreen == null) {
@@ -194,10 +198,23 @@ public VirtualKeyboardInput(VirtualKeyboard2 preloadedKeyboard) {
* @param character The character of this event
*/
public void updateNextKeyboard(int keycode, boolean keystate, char character) {
- TASmod.LOGGER.debug(LoggerMarkers.Keyboard,"Update: {}, {}, {}, {}", keycode, keystate, character, Keyboard.areRepeatEventsEnabled());
- nextKeyboard.update(keycode, keystate, character);
+ updateNextKeyboard(keycode, keystate, character, false);
}
-
+
+ /**
+ * Updates the next keyboard
+ *
+ * @see VirtualInput2#update(GuiScreen)
+ * @param keycode The keycode of this event
+ * @param keystate The keystate of this event
+ * @param character The character of this event
+ * @param repeatEventsEnabled If repeat events are enabled
+ */
+ public void updateNextKeyboard(int keycode, boolean keystate, char character, boolean repeatEventsEnabled) {
+ LOGGER.debug(LoggerMarkers.Keyboard, "Update: {}, {}, {}, {}", keycode, keystate, character, repeatEventsEnabled);
+ nextKeyboard.update(keycode, keystate, character, repeatEventsEnabled);
+ }
+
/**
* Runs when the next keyboard tick is about to occur.
* Used to load {@link #nextKeyboard} into {@link #currentKeyboard}, creating
@@ -316,7 +333,7 @@ public VirtualMouseInput(VirtualMouse2 preloadedMouse) {
public void updateNextMouse(int keycode, boolean keystate, int scrollwheel, Integer cursorX, Integer cursorY) {
keycode-=100;
- TASmod.LOGGER.debug(LoggerMarkers.Mouse,"Update: {} ({}), {}, {}", keycode, VirtualKey2.getName(keycode), keystate, scrollwheel, cursorX, cursorY);
+ LOGGER.debug(LoggerMarkers.Mouse,"Update: {} ({}), {}, {}", keycode, VirtualKey2.getName(keycode), keystate, scrollwheel, cursorX, cursorY);
nextMouse.update(keycode, keystate, scrollwheel, cursorX, cursorY);
}
diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java
index f14f9091..c58734f2 100644
--- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java
+++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java
@@ -3,6 +3,7 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Queue;
import java.util.Set;
@@ -84,7 +85,7 @@ public class VirtualKeyboard2 extends VirtualPeripheral implem
* Creates an empty parent keyboard with all keys unpressed
*/
public VirtualKeyboard2() {
- this(new HashSet<>(), new ArrayList<>(), new ArrayList<>(), true);
+ this(new LinkedHashSet<>(), new ArrayList<>(), new ArrayList<>(), true);
}
/**
@@ -123,15 +124,19 @@ public VirtualKeyboard2(Set pressedKeys, List charList, List
* @param keystate The keystate of this key, true for pressed
* @param keycharacter The character that is associated with that key. Can change between keyboards or whenever shift is held in combination.
*/
- public void update(int keycode, boolean keystate, char keycharacter) {
+ public void update(int keycode, boolean keystate, char keycharacter, boolean repeatEventsEnabled) {
if(isParent() && !ignoreFirstUpdate()) {
addSubtick(clone());
}
charList.clear();
- addChar(keycharacter);
+ addChar(keycharacter, repeatEventsEnabled);
setPressed(keycode, keystate);
}
+ public void update(int keycode, boolean keystate, char keycharacter) {
+ update(keycode, keystate, keycharacter, false);
+ }
+
@Override
public void setPressed(int keycode, boolean keystate) {
if (keycode >= 0) { // Keyboard keys always have a keycode larger or equal than 0
@@ -149,7 +154,6 @@ public void setPressed(int keycode, boolean keystate) {
* @param reference The queue to fill. Passed in by reference.
*/
public void getDifference(VirtualKeyboard2 nextKeyboard, Queue reference) {
-
charQueue.addAll(nextKeyboard.charList);
/* Calculate symmetric difference of keycodes */
@@ -161,11 +165,11 @@ public void getDifference(VirtualKeyboard2 nextKeyboard, Queue {
+ for(int key : pressedKeys) {
if (!nextKeyboard.getPressedKeys().contains(key)) {
reference.add(new VirtualKeyboardEvent(key, false, Character.MIN_VALUE));
}
- });
+ }
/*
Calculate pressed keys
@@ -174,11 +178,13 @@ public void getDifference(VirtualKeyboard2 nextKeyboard, Queue {
+ int lastKey = 0;
+ for(int key : nextKeyboard.getPressedKeys()) {
+ lastKey = key;
if (!this.pressedKeys.contains(key)) {
reference.add(new VirtualKeyboardEvent(key, true, getOrMinChar(charQueue.poll())));
}
- });
+ }
/*
Add the rest of the characters as keyboard events.
@@ -191,7 +197,7 @@ public void getDifference(VirtualKeyboard2 nextKeyboard, Queue