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.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();
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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 ->