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.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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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 ->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user