001/* 002 * Forge Mod Loader 003 * Copyright (c) 2012-2013 cpw. 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser Public License v2.1 006 * which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 008 * 009 * Contributors: 010 * cpw - implementation 011 */ 012 013package cpw.mods.fml.common.network; 014 015import net.minecraft.entity.player.EntityPlayerMP; 016import net.minecraft.network.packet.Packet; 017import net.minecraft.network.packet.Packet131MapData; 018import net.minecraft.network.packet.Packet250CustomPayload; 019import net.minecraft.server.MinecraftServer; 020import cpw.mods.fml.common.FMLCommonHandler; 021import cpw.mods.fml.common.FMLLog; 022 023/** 024 * A simple utility class to send packet 250 packets around the place 025 * 026 * @author cpw 027 * 028 */ 029public class PacketDispatcher 030{ 031 public static Packet250CustomPayload getPacket(String type, byte[] data) 032 { 033 return new Packet250CustomPayload(type, data); 034 } 035 036 public static void sendPacketToServer(Packet packet) 037 { 038 FMLCommonHandler.instance().getSidedDelegate().sendPacket(packet); 039 } 040 041 public static void sendPacketToPlayer(Packet packet, Player player) 042 { 043 if (player instanceof EntityPlayerMP) 044 { 045 ((EntityPlayerMP)player).playerNetServerHandler.sendPacketToPlayer(packet); 046 } 047 } 048 049 public static void sendPacketToAllAround(double X, double Y, double Z, double range, int dimensionId, Packet packet) 050 { 051 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); 052 if (server != null) 053 { 054 server.getConfigurationManager().sendToAllNear(X, Y, Z, range, dimensionId, packet); 055 } 056 else 057 { 058 FMLLog.fine("Attempt to send packet to all around without a server instance available"); 059 } 060 } 061 062 public static void sendPacketToAllInDimension(Packet packet, int dimId) 063 { 064 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); 065 if (server != null) 066 { 067 server.getConfigurationManager().sendPacketToAllPlayersInDimension(packet, dimId); 068 } 069 else 070 { 071 FMLLog.fine("Attempt to send packet to all in dimension without a server instance available"); 072 } 073 } 074 075 public static void sendPacketToAllPlayers(Packet packet) 076 { 077 MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); 078 if (server != null) 079 { 080 server.getConfigurationManager().sendPacketToAllPlayers(packet); 081 } 082 else 083 { 084 FMLLog.fine("Attempt to send packet to all in dimension without a server instance available"); 085 } 086 } 087 088 public static Packet131MapData getTinyPacket(Object mod, short tag, byte[] data) 089 { 090 NetworkModHandler nmh = FMLNetworkHandler.instance().findNetworkModHandler(mod); 091 return new Packet131MapData((short) nmh.getNetworkId(), tag, data); 092 } 093}