Drillgon200 / Hbm-s-Nuclear-Tech-GIT

My fork of the HBM's nuclear tech mod.
46 stars 19 forks source link

HBM Issues with multiplayer #169

Open Golgroth opened 2 years ago

Golgroth commented 2 years ago

Whenever a player joins a Forge server with this mod loaded, this exception is thrown several times:

[20:07:02] [Server thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception java.lang.RuntimeException: Missing at net.minecraftforge.fml.server.FMLServerHandler.getClientToServerNetworkManager(FMLServerHandler.java:299) ~[FMLServerHandler.class:?] at net.minecraftforge.fml.common.FMLCommonHandler.getClientToServerNetworkManager(FMLCommonHandler.java:555) ~[FMLCommonHandler.class:?] at net.minecraftforge.fml.common.network.FMLOutboundHandler$OutboundTarget$10.selectNetworks(FMLOutboundHandler.java:329) ~[FMLOutboundHandler$OutboundTarget$10.class:?] at net.minecraftforge.fml.common.network.FMLOutboundHandler.write(FMLOutboundHandler.java:378) ~[FMLOutboundHandler.class:?] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) ~[AbstractChannelHandlerContext.class:?] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111) ~[MessageToMessageEncoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:?] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831) ~[AbstractChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032) ~[DefaultChannelPipeline.class:?] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:296) ~[AbstractChannel.class:?] at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToServer(SimpleNetworkWrapper.java:321) [SimpleNetworkWrapper.class:?] at com.hbm.main.ModEventHandler.clientJoinServer(ModEventHandler.java:1227) [ModEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1217_ModEventHandler_clientJoinServer_PlayerLoggedInEvent.invoke(.dynamic) [?:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) [ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) [EventBus.class:?] at net.minecraftforge.fml.common.FMLCommonHandler.firePlayerLoggedIn(FMLCommonHandler.java:575) [FMLCommonHandler.class:?] at net.minecraft.server.management.PlayerList.initializeConnectionToPlayer(PlayerList.java:219) [pl.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:255) [NetworkDispatcher.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.access$100(NetworkDispatcher.java:72) [NetworkDispatcher.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:205) [NetworkDispatcher$1.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:285) [gw.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:180) [oz.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:790) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:397) [nz.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0-u252]

using cat latest.log | grep "SimpleChannelHandlerWrapper exception" | wc -l, it seems that about 100 of such exceptions are thrown per player.

I managed to connect to the server (local network), however for other players, only one out of 30 attempts was successful (yet the connection was terminated 15 minutes later due to a timeout). Without the mod, the connection was possible and stable.

Mod version: 1.6.4a-G (1.12.2) Forge version: 1.12.2-14.23.5.2855

Golgroth commented 2 years ago

I believe that the issue is within those lines: PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.TOGGLE_HEAD, props.getEnableHUD())); PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.TOGGLE_JETPACK, props.getEnableBackpack()));

Based on this thread it seems that the issue is with the server trying to send the packet to server (e.player instanceof EntityPlayerMP implies a serverside check). Is it not supposed to dispatched by the server internally?

Golgroth commented 2 years ago

170

Drillgon200 commented 2 years ago

Your fix is incorrect (see comments on the PR), however it was already fixed in dev, so that will make it into the next update.