package mekanism.common.integration; import mekanism.api.MekanismConfig.general; import mekanism.api.energy.IEnergizedItem; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import ic2.api.item.IElectricItemManager; public class IC2ItemManager implements IElectricItemManager { public IEnergizedItem energizedItem; public static IC2ItemManager getManager(IEnergizedItem item) { IC2ItemManager manager = new IC2ItemManager(); manager.energizedItem = item; return manager; } @Override public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) { if(energizedItem.canReceive(itemStack)) { double energyNeeded = energizedItem.getMaxEnergy(itemStack)-energizedItem.getEnergy(itemStack); double energyToStore = Math.min(Math.min(amount* general.FROM_IC2, energizedItem.getMaxEnergy(itemStack)*0.01), energyNeeded); if(!simulate) { energizedItem.setEnergy(itemStack, energizedItem.getEnergy(itemStack) + energyToStore); } return (int)Math.round(energyToStore* general.TO_IC2); } return 0; } @Override public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean external, boolean simulate) { if(energizedItem.canSend(itemStack)) { double energyWanted = amount* general.FROM_IC2; double energyToGive = Math.min(Math.min(energyWanted, energizedItem.getMaxEnergy(itemStack)*0.01), energizedItem.getEnergy(itemStack)); if(!simulate) { energizedItem.setEnergy(itemStack, energizedItem.getEnergy(itemStack) - energyToGive); } return (int)Math.round(energyToGive* general.TO_IC2); } return 0; } @Override public boolean canUse(ItemStack itemStack, double amount) { return energizedItem.getEnergy(itemStack) >= amount* general.FROM_IC2; } @Override public double getCharge(ItemStack itemStack) { return (int)Math.round(energizedItem.getEnergy(itemStack)* general.TO_IC2); } @Override public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) { return false; } @Override public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) { } @Override public String getToolTip(ItemStack itemStack) { return null; } }