60 lines
1.8 KiB
Java
60 lines
1.8 KiB
Java
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;
|
|
}
|
|
}
|