package ic2.api.energy.tile; import net.minecraftforge.common.ForgeDirection; /** * Allows a tile entity (mostly a machine) to receive energy. * * See ic2/api/energy/usage.txt for an overall description of the energy net api. */ public interface IEnergySink extends IEnergyAcceptor { /** * Determine how much energy the sink accepts. * * This value is unrelated to getMaxSafeInput(). * * Make sure that injectEnergy() does accepts energy if demandsEnergy() returns anything > 0. * * @return max accepted input in eu */ double demandedEnergyUnits(); /** * Transfer energy to the sink. * * It's highly recommended to accept all energy by letting the internal buffer overflow to * increase the performance and accuracy of the distribution simulation. * * @param directionFrom direction from which the energy comes from * @param amount energy to be transferred * @return Energy not consumed (leftover) */ double injectEnergyUnits(ForgeDirection directionFrom, double amount); /** * Determine the amount of eu which can be safely injected into the specific energy sink without exploding. * * Typical values are 32 for LV, 128 for MV, 512 for HV and 2048 for EV. A value of Integer.MAX_VALUE indicates no * limit. * * This value is unrelated to demandsEnergy(). * * @return max safe input in eu */ int getMaxSafeInput(); }