package openmods.utils;
import com.google.common.base.Preconditions;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import java.util.List;
import net.minecraft.command.IEntitySelector;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import openmods.OpenMods;
public class WorldUtils {
@SuppressWarnings("unchecked")
public static <T extends Entity> List<T> getEntitiesWithinAABB(World world, Class<? extends T> cls, AxisAlignedBB aabb) {
return world.getEntitiesWithinAABB(cls, aabb);
}
@SuppressWarnings("unchecked")
public static <T extends Entity> List<T> getEntitiesWithinAABB(World world, Class<? extends T> cls, AxisAlignedBB aabb, IEntitySelector selector) {
return world.selectEntitiesWithinAABB(cls, aabb, selector);
}
@SuppressWarnings("unchecked")
public static List<Entity> getEntitiesWithinAABBExcluding(Entity excluding, World world, AxisAlignedBB aabb) {
return world.getEntitiesWithinAABBExcludingEntity(excluding, aabb);
}
@SuppressWarnings("unchecked")
public static List<Entity> getEntitiesWithinAABB(Entity excluding, World world, AxisAlignedBB aabb, IEntitySelector selector) {
return world.getEntitiesWithinAABBExcludingEntity(excluding, aabb, selector);
}
public static final IEntitySelector NON_PLAYER = new IEntitySelector() {
@Override
public boolean isEntityApplicable(Entity entity) {
return !(entity instanceof EntityPlayer);
}
};
public static World getWorld(int dimensionId) {
World result;
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
result = OpenMods.proxy.getServerWorld(dimensionId);
} else {
result = OpenMods.proxy.getClientWorld();
Preconditions.checkArgument(result.provider.dimensionId == dimensionId, "Invalid client dimension id %s", dimensionId);
}
Preconditions.checkNotNull(result, "Invalid world dimension %s", dimensionId);
return result;
}
public static boolean isTileEntityValid(TileEntity te) {
if (te.isInvalid()) return false;
final World world = te.getWorldObj();
return (world != null)? world.blockExists(te.xCoord, te.yCoord, te.zCoord) : false;
}
}