update input handling to match latest MCEF

This commit is contained in:
GiantLuigi4 2023-06-08 12:00:54 -04:00
parent 4c0b89de04
commit 55be33ac44
4 changed files with 42 additions and 18 deletions

View File

@ -9,6 +9,7 @@ import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3d;
import net.minecraft.advancements.Advancement; import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementProgress; import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
@ -640,14 +641,26 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
if (!tes.isLoaded()) if (!tes.isLoaded())
tes.load(); tes.load();
} else { } 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 (tes.isLoaded()) {
if (dist2 > WebDisplays.INSTANCE.unloadDistance2) if (dist > WebDisplays.INSTANCE.unloadDistance2)
tes.unload(); tes.unload();
else if (ClientConfig.AutoVolumeControl.enableAutoVolume) else if (ClientConfig.AutoVolumeControl.enableAutoVolume)
tes.updateTrackDistance(dist2, 80); //ToDo find master volume tes.updateTrackDistance(dist, 80); //ToDo find master volume
} else if (dist2 <= WebDisplays.INSTANCE.loadDistance2) } else if (dist <= WebDisplays.INSTANCE.loadDistance2)
tes.load(); tes.load();
} }
} }

View File

@ -123,19 +123,20 @@ public class GuiMinePad extends WDScreen {
char key = keystr.charAt(keystr.length() - 1); char key = keystr.charAt(keystr.length() - 1);
if(keystr.equals("Enter")) if(keystr.equals("Enter")) {
key = '\r'; keyCode = 10;
key = '\n';
}
if (pad.view != null) { //Inject events into browser if (pad.view != null) {
// System.out.println("Sent keystroke " + keystr);
if (pressed) if (pressed)
pad.view.injectKeyPressedByKeyCode(keyCode, key, modifiers); pad.view.injectKeyPressedByKeyCode(keyCode, key, modifiers);
else else
pad.view.injectKeyReleasedByKeyCode(keyCode, key, modifiers); pad.view.injectKeyReleasedByKeyCode(keyCode, key, modifiers);
if(key == '\r') if (pressed && key == '\n')
pad.view.injectKeyTyped(key, 0); if (modifiers != 0) pad.view.injectKeyTyped('\r', modifiers);
return true; // Something did happen return true;
} }
return false; return false;

View File

@ -211,7 +211,7 @@ public abstract class WDScreen extends Screen {
for (Control ctrl : controls) for (Control ctrl : controls)
down = down || ctrl.keyDown(keyCode, scanCode, modifiers); down = down || ctrl.keyDown(keyCode, scanCode, modifiers);
if (Minecraft.getInstance().screen instanceof GuiKeyboard) { if (this instanceof GuiKeyboard) {
return down; return down;
} else { } else {
return new GuiServer(new Vector3i(), new NameUUIDPair()).keyPressed(keyCode, scanCode, modifiers); return new GuiServer(new Vector3i(), new NameUUIDPair()).keyPressed(keyCode, scanCode, modifiers);

View File

@ -878,9 +878,19 @@ public class TileEntityScreen extends BlockEntity {
TypeData[] data = WebDisplays.GSON.fromJson(text, TypeData[].class); TypeData[] data = WebDisplays.GSON.fromJson(text, TypeData[].class);
for (TypeData ev : data) { for (TypeData ev : data) {
if (ev.getKeyCode() == 257) {
ev = new TypeData(
ev.getAction(),
10, ev.getModifier()
);
}
switch (ev.getAction()) { switch (ev.getAction()) {
case PRESS -> case PRESS -> {
scr.browser.injectKeyPressedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier()); scr.browser.injectKeyPressedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier());
if (ev.getKeyCode() == 10)
scr.browser.injectKeyTyped('\r', ev.getModifier());
}
case RELEASE -> case RELEASE ->
scr.browser.injectKeyReleasedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier()); scr.browser.injectKeyReleasedByKeyCode(ev.getKeyCode(), (char) ev.getKeyCode(), ev.getModifier());
case TYPE -> case TYPE ->