From 8e6010bbe570d0777425db79f7b4e477b9f5a7f8 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Sun, 22 Sep 2024 03:29:07 +0500 Subject: [PATCH 1/3] Abstract away serverside parts of world & level --- .../common/AbstractModInitializer.java | 4 +- coreSubProjects | 2 +- .../fabric/FabricClientProxy.java | 1 - .../fabric/FabricServerProxy.java | 42 +++++++++---------- 4 files changed, 22 insertions(+), 27 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java index 029ee46b7..74a803514 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java @@ -300,7 +300,7 @@ public abstract class AbstractModInitializer .then(literal("encode") .executes(c -> { assert SharedApi.getIDhServerWorld() != null; - ((DhServerWorld) SharedApi.getIDhServerWorld()).remotePlayerConnectionHandler + ((DhServerWorld) SharedApi.getIDhServerWorld()).getServerPlayerStateManager() #if MC_VER >= MC_1_19_2 .getConnectedPlayer(ServerPlayerWrapper.getWrapper(Objects.requireNonNull(c.getSource().getPlayer()))) #else @@ -312,7 +312,7 @@ public abstract class AbstractModInitializer .then(literal("decode") .executes(c -> { assert SharedApi.getIDhServerWorld() != null; - ((DhServerWorld) SharedApi.getIDhServerWorld()).remotePlayerConnectionHandler + ((DhServerWorld) SharedApi.getIDhServerWorld()).getServerPlayerStateManager() #if MC_VER >= MC_1_19_2 .getConnectedPlayer(ServerPlayerWrapper.getWrapper(Objects.requireNonNull(c.getSource().getPlayer()))) #else diff --git a/coreSubProjects b/coreSubProjects index d4cad8f71..b18460b82 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d4cad8f718fd923115a3c7d1f9fcd3dab4ce0053 +Subproject commit b18460b825c3b840ac3e15fab858495dd8d794a5 diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 5a8f9bd08..8d35ace2a 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -253,7 +253,6 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy //==================// #if MC_VER >= MC_1_20_6 - PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); ClientPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) -> { diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index 08df8c021..49f2efbcb 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -176,32 +176,28 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy } }); - if (this.isDedicatedServer) + #if MC_VER >= MC_1_20_6 + PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); + ServerPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) -> { - #if MC_VER >= MC_1_20_6 - PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); - PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); - ServerPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) -> + if (payload.message() == null) { - if (payload.message() == null) - { - return; - } - ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(context.player()), payload.message()); - }); - #else - ServerPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE, (server, serverPlayer, handler, buffer, packetSender) -> + return; + } + ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(context.player()), payload.message()); + }); + #else + ServerPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE, (server, serverPlayer, handler, buffer, packetSender) -> + { + // Forge packet ID + buffer.readByte(); + AbstractNetworkMessage message = AbstractPluginPacketSender.decodeMessage(buffer); + if (message != null) { - // Forge packet ID - buffer.readByte(); - AbstractNetworkMessage message = AbstractPluginPacketSender.decodeMessage(buffer); - if (message != null) - { - ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(serverPlayer), message); - } - }); - #endif - } + ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(serverPlayer), message); + } + }); + #endif } } From 68097f61eb8b2c4b2ce3319e97580b83317b4ed7 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Mon, 23 Sep 2024 00:02:57 +0500 Subject: [PATCH 2/3] LAN multiplayer kinda works --- build.gradle | 4 +++- coreSubProjects | 2 +- .../fabric/wrappers/modAccessor/SodiumAccessor.java | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 4328a16c5..b992cbb64 100644 --- a/build.gradle +++ b/build.gradle @@ -179,6 +179,8 @@ subprojects { p -> if (isMinecraftSubProject) { annotationProcessor("systems.manifold:manifold-preprocessor:${rootProject.manifold_version}") } + + annotationProcessor("systems.manifold:manifold-strings:${rootProject.manifold_version}") // Log4j // TODO: Change to shadowMe later to work in the standalone jar @@ -617,11 +619,11 @@ allprojects { p -> tasks.withType(JavaCompile) { if (isMinecraftSubProject) { options.release = rootProject.java_version as Integer - options.compilerArgs += ["-Xplugin:Manifold"] } else { options.release = 8; // Core & Api should use Java 8 no matter what //options.release = rootProject.java_version as Integer // But if you want to test some stuff, then this can be enabled } + options.compilerArgs += ["-Xplugin:Manifold"] options.encoding = "UTF-8" } diff --git a/coreSubProjects b/coreSubProjects index b18460b82..6c278ea3b 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit b18460b825c3b840ac3e15fab858495dd8d794a5 +Subproject commit 6c278ea3b13667a65ce22cdb53c58cf770b4ff42 diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java index fd53cc0d9..a7b7df22a 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java @@ -84,7 +84,7 @@ public class SodiumAccessor implements ISodiumAccessor sodiumPerformanceOptions = optionsClass.getDeclaredField("performance").get(basicOptions); setFogOcclusionMethod = MethodHandles.lookup() .findSetter(Class.forName( - "me.jellysquid.mods.sodium.client.gui.SodiumGameOptions$PerformanceSettings"), + "me.jellysquid.mods.sodium.client.gui.SodiumGameOptions\$PerformanceSettings"), "useFogOcclusion", boolean.class); // alternate option if referencing Sodium 0.5 directly @@ -101,7 +101,7 @@ public class SodiumAccessor implements ISodiumAccessor sodiumPerformanceOptions = optionsClass.getDeclaredField("performance").get(basicOptions); setFogOcclusionMethod = MethodHandles.lookup() .findSetter(Class.forName( - "net.caffeinemc.mods.sodium.client.gui.SodiumGameOptions$PerformanceSettings"), + "net.caffeinemc.mods.sodium.client.gui.SodiumGameOptions\$PerformanceSettings"), "useFogOcclusion", boolean.class); } } From 11a752a99de2daf2869b899b51757d371532c4ac Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Mon, 23 Sep 2024 00:43:00 +0500 Subject: [PATCH 3/3] Fix dedicated server failing to send packets --- .../com/seibel/distanthorizons/fabric/FabricServerProxy.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index 49f2efbcb..ee04944e5 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -178,6 +178,11 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy #if MC_VER >= MC_1_20_6 PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); + if (this.isDedicatedServer) + { + PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec()); + } + ServerPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) -> { if (payload.message() == null)