package openmods.network.targets;
import com.google.common.base.Preconditions;
import cpw.mods.fml.common.network.handshake.NetworkDispatcher;
import cpw.mods.fml.relauncher.Side;
import java.util.Collection;
import java.util.Set;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.world.WorldServer;
import openmods.network.IPacketTargetSelector;
import openmods.utils.NetUtils;
public class SelectEntityWatchers implements IPacketTargetSelector<Entity> {
public static final IPacketTargetSelector<Entity> INSTANCE = new SelectEntityWatchers();
@Override
public boolean isAllowedOnSide(Side side) {
return side == Side.SERVER;
}
@Override
public void listDispatchers(Entity entity, Collection<NetworkDispatcher> result) {
Preconditions.checkArgument(entity.worldObj instanceof WorldServer, "Invalid side");
WorldServer server = (WorldServer)entity.worldObj;
Set<EntityPlayerMP> players = NetUtils.getPlayersWatchingEntity(server, entity.getEntityId());
for (EntityPlayerMP player : players) {
NetworkDispatcher dispatcher = NetUtils.getPlayerDispatcher(player);
result.add(dispatcher);
}
}
@Override
public Entity castArg(Object arg) {
return (Entity)arg;
}
}