package thermalexpansion.api.item; import net.minecraft.item.ItemStack; /** * Implement this interface on Item classes that support external manipulation of their internal * energy storages. This interface does not provide methods for the underlying internal energy * usage. */ public interface IChargeableItem { /** * Adds energy to an item. Returns the quantity of energy that was accepted. This should always * return 0 if the item cannot be externally charged. * * @param theItem ItemStack to be charged. * @param energy Maximum amount of energy to be sent into the item. * @param doReceive If false, the charge will only be simulated. * @return Amount of energy that was accepted by the item. */ public float receiveEnergy(ItemStack theItem, float energy, boolean doReceive); /** * Removes energy from an item. Returns the quantity of energy that was removed. This should * always return 0 if the item cannot be externally discharged. * * @param theItem ItemStack to be discharged. * @param energy Maximum amount of energy to be removed from the item. * @param doTransfer If false, the discharge will only be simulated. * @return Amount of energy that was removed from the item. */ public float transferEnergy(ItemStack theItem, float energy, boolean doTransfer); /** * Get the amount of energy currently stored in the item. */ public float getEnergyStored(ItemStack theItem); /** * Get the max amount of energy that can be stored in the item. */ public float getMaxEnergyStored(ItemStack theItem); }