diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java index 52f48c7b0..38a93cb1f 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java @@ -24,13 +24,16 @@ import com.seibel.distanthorizons.common.util.ProxyUtil; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.api.internal.ClientApi; +import com.seibel.distanthorizons.core.api.internal.ServerApi; import com.seibel.distanthorizons.core.api.internal.SharedApi; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage; import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import net.minecraft.world.level.LevelAccessor; @@ -52,6 +55,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraftforge.common.MinecraftForge; import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; @@ -90,7 +94,13 @@ public class ForgeClientProxy implements AbstractModInitializer.IEventProxy public void registerEvents() { MinecraftForge.EVENT_BUS.register(this); - ForgePluginPacketSender.setPacketHandler(ClientApi.INSTANCE::pluginMessageReceived); + + // handles singleplayer, LAN, and connecting to a server + ForgePluginPacketSender.setPacketHandler((IServerPlayerWrapper player, @NotNull AbstractNetworkMessage message) -> + { + ClientApi.INSTANCE.pluginMessageReceived(message); + ServerApi.INSTANCE.pluginMessageReceived(player, message); + }); } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java index 37c0995d4..dd1f0f144 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java @@ -78,10 +78,7 @@ public class ForgeServerProxy implements AbstractModInitializer.IEventProxy // constructor // //=============// - public ForgeServerProxy(boolean isDedicated) - { - this.isDedicated = isDedicated; - } + public ForgeServerProxy(boolean isDedicated) { this.isDedicated = isDedicated; } diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java index e6c96c0ec..5b1132662 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java @@ -26,7 +26,9 @@ import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.api.internal.ServerApi; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage; import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSender; +import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IModChecker; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IOptifineAccessor; import com.seibel.distanthorizons.coreapi.ModInfo; @@ -51,6 +53,7 @@ import java.util.function.Consumer; import net.neoforged.neoforge.client.ConfigScreenHandler; #else import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +import org.jetbrains.annotations.NotNull; #endif /** @@ -64,11 +67,16 @@ public class NeoforgeMain extends AbstractModInitializer { public NeoforgeMain(IEventBus eventBus) { - eventBus.addListener((FMLClientSetupEvent e) -> { + // handles singleplayer, LAN, and connecting to a server + eventBus.addListener((FMLClientSetupEvent e) -> + { this.onInitializeClient(); - eventBus.addListener(this::registerNetworkingClient); + eventBus.addListener(this::registerNetworkingClientServer); }); - eventBus.addListener((FMLDedicatedServerSetupEvent e) -> { + + // handles dedicated servers + eventBus.addListener((FMLDedicatedServerSetupEvent e) -> + { this.onInitializeServer(); eventBus.addListener(this::registerNetworkingServer); }); @@ -79,13 +87,22 @@ public class NeoforgeMain extends AbstractModInitializer //============// // networking // //============// - public void registerNetworkingClient(RegisterPayloadHandlersEvent event) - { NeoforgePluginPacketSender.setPacketHandler(event, ClientApi.INSTANCE::pluginMessageReceived); } + + public void registerNetworkingClientServer(RegisterPayloadHandlersEvent event) + { + NeoforgePluginPacketSender.setPacketHandler(event, (IServerPlayerWrapper player, @NotNull AbstractNetworkMessage message) -> + { + ClientApi.INSTANCE.pluginMessageReceived(message); + ServerApi.INSTANCE.pluginMessageReceived(player, message); + }); + } public void registerNetworkingServer(RegisterPayloadHandlersEvent event) { NeoforgePluginPacketSender.setPacketHandler(event, ServerApi.INSTANCE::pluginMessageReceived); } + + @Override protected IEventProxy createServerProxy(boolean isDedicated) { return new NeoforgeServerProxy(isDedicated); }