001 package cpw.mods.fml.common.network;
002
003 import net.minecraft.entity.player.EntityPlayerMP;
004 import net.minecraft.network.packet.Packet;
005 import net.minecraft.network.packet.Packet131MapData;
006 import net.minecraft.network.packet.Packet250CustomPayload;
007 import net.minecraft.server.MinecraftServer;
008 import cpw.mods.fml.common.FMLCommonHandler;
009 import cpw.mods.fml.common.FMLLog;
010
011 /**
012 * A simple utility class to send packet 250 packets around the place
013 *
014 * @author cpw
015 *
016 */
017 public class PacketDispatcher
018 {
019 public static Packet250CustomPayload getPacket(String type, byte[] data)
020 {
021 return new Packet250CustomPayload(type, data);
022 }
023
024 public static void sendPacketToServer(Packet packet)
025 {
026 FMLCommonHandler.instance().getSidedDelegate().sendPacket(packet);
027 }
028
029 public static void sendPacketToPlayer(Packet packet, Player player)
030 {
031 if (player instanceof EntityPlayerMP)
032 {
033 ((EntityPlayerMP)player).playerNetServerHandler.sendPacketToPlayer(packet);
034 }
035 }
036
037 public static void sendPacketToAllAround(double X, double Y, double Z, double range, int dimensionId, Packet packet)
038 {
039 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
040 if (server != null)
041 {
042 server.getConfigurationManager().sendToAllNear(X, Y, Z, range, dimensionId, packet);
043 }
044 else
045 {
046 FMLLog.fine("Attempt to send packet to all around without a server instance available");
047 }
048 }
049
050 public static void sendPacketToAllInDimension(Packet packet, int dimId)
051 {
052 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
053 if (server != null)
054 {
055 server.getConfigurationManager().sendPacketToAllPlayersInDimension(packet, dimId);
056 }
057 else
058 {
059 FMLLog.fine("Attempt to send packet to all in dimension without a server instance available");
060 }
061 }
062
063 public static void sendPacketToAllPlayers(Packet packet)
064 {
065 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
066 if (server != null)
067 {
068 server.getConfigurationManager().sendPacketToAllPlayers(packet);
069 }
070 else
071 {
072 FMLLog.fine("Attempt to send packet to all in dimension without a server instance available");
073 }
074 }
075
076 public static Packet131MapData getTinyPacket(Object mod, short tag, byte[] data)
077 {
078 NetworkModHandler nmh = FMLNetworkHandler.instance().findNetworkModHandler(mod);
079 return new Packet131MapData((short) nmh.getNetworkId(), tag, data);
080 }
081 }