diff --git a/src/main/java/appeng/items/tools/powered/powersink/IC2.java b/src/main/java/appeng/items/tools/powered/powersink/IC2.java index 7d306dbc2..00f352580 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/IC2.java +++ b/src/main/java/appeng/items/tools/powered/powersink/IC2.java @@ -19,126 +19,107 @@ package appeng.items.tools.powered.powersink; -//import java.util.Optional; -// -//import net.minecraft.entity.EntityLivingBase; -//import net.minecraft.item.Item; -//import net.minecraft.item.ItemStack; -// -//import ic2.api.item.IElectricItemManager; -//import ic2.api.item.ISpecialElectricItem; -// -//import appeng.api.config.PowerUnits; -//import appeng.integration.IntegrationType; -//import appeng.transformer.annotations.Integration.Interface; -//import appeng.transformer.annotations.Integration.InterfaceList; -//import appeng.transformer.annotations.Integration.Method; -// -// -//@InterfaceList( value = { @Interface( iface = "ic2.api.item.ISpecialElectricItem", iname = IntegrationType.IC2 ), @Interface( iface = "ic2.api.item.IElectricItemManager", iname = IntegrationType.IC2 ) } ) -//public abstract class IC2 extends AERootPoweredItem implements IElectricItemManager, ISpecialElectricItem -//{ -// public IC2( double powerCapacity, Optional subName ) -// { -// super( powerCapacity, subName ); -// } -// -// @Override -// public double charge( ItemStack is, double amount, int tier, boolean ignoreTransferLimit, boolean simulate ) -// { -// double addedAmt = amount; -// double limit = this.getTransferLimit( is ); -// -// if( !ignoreTransferLimit && amount > limit ) -// { -// addedAmt = limit; -// } -// -// return addedAmt - ( (int) this.injectExternalPower( PowerUnits.EU, is, addedAmt, simulate ) ); -// } -// -// @Override -// public double discharge( ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate ) -// { -// return 0; -// } -// -// @Override -// public double getCharge( ItemStack is ) -// { -// return (int) PowerUnits.AE.convertTo( PowerUnits.EU, this.getAECurrentPower( is ) ); -// } -// -// @Override -// public boolean canUse( ItemStack is, double amount ) -// { -// return this.getCharge( is ) > amount; -// } -// -// @Override -// public boolean use( ItemStack is, double amount, EntityLivingBase entity ) -// { -// if( this.canUse( is, amount ) ) -// { -// // use the power.. -// this.extractAEPower( is, PowerUnits.EU.convertTo( PowerUnits.AE, amount ) ); -// return true; -// } -// return false; -// } -// -// @Override -// public void chargeFromArmor( ItemStack itemStack, EntityLivingBase entity ) -// { -// // wtf? -// } -// -// @Override -// public String getToolTip( ItemStack itemStack ) -// { -// return null; -// } -// -// @Override -// public boolean canProvideEnergy( ItemStack itemStack ) -// { -// return false; -// } -// -// @Override -// public Item getChargedItem( ItemStack itemStack ) -// { -// return itemStack.getItem(); -// } -// -// @Override -// public Item getEmptyItem( ItemStack itemStack ) -// { -// return itemStack.getItem(); -// } -// -// @Override -// public double getMaxCharge( ItemStack itemStack ) -// { -// return PowerUnits.AE.convertTo( PowerUnits.EU, this.getAEMaxPower( itemStack ) ); -// } -// -// @Override -// public int getTier( ItemStack itemStack ) -// { -// return 1; -// } -// -// @Override -// public double getTransferLimit( ItemStack itemStack ) -// { -// return Math.max( 32, this.getMaxCharge( itemStack ) / 200 ); -// } -// -// @Override -// @Method( iname = IntegrationType.IC2 ) -// public IElectricItemManager getManager( ItemStack itemStack ) -// { -// return this; -// } -// } +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +import ic2.api.item.IElectricItemManager; +import ic2.api.item.ISpecialElectricItem; + +import appeng.api.config.PowerUnits; +import appeng.integration.IntegrationType; +import appeng.transformer.annotations.Integration.Interface; +import appeng.transformer.annotations.Integration.InterfaceList; +import appeng.transformer.annotations.Integration.Method; + + +@InterfaceList( value = { + @Interface( iface = "ic2.api.item.ISpecialElectricItem", iname = IntegrationType.IC2 ), + @Interface( iface = "ic2.api.item.IElectricItemManager", iname = IntegrationType.IC2 ) +} ) +public abstract class IC2 extends AERootPoweredItem implements IElectricItemManager, ISpecialElectricItem +{ + public IC2( double powerCapacity ) + { + super( powerCapacity ); + } + + @Override + public double charge( ItemStack is, double amount, int tier, boolean ignoreTransferLimit, boolean simulate ) + { + double addedAmt = amount; + double limit = this.getTransferLimit( is ); + + if( !ignoreTransferLimit && amount > limit ) + { + addedAmt = limit; + } + + return addedAmt - ( (int) this.injectExternalPower( PowerUnits.EU, is, addedAmt, simulate ) ); + } + + @Override + public double discharge( ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate ) + { + return 0; + } + + @Override + public double getCharge( ItemStack is ) + { + return (int) PowerUnits.AE.convertTo( PowerUnits.EU, this.getAECurrentPower( is ) ); + } + + @Override + public boolean canUse( ItemStack is, double amount ) + { + return this.getCharge( is ) > amount; + } + + @Override + public boolean use( ItemStack is, double amount, EntityLivingBase entity ) + { + if( this.canUse( is, amount ) ) + { + // use the power.. + this.extractAEPower( is, PowerUnits.EU.convertTo( PowerUnits.AE, amount ) ); + return true; + } + return false; + } + + @Override + public void chargeFromArmor( ItemStack itemStack, EntityLivingBase entity ) + { + // wtf? + } + + @Override + public String getToolTip( ItemStack itemStack ) + { + return null; + } + + @Override + public double getMaxCharge( ItemStack itemStack ) + { + return PowerUnits.AE.convertTo( PowerUnits.EU, this.getAEMaxPower( itemStack ) ); + } + + @Override + public int getTier( ItemStack itemStack ) + { + return 1; + } + + private double getTransferLimit( ItemStack itemStack ) + { + return Math.max( 32, this.getMaxCharge( itemStack ) / 200 ); + } + + @Override + @Method( iname = IntegrationType.IC2 ) + public IElectricItemManager getManager( ItemStack itemStack ) + { + return this; + } +} diff --git a/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java b/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java index 82a8eb34a..0792a0bd9 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java +++ b/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java @@ -29,7 +29,7 @@ import appeng.transformer.annotations.Integration.Interface; @Interface( iface = "cofh.api.energy.IEnergyContainerItem", iname = IntegrationType.RFItem ) -public abstract class RedstoneFlux extends AERootPoweredItem implements IEnergyContainerItem +public abstract class RedstoneFlux extends IC2 implements IEnergyContainerItem { public RedstoneFlux( final double powerCapacity ) {