From 55be33ac4454ecd024c79f349c0bd7194662acfc Mon Sep 17 00:00:00 2001 From: GiantLuigi4 <49770992+GiantLuigi4@users.noreply.github.com> Date: Thu, 8 Jun 2023 12:00:54 -0400 Subject: [PATCH] update input handling to match latest MCEF --- .../net/montoyo/wd/client/ClientProxy.java | 21 +++++++++++++++---- .../net/montoyo/wd/client/gui/GuiMinePad.java | 21 ++++++++++--------- .../net/montoyo/wd/client/gui/WDScreen.java | 2 +- .../montoyo/wd/entity/TileEntityScreen.java | 16 +++++++++++--- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/montoyo/wd/client/ClientProxy.java b/src/main/java/net/montoyo/wd/client/ClientProxy.java index 37e2277..d5acd57 100644 --- a/src/main/java/net/montoyo/wd/client/ClientProxy.java +++ b/src/main/java/net/montoyo/wd/client/ClientProxy.java @@ -9,6 +9,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3d; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.client.KeyMapping; @@ -640,14 +641,26 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer if (!tes.isLoaded()) tes.load(); } else { - double dist2 = mc.player.distanceToSqr(tes.getBlockPos().getX(), tes.getBlockPos().getY(), tes.getBlockPos().getZ()); + double dist = Double.POSITIVE_INFINITY; + for (int i = 0; i < tes.screenCount(); i++) { + TileEntityScreen.Screen scrn = tes.getScreen(i); + + Vector3d pos = new Vector3d( + scrn.side.right.x * scrn.size.x + scrn.size.y * scrn.side.up.x, + scrn.side.right.y * scrn.size.x + scrn.size.y * scrn.side.up.y, + scrn.side.right.z * scrn.size.x + scrn.size.y * scrn.side.up.z + ); + + double dist2 = mc.player.distanceToSqr(pos.x, pos.y, pos.z); + dist = Math.min(dist, dist2); + } if (tes.isLoaded()) { - if (dist2 > WebDisplays.INSTANCE.unloadDistance2) + if (dist > WebDisplays.INSTANCE.unloadDistance2) tes.unload(); else if (ClientConfig.AutoVolumeControl.enableAutoVolume) - tes.updateTrackDistance(dist2, 80); //ToDo find master volume - } else if (dist2 <= WebDisplays.INSTANCE.loadDistance2) + tes.updateTrackDistance(dist, 80); //ToDo find master volume + } else if (dist <= WebDisplays.INSTANCE.loadDistance2) tes.load(); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java b/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java index c86651b..c52cdb4 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java @@ -122,20 +122,21 @@ public class GuiMinePad extends WDScreen { return false; char key = keystr.charAt(keystr.length() - 1); - - if(keystr.equals("Enter")) - key = '\r'; - - if (pad.view != null) { //Inject events into browser -// System.out.println("Sent keystroke " + keystr); + + if(keystr.equals("Enter")) { + keyCode = 10; + key = '\n'; + } + + if (pad.view != null) { if (pressed) pad.view.injectKeyPressedByKeyCode(keyCode, key, modifiers); else pad.view.injectKeyReleasedByKeyCode(keyCode, key, modifiers); - - if(key == '\r') - pad.view.injectKeyTyped(key, 0); - return true; // Something did happen + + if (pressed && key == '\n') + if (modifiers != 0) pad.view.injectKeyTyped('\r', modifiers); + return true; } return false; diff --git a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java index 29df81b..e2965a0 100644 --- a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java +++ b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java @@ -211,7 +211,7 @@ public abstract class WDScreen extends Screen { for (Control ctrl : controls) down = down || ctrl.keyDown(keyCode, scanCode, modifiers); - if (Minecraft.getInstance().screen instanceof GuiKeyboard) { + if (this instanceof GuiKeyboard) { return down; } else { return new GuiServer(new Vector3i(), new NameUUIDPair()).keyPressed(keyCode, scanCode, modifiers); diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java index 387f9d6..d1c1849 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java @@ -876,11 +876,21 @@ public class TileEntityScreen extends BlockEntity { } } else { TypeData[] data = WebDisplays.GSON.fromJson(text, TypeData[].class); - + for (TypeData ev : data) { + if (ev.getKeyCode() == 257) { + ev = new TypeData( + ev.getAction(), + 10, ev.getModifier() + ); + } + switch (ev.getAction()) { - case PRESS -> - scr.browser.injectKeyPressedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier()); + case PRESS -> { + scr.browser.injectKeyPressedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier()); + if (ev.getKeyCode() == 10) + scr.browser.injectKeyTyped('\r', ev.getModifier()); + } case RELEASE -> scr.browser.injectKeyReleasedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier()); case TYPE ->