package appeng.api.me.util;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import appeng.api.me.tiles.IGridTileEntity;
/**
* ME Network, aka Grid related features and functionality.
*/
public class Grid
{
/**
* Attempts to find a grid interface for the specified location.
* @param w
* @param x
* @param y
* @param z
* @return interfaceForGrid
*/
public static IGridInterface getGridInterface(World w, int x, int y, int z)
{
IGridTileEntity te = getGridEntity(w, x, y, z);
if (te != null)
{
return te.getGrid();
}
return null;
}
/**
* Simple test to see if the tile at the specified location is in fact a grid entity.
* @param w
* @param x
* @param y
* @param z
* @return isTileGridEntity
*/
public static boolean isGridEntity(World w, int x, int y, int z)
{
return getGridEntity(w, x, y, z) != null;
}
/**
* Returns the grid entity at the given location, or null if its not a grid entity.
* @param w
* @param x
* @param y
* @param z
* @return gridEntity
*/
public static IGridTileEntity getGridEntity(World w, int x, int y, int z)
{
TileEntity te = w.getBlockTileEntity(x, y, z);
if (te instanceof IGridTileEntity)
{
return (IGridTileEntity)te;
}
return null;
}
/**
* Tests if the given grid entity is on a Network.
* @param w
* @param x
* @param y
* @param z
* @return isOnNetwork
*/
public static boolean isOnGrid(World w, int x, int y, int z)
{
IGridTileEntity te = getGridEntity(w, x, y, z);
if (te != null)
{
return te.getGrid() != null;
}
return false;
}
}