From 7d66708a5edb014a40a91d6f7a38b9e82096f54a Mon Sep 17 00:00:00 2001 From: Mysticpasta1 Date: Fri, 3 Mar 2023 03:02:52 -0600 Subject: [PATCH] push something to WD --- build.gradle | 3 ++- src/main/java/net/montoyo/wd/WebDisplays.java | 15 ++++++++++++--- .../wd/client/renderers/ScreenRenderer.java | 17 ++++++++++------- .../net/montoyo/wd/miniserv/server/Server.java | 1 + .../wd/net/client/CMessageMiniservKey.java | 6 +++++- .../wd/net/server/SMessageMiniservConnect.java | 10 ++++++++-- 6 files changed, 38 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index afd4384..901179e 100644 --- a/build.gradle +++ b/build.gradle @@ -37,8 +37,9 @@ dependencies { } forge "net.minecraftforge:forge:${project.forge_version}" - modImplementation "com.github.Mysticpasta1:mcef-forge:3797701d8f" + modImplementation "com.github.Mysticpasta1:mcef-forge:a9bf168a92" modImplementation "curse.maven:cloth_config_forge-348521:3972423" + modImplementation "curse.maven:SU-370704:4410614" // Uncomment the following line to enable the deprecated Fabric API modules. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. diff --git a/src/main/java/net/montoyo/wd/WebDisplays.java b/src/main/java/net/montoyo/wd/WebDisplays.java index f5c8336..99c95df 100644 --- a/src/main/java/net/montoyo/wd/WebDisplays.java +++ b/src/main/java/net/montoyo/wd/WebDisplays.java @@ -12,6 +12,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; @@ -56,6 +57,7 @@ import net.montoyo.wd.utilities.Util; import java.io.*; import java.net.MalformedURLException; import java.net.URL; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -204,6 +206,8 @@ public class WebDisplays { registerSound("ironic"); } + ArrayList> serverStartedDimensions = new ArrayList<>(); + @SubscribeEvent public void onWorldLoad(LevelEvent.Load ev) { if (ev.getLevel() instanceof Level level) { @@ -234,9 +238,13 @@ public class WebDisplays { if (miniservPort != 0) { Server sv = Server.getInstance(); - sv.setPort(miniservPort); - sv.setDirectory(new File(worldDir, "wd_filehost")); - sv.start(); + + if(!serverStartedDimensions.contains(level.dimension())) { + sv.setPort(miniservPort); + sv.setDirectory(new File(worldDir, "wd_filehost")); + sv.start(); + serverStartedDimensions.add(level.dimension()); + } } } } @@ -248,6 +256,7 @@ public class WebDisplays { return; Server sw = Server.getInstance(); sw.stopServer(); + serverStartedDimensions.remove(level.dimension()); } } diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java index 7202fb7..4c07fb3 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java @@ -12,6 +12,7 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.phys.AABB; +import net.montoyo.wd.SharedProxy; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.client.ClientProxy; import net.montoyo.wd.entity.TileEntityScreen; @@ -48,15 +49,17 @@ public class ScreenRenderer implements BlockEntityRenderer { for(int i = 0; i < te.screenCount(); i++) { TileEntityScreen.Screen scr = te.getScreen(i); if(scr.browser == null) { - scr.browser = ((ClientProxy) WebDisplays.PROXY).getMCEF().createBrowser(WebDisplays.applyBlacklist(scr.url)); + if(WebDisplays.PROXY instanceof ClientProxy clientProxy) { + scr.browser = clientProxy.getMCEF().createBrowser(WebDisplays.applyBlacklist(scr.url)); - if(scr.rotation.isVertical) - scr.browser.resize(scr.resolution.y, scr.resolution.x); - else - scr.browser.resize(scr.resolution.x, scr.resolution.y); + if (scr.rotation.isVertical) + scr.browser.resize(scr.resolution.y, scr.resolution.x); + else + scr.browser.resize(scr.resolution.x, scr.resolution.y); - scr.doTurnOnAnim = true; - scr.turnOnTime = System.currentTimeMillis(); + scr.doTurnOnAnim = true; + scr.turnOnTime = System.currentTimeMillis(); + } } tmpi.set(scr.side.right); diff --git a/src/main/java/net/montoyo/wd/miniserv/server/Server.java b/src/main/java/net/montoyo/wd/miniserv/server/Server.java index e9f0698..af98522 100644 --- a/src/main/java/net/montoyo/wd/miniserv/server/Server.java +++ b/src/main/java/net/montoyo/wd/miniserv/server/Server.java @@ -41,6 +41,7 @@ public class Server implements Runnable { private volatile boolean running; private volatile Thread thread; + public int getPort() {return port;} public void setPort(int p) { port = p; } diff --git a/src/main/java/net/montoyo/wd/net/client/CMessageMiniservKey.java b/src/main/java/net/montoyo/wd/net/client/CMessageMiniservKey.java index 6c65937..237d3ad 100644 --- a/src/main/java/net/montoyo/wd/net/client/CMessageMiniservKey.java +++ b/src/main/java/net/montoyo/wd/net/client/CMessageMiniservKey.java @@ -6,8 +6,10 @@ package net.montoyo.wd.net.client; import io.netty.buffer.ByteBuf; import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.network.NetworkEvent; import net.montoyo.wd.WebDisplays; +import net.montoyo.wd.client.ClientProxy; import net.montoyo.wd.miniserv.client.Client; import net.montoyo.wd.utilities.Log; @@ -36,7 +38,9 @@ public class CMessageMiniservKey { contextSupplier.get().enqueueWork(() -> { if (Client.getInstance().decryptKey(encryptedKey)) { Log.info("Successfully received and decrypted key, starting miniserv client..."); - WebDisplays.PROXY.startMiniservClient(); + if(WebDisplays.PROXY instanceof ClientProxy proxy) { + proxy.startMiniservClient(); + } } }); contextSupplier.get().setPacketHandled(true); diff --git a/src/main/java/net/montoyo/wd/net/server/SMessageMiniservConnect.java b/src/main/java/net/montoyo/wd/net/server/SMessageMiniservConnect.java index dadc498..864a1ee 100644 --- a/src/main/java/net/montoyo/wd/net/server/SMessageMiniservConnect.java +++ b/src/main/java/net/montoyo/wd/net/server/SMessageMiniservConnect.java @@ -4,13 +4,19 @@ package net.montoyo.wd.net.server; +import net.minecraft.client.Minecraft; +import net.minecraft.core.Direction; +import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraftforge.network.NetworkDirection; import net.minecraftforge.network.NetworkEvent; import net.montoyo.wd.miniserv.server.ClientManager; import net.montoyo.wd.miniserv.server.Server; import net.montoyo.wd.net.Messages; import net.montoyo.wd.net.client.CMessageMiniservKey; +import java.util.Objects; import java.util.function.Supplier; public class SMessageMiniservConnect { @@ -47,10 +53,10 @@ public class SMessageMiniservConnect { public void handle(Supplier contextSupplier) { ClientManager cliMgr = Server.getInstance().getClientManager(); - byte[] encKey = cliMgr.encryptClientKey(contextSupplier.get().getSender().getGameProfile().getId(), modulus, exponent); + byte[] encKey = cliMgr.encryptClientKey(Objects.requireNonNull(contextSupplier.get().getSender()).getGameProfile().getId(), modulus, exponent); if (encKey != null) { - Messages.INSTANCE.sendToServer(new CMessageMiniservKey(encKey)); + Messages.INSTANCE.sendTo(new CMessageMiniservKey(encKey), new Connection(PacketFlow.SERVERBOUND), NetworkDirection.LOGIN_TO_SERVER); } contextSupplier.get().setPacketHandled(true);