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    }