diff --git a/src/main/java/gregtech/core/network/internal/NetworkHandler.java b/src/main/java/gregtech/core/network/internal/NetworkHandler.java index 60849c35415..3d6769891f9 100644 --- a/src/main/java/gregtech/core/network/internal/NetworkHandler.java +++ b/src/main/java/gregtech/core/network/internal/NetworkHandler.java @@ -7,6 +7,7 @@ import gregtech.api.network.INetworkHandler; import gregtech.api.network.IPacket; import gregtech.api.network.IServerExecutor; +import gregtech.api.util.GTLog; import gregtech.core.CoreModule; import net.minecraft.client.network.NetHandlerPlayClient; @@ -26,8 +27,11 @@ import net.minecraftforge.fml.relauncher.SideOnly; import io.netty.buffer.Unpooled; +import org.jetbrains.annotations.NotNull; -public class NetworkHandler implements INetworkHandler { +import java.lang.reflect.InvocationTargetException; + +public final class NetworkHandler implements INetworkHandler { private static final NetworkHandler INSTANCE = new NetworkHandler(); @@ -106,7 +110,7 @@ public void sendToServer(IPacket packet) { @SubscribeEvent @SideOnly(Side.CLIENT) - public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) throws Exception { + public void onClientPacket(FMLNetworkEvent.@NotNull ClientCustomPacketEvent event) throws Exception { IPacket packet = toGTPacket(event.getPacket()); if (IClientExecutor.class.isAssignableFrom(packet.getClass())) { IClientExecutor executor = (IClientExecutor) packet; @@ -121,7 +125,7 @@ public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) throws } @SubscribeEvent - public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) throws Exception { + public void onServerPacket(FMLNetworkEvent.@NotNull ServerCustomPacketEvent event) throws Exception { IPacket packet = toGTPacket(event.getPacket()); if (IServerExecutor.class.isAssignableFrom(packet.getClass())) { IServerExecutor executor = (IServerExecutor) packet; @@ -135,17 +139,27 @@ public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) throws } } - private FMLProxyPacket toFMLPacket(IPacket packet) { + private @NotNull FMLProxyPacket toFMLPacket(@NotNull IPacket packet) { PacketBuffer buf = new PacketBuffer(Unpooled.buffer()); buf.writeVarInt(packetHandler.getPacketId(packet.getClass())); packet.encode(buf); return new FMLProxyPacket(buf, GTValues.MODID); } - private IPacket toGTPacket(FMLProxyPacket proxyPacket) throws Exception { + private @NotNull IPacket toGTPacket(@NotNull FMLProxyPacket proxyPacket) throws NoSuchMethodException, + InvocationTargetException, + InstantiationException, + IllegalAccessException { PacketBuffer payload = (PacketBuffer) proxyPacket.payload(); - IPacket packet = packetHandler.getPacketClass(payload.readVarInt()).newInstance(); + var clazz = packetHandler.getPacketClass(payload.readVarInt()); + IPacket packet = clazz.getConstructor().newInstance(); packet.decode(payload); + + if (payload.readableBytes() != 0) { + GTLog.logger.error( + "NetworkHandler failed to finish reading packet with class {} and {} bytes remaining", + clazz.getName(), payload.readableBytes()); + } return packet; } }