Add in a sided packet registry so that client vs server can vary
This commit is contained in:
parent
e229b6f6eb
commit
8a0cfed5c6
|
@ -39,6 +39,7 @@ import com.google.common.collect.Sets;
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
import cpw.mods.fml.common.FMLLog;
|
import cpw.mods.fml.common.FMLLog;
|
||||||
import cpw.mods.fml.common.ModContainer;
|
import cpw.mods.fml.common.ModContainer;
|
||||||
|
import cpw.mods.fml.common.Side;
|
||||||
import cpw.mods.fml.common.network.FMLPacket.Type;
|
import cpw.mods.fml.common.network.FMLPacket.Type;
|
||||||
|
|
||||||
public class NetworkRegistry
|
public class NetworkRegistry
|
||||||
|
@ -52,7 +53,9 @@ public class NetworkRegistry
|
||||||
/**
|
/**
|
||||||
* A map of the packet handlers for packets
|
* A map of the packet handlers for packets
|
||||||
*/
|
*/
|
||||||
private Multimap<String, IPacketHandler> packetHandlers = ArrayListMultimap.create();
|
private Multimap<String, IPacketHandler> universalPacketHandlers = ArrayListMultimap.create();
|
||||||
|
private Multimap<String, IPacketHandler> clientPacketHandlers = ArrayListMultimap.create();
|
||||||
|
private Multimap<String, IPacketHandler> serverPacketHandlers = ArrayListMultimap.create();
|
||||||
/**
|
/**
|
||||||
* A linked set of registered connection handlers
|
* A linked set of registered connection handlers
|
||||||
*/
|
*/
|
||||||
|
@ -68,9 +71,9 @@ public class NetworkRegistry
|
||||||
* Get the packet 250 channel registration string
|
* Get the packet 250 channel registration string
|
||||||
* @return
|
* @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?
|
* Is the specified channel active for the player?
|
||||||
|
@ -89,7 +92,19 @@ public class NetworkRegistry
|
||||||
*/
|
*/
|
||||||
public void registerChannel(IPacketHandler handler, String channelName)
|
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
|
* Activate the channel for the player
|
||||||
|
@ -176,7 +191,7 @@ public class NetworkRegistry
|
||||||
{
|
{
|
||||||
Packet250CustomPayload pkt = new Packet250CustomPayload();
|
Packet250CustomPayload pkt = new Packet250CustomPayload();
|
||||||
pkt.field_73630_a = "REGISTER";
|
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;
|
pkt.field_73628_b = pkt.field_73629_c.length;
|
||||||
manager.func_74429_a(pkt);
|
manager.func_74429_a(pkt);
|
||||||
}
|
}
|
||||||
|
@ -202,7 +217,7 @@ public class NetworkRegistry
|
||||||
{
|
{
|
||||||
if (activeChannels.containsEntry(player, packet.field_73630_a))
|
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);
|
handler.onPacketData(network, packet, player);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue