From 8a0cfed5c6fc1679d5adc1c8a945e69f97d8a54f Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 12 Aug 2012 22:23:03 -0400 Subject: [PATCH] Add in a sided packet registry so that client vs server can vary --- .../fml/common/network/NetworkRegistry.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/fml/common/cpw/mods/fml/common/network/NetworkRegistry.java b/fml/common/cpw/mods/fml/common/network/NetworkRegistry.java index 3096339d4..3f4a0fd0c 100644 --- a/fml/common/cpw/mods/fml/common/network/NetworkRegistry.java +++ b/fml/common/cpw/mods/fml/common/network/NetworkRegistry.java @@ -39,6 +39,7 @@ import com.google.common.collect.Sets; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.ModContainer; +import cpw.mods.fml.common.Side; import cpw.mods.fml.common.network.FMLPacket.Type; public class NetworkRegistry @@ -52,7 +53,9 @@ public class NetworkRegistry /** * A map of the packet handlers for packets */ - private Multimap packetHandlers = ArrayListMultimap.create(); + private Multimap universalPacketHandlers = ArrayListMultimap.create(); + private Multimap clientPacketHandlers = ArrayListMultimap.create(); + private Multimap serverPacketHandlers = ArrayListMultimap.create(); /** * A linked set of registered connection handlers */ @@ -68,9 +71,9 @@ public class NetworkRegistry * Get the packet 250 channel registration string * @return */ - byte[] getPacketRegistry() + byte[] getPacketRegistry(Side side) { - return Joiner.on('\0').join(Iterables.concat(Arrays.asList("FML"),packetHandlers.keySet())).getBytes(Charsets.UTF_8); + return Joiner.on('\0').join(Iterables.concat(Arrays.asList("FML"),universalPacketHandlers.keySet(), side.isClient() ? clientPacketHandlers.keySet() : serverPacketHandlers.keySet())).getBytes(Charsets.UTF_8); } /** * Is the specified channel active for the player? @@ -89,7 +92,19 @@ public class NetworkRegistry */ public void registerChannel(IPacketHandler handler, String channelName) { - packetHandlers.put(channelName, handler); + universalPacketHandlers.put(channelName, handler); + } + + public void registerChannel(IPacketHandler handler, String channelName, Side side) + { + if (side.isClient()) + { + clientPacketHandlers.put(channelName, handler); + } + else + { + serverPacketHandlers.put(channelName, handler); + } } /** * Activate the channel for the player @@ -176,7 +191,7 @@ public class NetworkRegistry { Packet250CustomPayload pkt = new Packet250CustomPayload(); pkt.field_73630_a = "REGISTER"; - pkt.field_73629_c = getPacketRegistry(); + pkt.field_73629_c = getPacketRegistry(player instanceof EntityPlayerMP ? Side.SERVER : Side.CLIENT); pkt.field_73628_b = pkt.field_73629_c.length; manager.func_74429_a(pkt); } @@ -202,7 +217,7 @@ public class NetworkRegistry { if (activeChannels.containsEntry(player, packet.field_73630_a)) { - for (IPacketHandler handler : packetHandlers.get(packet.field_73630_a)) + for (IPacketHandler handler : Iterables.concat(universalPacketHandlers.get(packet.field_73630_a), player instanceof EntityPlayerMP ? serverPacketHandlers.get(packet.field_73630_a) : clientPacketHandlers.get(packet.field_73630_a))) { handler.onPacketData(network, packet, player); }