update input handling to match latest MCEF
This commit is contained in:
parent
4c0b89de04
commit
55be33ac44
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 ->
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user