package openmods.network.targets;
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.player.EntityPlayerMP;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager;
import openmods.network.DimCoord;
import openmods.network.IPacketTargetSelector;
import openmods.utils.NetUtils;
public class SelectChunkWatchers implements IPacketTargetSelector<DimCoord> {
public static final IPacketTargetSelector<DimCoord> INSTANCE = new SelectChunkWatchers();
@Override
public boolean isAllowedOnSide(Side side) {
return side == Side.SERVER;
}
@Override
public void listDispatchers(DimCoord coord, Collection<NetworkDispatcher> result) {
WorldServer server = DimensionManager.getWorld(coord.dimension);
Set<EntityPlayerMP> players = NetUtils.getPlayersWatchingBlock(server, coord.x, coord.z);
for (EntityPlayerMP player : players) {
NetworkDispatcher dispatcher = NetUtils.getPlayerDispatcher(player);
result.add(dispatcher);
}
}
@Override
public DimCoord castArg(Object arg) {
return (DimCoord)arg;
}
}