package buildcraft.api.items;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.BlockIndex;
import buildcraft.api.core.IBox;
import buildcraft.api.core.IZone;
/**
* Created by asie on 2/28/15.
*/
public interface IMapLocation extends INamedItem {
public enum MapLocationType {
CLEAN, SPOT, AREA, PATH, ZONE
}
MapLocationType getType(ItemStack stack);
/**
* This function can be used for SPOT types.
* @param stack
* @return The point representing the map location.
*/
BlockIndex getPoint(ItemStack stack);
/**
* This function can be used for SPOT and AREA types.
* @param stack
* @return The box representing the map location.
*/
IBox getBox(ItemStack stack);
/**
* This function can be used for SPOT, AREA and ZONE types.
* The PATH type needs to be handled separately.
* @param stack
* @return An IZone representing the map location - also an instance of
* IBox for SPOT and AREA types.
*/
IZone getZone(ItemStack stack);
/**
* This function can be used for SPOT and PATH types.
* @param stack
* @return A list of BlockIndexes representing the path the Map Location
* stores.
*/
List<BlockIndex> getPath(ItemStack stack);
/**
* This function can be used for SPOT types only.
* @param stack
* @return The side of the spot.
*/
ForgeDirection getPointSide(ItemStack stack);
}