From 6aa810d62a25122a92a74c557750e6018e970b8c Mon Sep 17 00:00:00 2001 From: Gunther De Wachter Date: Mon, 7 Aug 2017 10:15:26 +0200 Subject: [PATCH] Re-add a missing piece of IC2 integration code. This should fix a bunch of IC2 spam in the console and allow items to be charged in IC2 blocks. --- .../items/tools/powered/powersink/IC2.java | 250 +++++++++--------- .../tools/powered/powersink/RedstoneFlux.java | 2 +- 2 files changed, 125 insertions(+), 127 deletions(-) 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 5b3750a4..86818002 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/IC2.java +++ b/src/main/java/appeng/items/tools/powered/powersink/IC2.java @@ -1,126 +1,124 @@ -/// * -// * This file is part of Applied Energistics 2. -// * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. -// * -// * Applied Energistics 2 is free software: you can redistribute it and/or modify -// * it under the terms of the GNU Lesser General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * Applied Energistics 2 is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public License -// * along with Applied Energistics 2. If not, see . -// */ -// -// package appeng.items.tools.powered.powersink; -// -// -// 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.coremod.annotations.Integration.Interface; -// import appeng.coremod.annotations.Integration.InterfaceList; -// import appeng.coremod.annotations.Integration.Method; -// import appeng.integration.IntegrationType; -// -// -// @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; -// } -// } +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.items.tools.powered.powersink; + +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.coremod.annotations.Integration.Interface; +import appeng.coremod.annotations.Integration.InterfaceList; +import appeng.coremod.annotations.Integration.Method; +import appeng.integration.IntegrationType; + + +@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 b22e2d01..c238d833 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.integration.IntegrationType; @Interface( iface = "cofh.redstoneflux.api.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 ) {