package mekanism.api.energy; import net.minecraft.item.ItemStack; public class EnergizedItemManager { /** * Discharges an IEnergizedItem with the defined amount of energy. * @param itemStack - ItemStack to discharge * @param amount - amount of energy to discharge from the item, usually the total amount of energy needed in a TileEntity * @return amount of energy discharged */ public static double discharge(ItemStack itemStack, double amount) { if(itemStack != null) { if(itemStack.getItem() instanceof IEnergizedItem) { IEnergizedItem energizedItem = (IEnergizedItem)itemStack.getItem(); if(energizedItem.canSend(itemStack)) { double energyToUse = Math.min(energizedItem.getMaxTransfer(itemStack), Math.min(energizedItem.getEnergy(itemStack), amount)); energizedItem.setEnergy(itemStack, energizedItem.getEnergy(itemStack) - energyToUse); return energyToUse; } } } return 0; } /** * Charges an IEnergizedItem with the defined amount of energy. * @param itemStack - ItemStack to charge * @param amount - amount of energy to charge the item with, usually the total amount of energy stored in a TileEntity * @return amount of energy charged */ public static double charge(ItemStack itemStack, double amount) { if(itemStack != null) { if(itemStack.getItem() instanceof IEnergizedItem) { IEnergizedItem energizedItem = (IEnergizedItem)itemStack.getItem(); if(energizedItem.canReceive(itemStack)) { double energyToSend = Math.min(energizedItem.getMaxTransfer(itemStack), Math.min(energizedItem.getMaxEnergy(itemStack) - energizedItem.getEnergy(itemStack), amount)); energizedItem.setEnergy(itemStack, energizedItem.getEnergy(itemStack) + energyToSend); return energyToSend; } } } return 0; } }