/** * This class was created by <Vazkii>. It's distributed as * part of the Botania Mod. Get the Source Code in github: * https://github.com/Vazkii/Botania * * Botania is Open Source and distributed under the * Botania License: http://botaniamod.net/license.php * * File Created @ [Aug 21, 2014, 5:44:13 PM (GMT)] */ package vazkii.botania.api.mana.spark; import net.minecraft.item.ItemStack; import vazkii.botania.api.mana.IManaReceiver; /** * A TileEntity that implements this can have a Spark attached to it. * For the Spark to be allowed to have upgrades, it needs to be an IManaPool. */ public interface ISparkAttachable extends IManaReceiver { /** * Can this block have a Spark attached to it. Note that this will not * unattach the Spark if it's changed later. */ public boolean canAttachSpark(ItemStack stack); /** * Called when the Spark is attached. */ public void attachSpark(ISparkEntity entity); /** * Returns how much space for mana is available in this block, normally the total - the current. * Should NEVER return negative values. Make sure to check against that. */ public int getAvailableSpaceForMana(); /** * Gets the Spark that is attached to this block. A common implementation is * to check for Spark entities above: * List<ISparkEntity> sparks = worldObj.getEntitiesWithinAABB(ISparkEntity.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 2, zCoord + 1)); if(sparks.size() == 1) { Entity e = (Entity) sparks.get(0); return (ISparkEntity) e; } return null; */ public ISparkEntity getAttachedSpark(); /** * Return true if this Tile no longer requires mana and all Sparks * transferring mana to it should cancel their transfer. */ public boolean areIncomingTranfersDone(); }