diff --git a/codechicken/lib/packet/PacketCustom.java b/codechicken/lib/packet/PacketCustom.java index 73e6235..cc7509b 100644 --- a/codechicken/lib/packet/PacketCustom.java +++ b/codechicken/lib/packet/PacketCustom.java @@ -14,6 +14,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.common.network.FMLNetworkHandler; +import cpw.mods.fml.common.network.IConnectionHandler; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.ITinyPacketHandler; import cpw.mods.fml.common.network.NetworkModHandler; @@ -28,9 +29,11 @@ import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.INetworkManager; +import net.minecraft.network.NetLoginHandler; import net.minecraft.network.NetServerHandler; import net.minecraft.network.packet.NetHandler; import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.Packet1Login; import net.minecraft.network.packet.Packet131MapData; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.server.MinecraftServer; @@ -148,6 +151,7 @@ private static class ClientPacketHandler extends CustomPacketHandler public ClientPacketHandler(String channel) { super(channel); + NetClientHandlerHelper.register(); } @Override @@ -159,7 +163,7 @@ public Side getSide() @Override public void handle(ICustomPacketHandler handler, PacketCustom packet, Player player) { - ((IClientPacketHandler)handler).handlePacket(packet, Minecraft.getMinecraft().getNetHandler(), Minecraft.getMinecraft()); + ((IClientPacketHandler)handler).handlePacket(packet, NetClientHandlerHelper.getNetHandler(), Minecraft.getMinecraft()); } } @@ -254,6 +258,65 @@ else if(handler instanceof IServerPacketHandler) } } + private static class NetClientHandlerHelper implements IConnectionHandler + { + NetClientHandler netClientHandler; + + NetClientHandlerHelper() + { + NetworkRegistry.instance().registerConnectionHandler(this); + } + + @Override + public void connectionOpened(NetHandler netHandler, String server, int port, INetworkManager manager) + { + netClientHandler = (NetClientHandler) netHandler; + } + + @Override + public void connectionOpened(NetHandler netHandler, MinecraftServer server, INetworkManager manager) + { + netClientHandler = (NetClientHandler) netHandler; + } + + @Override + public void connectionClosed(INetworkManager manager) + { + netClientHandler = null; + } + + @Override + public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager) + { + return null; + } + + @Override + public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login) + { + } + + @Override + public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) + { + } + + static NetClientHandlerHelper instance; + + public static void register() + { + if (instance == null) + { + instance = new NetClientHandlerHelper(); + } + } + + public static NetClientHandler getNetHandler() + { + return instance.netClientHandler; + } + } + public static interface IPacketCarrier { public int readType(Packet packet);