| package ic2.api.energy.tile; |
| |
| import net.minecraftforge.common.util.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. |
| * |
| * @note Modifying the energy net from this method is disallowed. |
| * |
| * @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(). |
| * |
| * @note Modifying the energy net from this method is disallowed. |
| * |
| * @return max safe input in eu |
| */ |
| int getMaxSafeInput(); |
| } |
| |