From 75406a80cd8202258e4bf1e7bff2afd858fed7c5 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 26 Jan 2024 22:22:01 +0100 Subject: [PATCH] [VirtualInput] Switched to new VirtualInput - Removed getters in VirtualInput and replaced them with public final variables for better readybility - Removed InputContainerView - Added isKeyDown() and willKeyBeDown() to VirtualInput --- .../com/minecrafttas/tasmod/TASmodClient.java | 29 ++- .../externalGui/InputContainerView.java | 187 ------------------ .../com/minecrafttas/tasmod/gui/InfoHud.java | 54 ++--- .../tasmod/mixin/MixinEntityRenderer.java | 6 +- .../tasmod/mixin/MixinGuiScreen.java | 24 +-- .../tasmod/mixin/MixinMinecraft.java | 1 - .../mixin/fixes/MixinMinecraftFullscreen.java | 4 +- .../mixin/playbackhooks/MixinGuiChat.java | 2 +- ...uiClickableScrolledSelectionListProxy.java | 2 +- .../MixinGuiContainerCreative.java | 4 +- .../mixin/playbackhooks/MixinGuiSlot.java | 6 +- .../mixin/playbackhooks/MixinMinecraft.java | 60 ++---- .../playback/PlaybackControllerClient.java | 42 ++-- .../savestates/SavestateHandlerClient.java | 2 +- .../tasmod/virtual/VirtualInput.java | 1 + .../tasmod/virtual/VirtualInput2.java | 69 ++++--- 16 files changed, 150 insertions(+), 343 deletions(-) delete mode 100644 src/main/java/com/minecrafttas/tasmod/externalGui/InputContainerView.java diff --git a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java index 1e1e8eee..0b87ef7b 100644 --- a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java +++ b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java @@ -1,5 +1,15 @@ package com.minecrafttas.tasmod; +import static com.minecrafttas.tasmod.TASmod.LOGGER; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.logging.log4j.Level; +import org.lwjgl.input.Keyboard; + import com.minecrafttas.mctcommon.Configuration; import com.minecrafttas.mctcommon.Configuration.ConfigOptions; import com.minecrafttas.mctcommon.KeybindManager; @@ -12,7 +22,6 @@ import com.minecrafttas.mctcommon.server.Client; import com.minecrafttas.mctcommon.server.PacketHandlerRegistry; import com.minecrafttas.mctcommon.server.Server; -import com.minecrafttas.tasmod.externalGui.InputContainerView; import com.minecrafttas.tasmod.gui.InfoHud; import com.minecrafttas.tasmod.handlers.InterpolationHandler; import com.minecrafttas.tasmod.handlers.LoadingScreenHandler; @@ -27,9 +36,9 @@ import com.minecrafttas.tasmod.util.LoggerMarkers; import com.minecrafttas.tasmod.util.Scheduler; import com.minecrafttas.tasmod.util.ShieldDownloader; -import com.minecrafttas.tasmod.virtual.VirtualInput; import com.minecrafttas.tasmod.virtual.VirtualInput2; import com.minecrafttas.tasmod.virtual.VirtualKeybindings; + import net.fabricmc.api.ClientModInitializer; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -39,20 +48,11 @@ import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.settings.KeyBinding; import net.minecraft.server.MinecraftServer; -import org.apache.logging.log4j.Level; -import org.lwjgl.input.Keyboard; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import static com.minecrafttas.tasmod.TASmod.LOGGER; public class TASmodClient implements ClientModInitializer, EventClientInit, EventPlayerJoinedClientSide, EventOpenGui{ - public static VirtualInput virtual; + public static VirtualInput2 virtual; public static TickSyncClient ticksyncClient; @@ -126,7 +126,7 @@ public void onInitializeClient() { } else { config.reset(ConfigOptions.FileToOpen); } - virtual=new VirtualInput(fileOnStart); +// virtual=new VirtualInput2(fileOnStart); TODO Move fileOnStart to PlaybackController // Initialize InfoHud hud = new InfoHud(); @@ -147,7 +147,7 @@ protected boolean isKeyDown(KeyBinding i) { // Register event listeners EventListenerRegistry.register(this); - EventListenerRegistry.register(virtual); +// EventListenerRegistry.register(virtual); TODO Remove if unnecessary EventListenerRegistry.register(hud); EventListenerRegistry.register(shieldDownloader); EventListenerRegistry.register(loadingScreenHandler); @@ -199,7 +199,6 @@ public void onClientInit(Minecraft mc) { } }))); blockedKeybindings.add(keybindManager.registerKeybind(new Keybind("Open InfoGui Editor", "TASmod", Keyboard.KEY_F6, () -> Minecraft.getMinecraft().displayGuiScreen(TASmodClient.hud)))); - blockedKeybindings.add(keybindManager.registerKeybind(new Keybind("Buffer View", "TASmod", Keyboard.KEY_NUMPAD0, () -> InputContainerView.startBufferView()))); blockedKeybindings.add(keybindManager.registerKeybind(new Keybind("Various Testing", "TASmod", Keyboard.KEY_F12, () -> { TASmodClient.client.disconnect(); }))); diff --git a/src/main/java/com/minecrafttas/tasmod/externalGui/InputContainerView.java b/src/main/java/com/minecrafttas/tasmod/externalGui/InputContainerView.java deleted file mode 100644 index c5677b09..00000000 --- a/src/main/java/com/minecrafttas/tasmod/externalGui/InputContainerView.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.minecrafttas.tasmod.externalGui; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.EventQueue; -import java.awt.Font; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.util.Vector; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.UIManager; -import javax.swing.border.EmptyBorder; -import javax.swing.table.DefaultTableModel; - -import com.minecrafttas.mctcommon.events.EventClient.EventClientTick; -import com.minecrafttas.tasmod.TASmodClient; -import com.minecrafttas.tasmod.playback.PlaybackControllerClient; -import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TickInputContainer; -import com.minecrafttas.tasmod.virtual.VirtualInput; - -import net.minecraft.client.Minecraft; - -@Deprecated -public class InputContainerView extends JFrame implements EventClientTick{ - - private static final long serialVersionUID = -1823965270972132025L; - private JPanel contentPane; - private static JTable table; - private static DefaultTableModel model; - private static int prevCount = 0; - - /** - * Launch the application. - */ - public static void main(String[] args) { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - InputContainerView frame = new InputContainerView(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - - /** - * Create the frame. - */ - public InputContainerView() { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (Exception e) { - } - setIconImage(Toolkit.getDefaultToolkit() - .getImage(InputContainerView.class.getResource("/assets/tasmod/textures/potion2.png"))); - setBackground(Color.WHITE); - setTitle("InputContainer View"); - setFont(new Font("Arial", Font.PLAIN, 12)); - setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - setBounds(100, 100, 673, 448); - contentPane = new JPanel(); - contentPane.setBackground(Color.WHITE); - contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); - contentPane.setLayout(new BorderLayout(0, 0)); - setContentPane(contentPane); - - JScrollPane scrollPane = new JScrollPane(); - contentPane.add(scrollPane, BorderLayout.CENTER); - - Vector title = new Vector(); - title.add("Ticks"); - title.add("Keyboard"); - title.add("Mouse"); - title.add("CameraX"); - title.add("CameraY"); - - model = new DefaultTableModel(title, 0); - - table = new JTable(model); - table.getColumnModel().getColumn(0).setPreferredWidth(5); - table.setBackground(Color.DARK_GRAY); - table.setForeground(Color.LIGHT_GRAY); - scrollPane.setViewportView(table); - - contentPane.add(table.getTableHeader(), BorderLayout.PAGE_START); - - } - -// private static void addEmptyRow() { -// addRow(0, "", "", 0F, 0F); -// } - - private static void addRow(int ticks, String keyboard, String mouse, float cameraX, float cameraY) { - Vector row = new Vector(5); - row.add(ticks); - row.add(keyboard); - row.add(mouse); - row.add(cameraX); - row.add(cameraY); - model.addRow(row); - } - - private static void selectRow(int ticks) { - if (ticks >= table.getRowCount()) { - ticks = table.getRowCount() - 1; - } - table.setRowSelectionInterval(ticks, ticks); - table.scrollRectToVisible(new Rectangle(table.getCellRect(ticks, 0, true))); - } - - public static void update(VirtualInput input) { - if (model == null) { - return; - } - PlaybackControllerClient controller = TASmodClient.controller; - if (controller == null || controller.isEmpty()) { - return; - } - if (prevCount != controller.size()) { - prevCount = controller.size(); - model.getDataVector().clear(); - - for (int i = 0; i < controller.size(); i++) { - TickInputContainer tickContainer = controller.get(i); - addRow(i + 1, tickContainer.getKeyboard().toString(), tickContainer.getMouse().toString(), - tickContainer.getSubticks().getPitch(), tickContainer.getSubticks().getYaw()); - } - selectRow(controller.index()); - } - if (!controller.isNothingPlaying()) { - selectRow(controller.index()); - } - -// selectRow(container.index()+1); -// input.getAllInputEvents().forEach(inputsevents->{ -// Vector row=new Vector(4); -// row.add(inputsevents.tick); -// -// String kbs=""; -// int count=0; -// for (VirtualKeyboardEvent keyb:inputsevents.keyboardevent) { -// kbs=kbs.concat("["+count+"]{"+keyb.toString()+"} "); -// count++; -// } -// -// row.add(kbs); -// -// count=0; -// String mbe=""; -// for (VirtualMouseEvent mouseb:inputsevents.mouseEvent) { -// mbe=mbe.concat("["+count+"]{"+mouseb.toString()+"} "); -// count++; -// } -// row.add(mbe); -// -// row.add(inputsevents.subticks.toString().replace("Camera:", "")); -// model.addRow(row); -// }); - - } - - public static void startBufferView() { - EventQueue.invokeLater(new Runnable() { - - @Override - public void run() { - try { - InputContainerView frame = new InputContainerView(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - - @Override - public void onClientTick(Minecraft mc) { - update(TASmodClient.virtual); - } -} diff --git a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java index 0183348e..f948bf5b 100644 --- a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java +++ b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java @@ -343,13 +343,13 @@ public boolean checkInit() { } })); - title = "cursor"; - y += 14; - if (configuration.getProperty(title + "_x", "err").equals("err")) setDefaults(title, y); - lists.add(new InfoLabel(title, Integer.parseInt(configuration.getProperty(title + "_x")), Integer.parseInt(configuration.getProperty(title + "_y")), Boolean.parseBoolean(configuration.getProperty(title + "_visible")), Boolean.parseBoolean(configuration.getProperty(title + "_rect")), () -> { - if (Minecraft.getMinecraft().currentScreen == this) return "Mouse Position"; - return String.format("Mouse Cursor: " + TASmodClient.virtual.getNextMouse().getPath().get(0).cursorX + " " + TASmodClient.virtual.getNextMouse().getPath().get(0).cursorY); - })); +// title = "cursor"; +// y += 14; +// if (configuration.getProperty(title + "_x", "err").equals("err")) setDefaults(title, y); +// lists.add(new InfoLabel(title, Integer.parseInt(configuration.getProperty(title + "_x")), Integer.parseInt(configuration.getProperty(title + "_y")), Boolean.parseBoolean(configuration.getProperty(title + "_visible")), Boolean.parseBoolean(configuration.getProperty(title + "_rect")), () -> { +// if (Minecraft.getMinecraft().currentScreen == this) return "Mouse Position"; +// return String.format("Mouse Cursor: " + TASmodClient.virtual.getNextMouse().getPath().get(0).cursorX + " " + TASmodClient.virtual.getNextMouse().getPath().get(0).cursorY); +// })); TODO Remove? title = "trajectories"; y += 14; @@ -490,26 +490,26 @@ private void drawRectWithText(String text, int x, int y, boolean rect) { } private String keystrokes() { - if (Display.isActive()) { - String out1 = ""+ChatFormatting.WHITE; - for (String mouse : TASmodClient.virtual.getCurrentMousePresses()) { - out1 = out1.concat(mouse + " "); - } - out1=out1.concat(""+ChatFormatting.GREEN); - for (String mouse : TASmodClient.virtual.getNextMousePresses()) { - out1 = out1.concat(mouse + " "); - } - - String out2 = ""+ChatFormatting.WHITE; - for (String key : TASmodClient.virtual.getCurrentKeyboardPresses()) { - out2 = out2.concat(key + " "); - } - out2=out2.concat(""+ChatFormatting.GREEN); - for (String key : TASmodClient.virtual.getNextKeyboardPresses()) { - out2 = out2.concat(key + " "); - } - return out1+out2; - } +// if (Display.isActive()) { //TODO Update +// String out1 = ""+ChatFormatting.WHITE; +// for (String mouse : TASmodClient.virtual.getCurrentMousePresses()) { +// out1 = out1.concat(mouse + " "); +// } +// out1=out1.concat(""+ChatFormatting.GREEN); +// for (String mouse : TASmodClient.virtual.getNextMousePresses()) { +// out1 = out1.concat(mouse + " "); +// } +// +// String out2 = ""+ChatFormatting.WHITE; +// for (String key : TASmodClient.virtual.getCurrentKeyboardPresses()) { +// out2 = out2.concat(key + " "); +// } +// out2=out2.concat(""+ChatFormatting.GREEN); +// for (String key : TASmodClient.virtual.getNextKeyboardPresses()) { +// out2 = out2.concat(key + " "); +// } +// return out1+out2; +// } return ""; } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/MixinEntityRenderer.java b/src/main/java/com/minecrafttas/tasmod/mixin/MixinEntityRenderer.java index fa7c83a5..6e93746c 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/MixinEntityRenderer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/MixinEntityRenderer.java @@ -116,9 +116,9 @@ public void runSubtick(float partialTicks) { smoothCamPitch = 0.0F; mc.player.turn(f2, f3 * (float) i); } - TASmodClient.virtual.updateSubtick(mc.player.rotationPitch, mc.player.rotationYaw); - mc.player.rotationPitch = TASmodClient.virtual.getSubtickPitch(); - mc.player.rotationYaw = TASmodClient.virtual.getSubtickYaw(); + TASmodClient.virtual.CAMERA_ANGLE.updateCameraAngle(mc.player.rotationPitch, mc.player.rotationYaw); + mc.player.rotationPitch = TASmodClient.virtual.CAMERA_ANGLE.getPitch(); + mc.player.rotationYaw = TASmodClient.virtual.CAMERA_ANGLE.getYaw(); InterpolationHandler.rotationPitch = mc.player.rotationPitch; InterpolationHandler.rotationYaw = 180f + mc.player.rotationYaw; } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/MixinGuiScreen.java b/src/main/java/com/minecrafttas/tasmod/mixin/MixinGuiScreen.java index b322f41d..b80c5b0e 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/MixinGuiScreen.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/MixinGuiScreen.java @@ -22,56 +22,56 @@ public class MixinGuiScreen implements GuiScreenDuck { @Inject(method = "handleInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;isCreated()Z", shift = Shift.AFTER, remap = false)) public void injectAfterKeyboardCreated(CallbackInfo ci) { - TASmodClient.virtual.updateCurrentKeyboard(); + TASmodClient.virtual.KEYBOARD.nextKeyboardTick(); } // ===================================================================================================================================== @Redirect(method = "handleInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;next()Z", remap = false)) public boolean redirectKeyboardNext() { - return TASmodClient.virtual.nextKeyboardEvent(); + return TASmodClient.virtual.KEYBOARD.nextKeyboardSubtick(); } // ===================================================================================================================================== @Redirect(method = "handleKeyboardInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventCharacter()C", remap = false)) public char redirectGetEventCharacter() { - return TASmodClient.virtual.getEventKeyboardCharacter(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardCharacter(); } // ===================================================================================================================================== @Redirect(method = "handleKeyboardInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKey()I", remap = false)) public int redirectGetEventKey() { - return TASmodClient.virtual.getEventKeyboardKey(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardKey(); } // ===================================================================================================================================== @Redirect(method = "handleKeyboardInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKeyState()Z", remap = false)) public boolean redirectGetEventState() { - return TASmodClient.virtual.getEventKeyboardState(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardState(); } // ===================================================================================================================================== @Inject(method = "handleInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;isCreated()Z", shift = Shift.AFTER, remap = false)) public void injectAfterMouseCreated(CallbackInfo ci) { - TASmodClient.virtual.updateCurrentMouseEvents(); + TASmodClient.virtual.MOUSE.nextMouseTick(); } // ===================================================================================================================================== @Redirect(method = "handleInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;next()Z", remap = false)) public boolean redirectMouseNext() { - return TASmodClient.virtual.nextMouseEvent(); + return TASmodClient.virtual.MOUSE.nextMouseSubtick(); } // ===================================================================================================================================== @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButton()I", remap = false)) public int redirectGetEventButton() { - return TASmodClient.virtual.getEventMouseKey() + 100; + return TASmodClient.virtual.MOUSE.getEventMouseKey() + 100; } // ===================================================================================================================================== @@ -79,23 +79,23 @@ public int redirectGetEventButton() { @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButtonState()Z", remap = false)) public boolean redirectGetEventButtonState() { if (TASmodClient.controller.isPlayingback()) { - Mouse.setCursorPosition(uncalcX(TASmodClient.virtual.getEventCursorX()), uncalcY(TASmodClient.virtual.getEventCursorY())); + Mouse.setCursorPosition(uncalcX(TASmodClient.virtual.MOUSE.getEventCursorX()), uncalcY(TASmodClient.virtual.MOUSE.getEventCursorY())); } - return TASmodClient.virtual.getEventMouseState(); + return TASmodClient.virtual.MOUSE.getEventMouseState(); } // ===================================================================================================================================== @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventX()I", remap = false)) public int redirectGetEventX() { - return uncalcX(TASmodClient.virtual.getEventCursorX()); + return uncalcX(TASmodClient.virtual.MOUSE.getEventCursorX()); } // ===================================================================================================================================== @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventY()I", remap = false)) public int redirectGetEventY() { - return uncalcY(TASmodClient.virtual.getEventCursorY()); + return uncalcY(TASmodClient.virtual.MOUSE.getEventCursorY()); } // ===================================================================================================================================== diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java b/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java index c61cb858..643deb14 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java @@ -48,7 +48,6 @@ public void injectRunGameLoop(CallbackInfo ci) { @Redirect(method = "runGameLoop", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;runTick()V")) public void redirectRunTick(Minecraft mc) { - TASmodClient.virtual.updateContainer(); if (TASmodClient.tickratechanger.ticksPerSecond != 0) { ((SubtickDuck) this.entityRenderer).runSubtick(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks); } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/fixes/MixinMinecraftFullscreen.java b/src/main/java/com/minecrafttas/tasmod/mixin/fixes/MixinMinecraftFullscreen.java index 0e23b416..5a1104c4 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/fixes/MixinMinecraftFullscreen.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/fixes/MixinMinecraftFullscreen.java @@ -15,11 +15,11 @@ public class MixinMinecraftFullscreen { @Shadow - public GameSettings gameSettings; + private GameSettings gameSettings; @Inject(method = "toggleFullscreen", at = @At("RETURN")) public void inject_toggleFullscreen(CallbackInfo ci) { int keyF11=this.gameSettings.keyBindFullscreen.getKeyCode(); - TASmodClient.virtual.getNextKeyboard().get(keyF11).setPressed(false); + TASmodClient.virtual.KEYBOARD.updateNextKeyboard(keyF11, false, Character.MIN_VALUE); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiChat.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiChat.java index 3d26d3e2..2df94994 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiChat.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiChat.java @@ -12,6 +12,6 @@ public class MixinGuiChat { @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I", remap = false)) public int redirectHandleMouseInput4() { - return TASmodClient.virtual.getEventMouseScrollWheel(); + return TASmodClient.virtual.MOUSE.getEventMouseScrollWheel(); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiClickableScrolledSelectionListProxy.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiClickableScrolledSelectionListProxy.java index 3dedb2bc..fb3f84ec 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiClickableScrolledSelectionListProxy.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiClickableScrolledSelectionListProxy.java @@ -12,6 +12,6 @@ public class MixinGuiClickableScrolledSelectionListProxy { @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButtonState()Z", ordinal = 0, remap = false)) public boolean redirectHandleMouseInput() { - return TASmodClient.virtual.getEventMouseState(); + return TASmodClient.virtual.MOUSE.getEventMouseState(); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainerCreative.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainerCreative.java index 4e073014..bad22303 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainerCreative.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainerCreative.java @@ -12,11 +12,11 @@ public class MixinGuiContainerCreative { @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I", ordinal = 0, remap = false)) public int redirectHandleMouseInput() { - return TASmodClient.virtual.getEventMouseScrollWheel(); + return TASmodClient.virtual.MOUSE.getEventMouseScrollWheel(); } @Redirect(method = "drawScreen", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;isButtonDown(I)Z", ordinal = 0, remap = false)) public boolean redirectHandleMouseInput2(int i) { - return TASmodClient.virtual.isKeyDown(-100); + return TASmodClient.virtual.MOUSE.isKeyDown(-100); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiSlot.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiSlot.java index 36ad6055..3f566e6e 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiSlot.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiSlot.java @@ -12,11 +12,11 @@ public class MixinGuiSlot { @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE",target = "Lorg/lwjgl/input/Mouse;getEventButtonState()Z",ordinal = 0, remap = false)) public boolean redirectHandleMouseInput() { - return TASmodClient.virtual.getEventMouseState(); + return TASmodClient.virtual.MOUSE.getEventMouseState(); } @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE",target = "Lorg/lwjgl/input/Mouse;getEventButton()I",ordinal = 0, remap = false)) public int redirectHandleMouseInput2() { - return TASmodClient.virtual.getEventMouseKey(); + return TASmodClient.virtual.MOUSE.getEventMouseKey(); } @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE",target = "Lorg/lwjgl/input/Mouse;isButtonDown(I)Z",ordinal = 0, remap = false)) public boolean redirectHandleMouseInput3(int i) { @@ -24,6 +24,6 @@ public boolean redirectHandleMouseInput3(int i) { } @Redirect(method = "handleMouseInput", at = @At(value = "INVOKE",target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I",ordinal = 0, remap = false)) public int redirectHandleMouseInput4() { - return TASmodClient.virtual.getEventMouseScrollWheel(); + return TASmodClient.virtual.MOUSE.getEventMouseScrollWheel(); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinMinecraft.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinMinecraft.java index f3c46a63..a531fa6f 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinMinecraft.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinMinecraft.java @@ -1,7 +1,6 @@ package com.minecrafttas.tasmod.mixin.playbackhooks; import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -10,7 +9,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.minecrafttas.tasmod.TASmodClient; -import com.minecrafttas.tasmod.util.Ducks.GuiScreenDuck; import com.minecrafttas.tasmod.virtual.VirtualInput; import com.minecrafttas.tasmod.virtual.VirtualInput2; import com.minecrafttas.tasmod.virtual.VirtualKeyboardEvent; @@ -31,33 +29,7 @@ public class MixinMinecraft { */ @Inject(method = "runGameLoop", at = @At(value = "HEAD")) public void playback_injectRunGameLoop(CallbackInfo ci) { -// TASmodClient.virtual.update(currentScreen); - while (Keyboard.next()) { - TASmodClient.virtual.updateNextKeyboard( - Keyboard.getEventKey(), - Keyboard.getEventKeyState(), - Keyboard.getEventCharacter()); - } - while (Mouse.next()) { - if(this.currentScreen == null) { - TASmodClient.virtual.updateNextMouse( - Mouse.getEventButton(), - Mouse.getEventButtonState(), - Mouse.getEventDWheel(), - Mouse.getEventX(), - Mouse.getEventY(), - TASmodClient.tickratechanger.ticksPerSecond==0); - } else { - GuiScreenDuck screen = (GuiScreenDuck) currentScreen; - TASmodClient.virtual.updateNextMouse( - Mouse.getEventButton(), - Mouse.getEventButtonState(), - Mouse.getEventDWheel(), - screen.calcX(Mouse.getEventX()), - screen.calcY(Mouse.getEventY()), - TASmodClient.tickratechanger.ticksPerSecond==0); //TODO Remove and put into VirtualInput itself - } - } + TASmodClient.virtual.update(currentScreen); } /** @@ -66,7 +38,7 @@ public void playback_injectRunGameLoop(CallbackInfo ci) { */ @Inject(method = "runTickKeyboard", at = @At(value = "HEAD")) public void playback_injectRunTickKeyboard(CallbackInfo ci) { - TASmodClient.virtual.updateCurrentKeyboard(); + TASmodClient.virtual.KEYBOARD.nextKeyboardTick(); } /** @@ -76,7 +48,7 @@ public void playback_injectRunTickKeyboard(CallbackInfo ci) { */ @Redirect(method = "runTickKeyboard", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;next()Z", remap = false)) public boolean playback_redirectKeyboardNext() { - return TASmodClient.virtual.nextKeyboardEvent(); + return TASmodClient.virtual.KEYBOARD.nextKeyboardSubtick(); } /** @@ -85,7 +57,7 @@ public boolean playback_redirectKeyboardNext() { */ @Redirect(method = "runTickKeyboard", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKey()I", remap = false)) public int playback_redirectKeyboardGetEventKey() { - return TASmodClient.virtual.getEventKeyboardKey(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardKey(); } /** @@ -94,7 +66,7 @@ public int playback_redirectKeyboardGetEventKey() { */ @Redirect(method = "runTickKeyboard", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKeyState()Z", remap = false)) public boolean playback_redirectGetEventState() { - return TASmodClient.virtual.getEventKeyboardState(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardState(); } /** @@ -103,7 +75,7 @@ public boolean playback_redirectGetEventState() { */ @Redirect(method = "runTickKeyboard", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventCharacter()C", remap = false)) public char playback_redirectKeyboardGetEventCharacter() { - return TASmodClient.virtual.getEventKeyboardCharacter(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardCharacter(); } /** @@ -112,34 +84,34 @@ public char playback_redirectKeyboardGetEventCharacter() { */ @Redirect(method = "runTickKeyboard", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;isKeyDown(I)Z", remap = false)) public boolean playback_redirectIsKeyDown(int keyCode) { - return TASmodClient.virtual.isKeyDown(keyCode); + return TASmodClient.virtual.KEYBOARD.isKeyDown(keyCode); } @Redirect(method = "dispatchKeypresses", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKey()I", remap = false)) public int playback_redirectGetEventKeyDPK() { - return TASmodClient.virtual.getEventKeyboardKey(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardKey(); } @Redirect(method = "dispatchKeypresses", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventKeyState()Z", remap = false)) public boolean playback_redirectGetEventKeyStateDPK() { - return TASmodClient.virtual.getEventKeyboardState(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardState(); } @Redirect(method = "dispatchKeypresses", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;getEventCharacter()C", remap = false)) public char playback_redirectGetEventCharacterDPK() { - return TASmodClient.virtual.getEventKeyboardCharacter(); + return TASmodClient.virtual.KEYBOARD.getEventKeyboardCharacter(); } // ============================ Mouse @Inject(method = "runTickMouse", at = @At(value = "HEAD")) public void playback_injectRunTickMouse(CallbackInfo ci) { - TASmodClient.virtual.updateCurrentMouseEvents(); + TASmodClient.virtual.MOUSE.nextMouseTick(); } @Redirect(method = "runTickMouse", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;next()Z", remap = false)) public boolean playback_redirectMouseNext() { - return TASmodClient.virtual.nextMouseEvent(); + return TASmodClient.virtual.MOUSE.nextMouseSubtick(); } @Redirect(method = "runTickMouse", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButton()I", remap = false)) @@ -148,19 +120,17 @@ public int playback_redirectMouseGetEventButton() { // if(!VirtualKeybindings.isKeyCodeAlwaysBlocked(ClientProxy.virtual.getEventMouseKey()-100)) { // TASmod.ktrngHandler.nextPlayerInput(); // Advance ktrng seed on player input // } - return TASmodClient.virtual.getEventMouseKey() + 100; + return TASmodClient.virtual.MOUSE.getEventMouseKey() + 100; } @Redirect(method = "runTickMouse", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButtonState()Z", remap = false)) public boolean playback_redirectGetEventButtonState() { - return TASmodClient.virtual.getEventMouseState(); + return TASmodClient.virtual.MOUSE.getEventMouseState(); } @Redirect(method = "runTickMouse", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I", remap = false)) public int playback_redirectGetEventDWheel() { - return TASmodClient.virtual.getEventMouseScrollWheel(); + return TASmodClient.virtual.MOUSE.getEventMouseScrollWheel(); } - // ============================ Camera Angle - } diff --git a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java index cb626bb0..c3a9e115 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java @@ -232,7 +232,7 @@ public String setTASStateClient(TASstate stateIn, boolean verbose) { return verbose ? TextFormatting.GREEN + "Pausing a recording" : ""; case NONE: LOGGER.debug(LoggerMarkers.Playback, "Stopping a recording"); - TASmodClient.virtual.unpressEverything(); + TASmodClient.virtual.unpress(); state = TASstate.NONE; return verbose ? TextFormatting.GREEN + "Stopping the recording" : ""; } @@ -246,12 +246,12 @@ public String setTASStateClient(TASstate stateIn, boolean verbose) { LOGGER.debug(LoggerMarkers.Playback, "Pausing a playback"); state = TASstate.PAUSED; tempPause = TASstate.PLAYBACK; - TASmodClient.virtual.unpressEverything(); + TASmodClient.virtual.unpress(); return verbose ? TextFormatting.GREEN + "Pausing a playback" : ""; case NONE: LOGGER.debug(LoggerMarkers.Playback, "Stopping a playback"); Minecraft.getMinecraft().gameSettings.chatLinks = true; - TASmodClient.virtual.unpressEverything(); + TASmodClient.virtual.unpress(); state = TASstate.NONE; return verbose ? TextFormatting.GREEN + "Stopping the playback" : ""; } @@ -847,15 +847,15 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws case PLAYBACK_SAVE: name = TASmodBufferBuilder.readString(buf); - try { - TASmodClient.virtual.saveInputs(name); - } catch (IOException e) { - if (mc.world != null) - mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + e.getMessage())); - else - e.printStackTrace(); - return; - } +// try { +// TASmodClient.virtual.saveInputs(name); TODO Move to PlaybackController +// } catch (IOException e) { +// if (mc.world != null) +// mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + e.getMessage())); +// else +// e.printStackTrace(); +// return; +// } if (mc.world != null) mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.GREEN + "Saved inputs to " + name + ".mctas")); else @@ -864,15 +864,15 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws case PLAYBACK_LOAD: name = TASmodBufferBuilder.readString(buf); - try { - TASmodClient.virtual.loadInputs(name); - } catch (IOException e) { - if (mc.world != null) - mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + e.getMessage())); - else - e.printStackTrace(); - return; - } +// try { +// TASmodClient.virtual.loadInputs(name); TODO Move to PlaybackController +// } catch (IOException e) { +// if (mc.world != null) +// mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + e.getMessage())); +// else +// e.printStackTrace(); +// return; +// } if (mc.world != null) mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.GREEN + "Loaded inputs from " + name + ".mctas")); else diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java index 8ac8559a..d5d82e37 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java @@ -150,7 +150,7 @@ public static void loadstate(String nameOfSavestate) throws IOException { if (!container.isNothingPlaying()) { // If the file exists and the container is recording or playing, load the // clientSavestate if (targetfile.exists()) { - TASmodClient.virtual.loadClientSavestate(TASmodClient.serialiser.fromEntireFileV1(targetfile)); +// TASmodClient.virtual.loadClientSavestate(TASmodClient.serialiser.fromEntireFileV1(targetfile)); TODO Move to PlaybackController } else { TASmodClient.controller.setTASStateClient(TASstate.NONE, false); Minecraft.getMinecraft().player.sendMessage(new TextComponentString(ChatFormatting.YELLOW + "Inputs could not be loaded for this savestate,")); diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput.java index 17c3266d..4c108f4f 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput.java @@ -83,6 +83,7 @@ * @author Scribble * */ +@Deprecated public class VirtualInput implements EventPlayerJoinedClientSide{ // ===========================Keyboard================================= diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java index dd2b5655..96feaaac 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput2.java @@ -19,9 +19,9 @@ *
*/ public class VirtualInput2 { - private final VirtualKeyboardInput keyboardInput; - private final VirtualMouseInput mouseInput; - private final VirtualCameraAngleInput cameraAngleInput; + public final VirtualKeyboardInput KEYBOARD; + public final VirtualMouseInput MOUSE; + public final VirtualCameraAngleInput CAMERA_ANGLE; public VirtualInput2() { this(new VirtualKeyboard2(), new VirtualMouse2(), new VirtualCameraAngle2()); @@ -35,13 +35,13 @@ public VirtualInput2() { * @param preloadedCamera */ public VirtualInput2(VirtualKeyboard2 preloadedKeyboard, VirtualMouse2 preloadedMouse, VirtualCameraAngle2 preloadedCamera) { - keyboardInput = new VirtualKeyboardInput(preloadedKeyboard); - mouseInput = new VirtualMouseInput(preloadedMouse); - cameraAngleInput = new VirtualCameraAngleInput(preloadedCamera); + KEYBOARD = new VirtualKeyboardInput(preloadedKeyboard); + MOUSE = new VirtualMouseInput(preloadedMouse); + CAMERA_ANGLE = new VirtualCameraAngleInput(preloadedCamera); } /** - * Updates the logic for {@link #keyboardInput}, {@link #mouseInput} and + * Updates the logic for {@link #KEYBOARD}, {@link #MOUSE} and * {@link #cameraAngle}
* Runs every frame * @@ -52,30 +52,39 @@ public VirtualInput2(VirtualKeyboard2 preloadedKeyboard, VirtualMouse2 preloaded */ public void update(GuiScreen currentScreen) { while (Keyboard.next()) { - keyboardInput.updateNextKeyboard(Keyboard.getEventKey(), Keyboard.getEventKeyState(), Keyboard.getEventCharacter()); + KEYBOARD.updateNextKeyboard(Keyboard.getEventKey(), Keyboard.getEventKeyState(), Keyboard.getEventCharacter()); } while (Mouse.next()) { if (currentScreen == null) { - mouseInput.updateNextMouse(Mouse.getEventButton(), Mouse.getEventButtonState(), Mouse.getEventDWheel(), null, null); + MOUSE.updateNextMouse(Mouse.getEventButton(), Mouse.getEventButtonState(), Mouse.getEventDWheel(), null, null); } else { Ducks.GuiScreenDuck screen = (Ducks.GuiScreenDuck) currentScreen; - mouseInput.updateNextMouse(Mouse.getEventButton(), Mouse.getEventButtonState(), Mouse.getEventDWheel(), screen.calcX(Mouse.getEventX()), screen.calcY(Mouse.getEventY())); + MOUSE.updateNextMouse(Mouse.getEventButton(), Mouse.getEventButtonState(), Mouse.getEventDWheel(), screen.calcX(Mouse.getEventX()), screen.calcY(Mouse.getEventY())); } } } - public VirtualKeyboardInput getKeyboardInput() { - return keyboardInput; + public boolean isKeyDown(int keycode) { + if(keycode >= 0) { + return KEYBOARD.isKeyDown(keycode); + } else { + return MOUSE.isKeyDown(keycode); + } } - - public VirtualMouseInput getMouseInput() { - return mouseInput; + + public boolean willKeyBeDown(int keycode) { + if(keycode >= 0) { + return KEYBOARD.willKeyBeDown(keycode); + } else { + return MOUSE.willKeyBeDown(keycode); + } } - - public VirtualCameraAngleInput getCameraAngle() { - return cameraAngleInput; + + public void unpress() { + KEYBOARD.nextKeyboard.clear(); + MOUSE.nextMouse.clear(); } - + /** * Subclass of {@link VirtualInput} handling keyboard logic.
*
@@ -110,7 +119,7 @@ public VirtualCameraAngleInput getCameraAngle() { * * */ - private static class VirtualKeyboardInput { + public class VirtualKeyboardInput { /** * The keyboard "state" that is currently recognized by the game,
* meaning it is a direct copy of the vanilla keybindings. Updated every @@ -198,9 +207,17 @@ public boolean getEventKeyboardState() { public char getEventKeyboardCharacter() { return currentKeyboardEvent.getCharacter(); } + + public boolean isKeyDown(int keycode) { + return currentKeyboard.isKeyDown(keycode); + } + + public boolean willKeyBeDown(int keycode) { + return nextKeyboard.isKeyDown(keycode); + } } - private static class VirtualMouseInput { + public class VirtualMouseInput { private final VirtualMouse2 currentMouse; private final VirtualMouse2 nextMouse = new VirtualMouse2(); private final Queue mouseEventQueue = new ConcurrentLinkedQueue<>(); @@ -247,9 +264,17 @@ public int getEventCursorY() { return PointerNormalizer.getCoordsY(currentMouseEvent.getMouseY()); } + public boolean isKeyDown(int keycode) { + return currentMouse.isKeyDown(keycode); + } + + public boolean willKeyBeDown(int keycode) { + return nextMouse.isKeyDown(keycode); + } + } - private static class VirtualCameraAngleInput { + public class VirtualCameraAngleInput { private VirtualCameraAngle2 cameraAngle;