Charge bench now uses new power system, also uses old one

This commit is contained in:
Modmuss50 2015-10-14 21:42:45 +01:00
parent 9d824e76ca
commit 2d3c6a8dec
2 changed files with 210 additions and 4 deletions

View file

@ -0,0 +1,198 @@
package techreborn.powerSystem;
import cofh.api.energy.IEnergyContainerItem;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ic2.api.item.IElectricItem;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import techreborn.api.power.IEnergyInterfaceItem;
import techreborn.asm.Strippable;
import techreborn.config.ConfigTechReborn;
import java.util.List;
public abstract class PoweredPickaxe extends ItemPickaxe implements IEnergyInterfaceItem, IElectricItem, IEnergyContainerItem {
protected PoweredPickaxe(ToolMaterial toolMaterial) {
super(toolMaterial);
}
@SuppressWarnings(
{"rawtypes", "unchecked"})
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) {
ItemStack itemStack = new ItemStack(this, 1);
if (getChargedItem(itemStack) == this) {
ItemStack charged = new ItemStack(this, 1);
setEnergy(getMaxCharge(charged), charged);
itemList.add(charged);
}
if (getEmptyItem(itemStack) == this) {
itemList.add(new ItemStack(this, 1, getMaxDamage()));
}
}
//TechReborn
@Override
public double getEnergy(ItemStack stack) {
NBTTagCompound tagCompound = getOrCreateNbtData(stack);
if (tagCompound.hasKey("charge")) {
return tagCompound.getDouble("charge");
}
return 0;
}
@Override
public void setEnergy(double energy, ItemStack stack) {
NBTTagCompound tagCompound = getOrCreateNbtData(stack);
tagCompound.setDouble("charge", energy);
if (this.getEnergy(stack) > getMaxPower(stack)) {
this.setEnergy(getMaxPower(stack), stack);
} else if (this.getEnergy(stack) < 0) {
this.setEnergy(0, stack);
}
}
@Override
public double addEnergy(double energy, ItemStack stack) {
return addEnergy(energy, false, stack);
}
@Override
public double addEnergy(double energy, boolean simulate, ItemStack stack) {
double energyReceived = Math.min(getMaxPower(stack) - energy, Math.min(this.getMaxPower(stack), energy));
if (!simulate) {
setEnergy(energy + energyReceived, stack);
}
return energyReceived;
}
@Override
public boolean canUseEnergy(double input, ItemStack stack) {
return input <= getEnergy(stack);
}
@Override
public double useEnergy(double energy, ItemStack stack) {
return useEnergy(energy, false, stack);
}
@Override
public double useEnergy(double extract, boolean simulate, ItemStack stack) {
double energyExtracted = Math.min(extract, Math.min(this.getMaxTransfer(stack), extract));
if (!simulate) {
setEnergy(getEnergy(stack) - energyExtracted, stack);
}
return energyExtracted;
}
@Override
public boolean canAddEnergy(double energy, ItemStack stack) {
return this.getEnergy(stack) + energy <= getMaxPower(stack);
}
public static NBTTagCompound getOrCreateNbtData(ItemStack itemStack) {
NBTTagCompound tagCompound = itemStack.getTagCompound();
if (tagCompound == null) {
tagCompound = new NBTTagCompound();
itemStack.setTagCompound(tagCompound);
}
return tagCompound;
}
//End Techreborn
//IC2
@Strippable("mod:IC2")
@Override
public Item getChargedItem(ItemStack itemStack) {
return this;
}
@Strippable("mod:IC2")
@Override
public Item getEmptyItem(ItemStack itemStack) {
return this;
}
@Strippable("mod:IC2")
@Override
public double getMaxCharge(ItemStack itemStack) {
return getMaxPower(itemStack);
}
@Strippable("mod:IC2")
@Override
public int getTier(ItemStack itemStack) {
return getStackTeir(itemStack);
}
@Strippable("mod:IC2")
@Override
public double getTransferLimit(ItemStack itemStack) {
return getMaxTransfer(itemStack);
}
//IC2
//COFH
@Override
public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) {
if (!PowerSystem.RFPOWENET)
return 0;
if (!canAcceptEnergy(container)) {
return 0;
}
maxReceive *= ConfigTechReborn.euPerRF;
int energyReceived = Math.min(getMaxEnergyStored(container) - getEnergyStored(container), Math.min((int) this.getMaxTransfer(container) * ConfigTechReborn.euPerRF, maxReceive));
if (!simulate) {
setEnergy(getEnergy(container) + energyReceived, container);
}
return energyReceived / ConfigTechReborn.euPerRF;
}
@Override
public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) {
if (!PowerSystem.RFPOWENET)
return 0;
if (!canAcceptEnergy(container)) {
return 0;
}
maxExtract *= ConfigTechReborn.euPerRF;
int energyExtracted = Math.min(getEnergyStored(container), Math.min(maxExtract, maxExtract));
if (!simulate) {
setEnergy(getEnergy(container) - energyExtracted, container);
}
return energyExtracted / ConfigTechReborn.euPerRF;
}
@Override
public int getEnergyStored(ItemStack container) {
if (!PowerSystem.RFPOWENET)
return 0;
return ((int) getEnergy(container) / ConfigTechReborn.euPerRF);
}
@Override
public int getMaxEnergyStored(ItemStack container) {
if (!PowerSystem.RFPOWENET)
return 0;
return ((int) getMaxPower(container) / ConfigTechReborn.euPerRF);
}
//Cofh
}

View file

@ -1,6 +1,5 @@
package techreborn.tiles;
import ic2.api.energy.tile.IEnergyTile;
import ic2.api.item.ElectricItem;
import ic2.api.item.IElectricItem;
import ic2.api.tile.IWrenchable;
@ -10,11 +9,12 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import techreborn.api.power.IEnergyInterfaceItem;
import techreborn.init.ModBlocks;
import techreborn.powerSystem.TilePowerAcceptor;
import techreborn.util.Inventory;
public class TileChargeBench extends TilePowerAcceptor implements IWrenchable, IEnergyTile, IInventory, ISidedInventory {
public class TileChargeBench extends TilePowerAcceptor implements IWrenchable, IInventory, ISidedInventory {
public Inventory inventory = new Inventory(6, "TileChargeBench", 64);
public int capacity = 100000;
@ -29,12 +29,20 @@ public class TileChargeBench extends TilePowerAcceptor implements IWrenchable, I
for (int i = 0; i < 6; i++)
if (inventory.getStackInSlot(i) != null) {
if (inventory.getStackInSlot(i).getItem() instanceof IElectricItem) {
if(inventory.getStackInSlot(i).getItem() instanceof IEnergyInterfaceItem){
ItemStack stack = inventory.getStackInSlot(i);
double MaxCharge = ((IEnergyInterfaceItem) stack.getItem()).getMaxPower(stack);
double amount = ((IEnergyInterfaceItem) stack.getItem()).getMaxTransfer(stack);
double CurrentCharge = ((IEnergyInterfaceItem) stack.getItem()).getEnergy(stack);
if (CurrentCharge != MaxCharge && getEnergy() >= 0) {
((IEnergyInterfaceItem) stack.getItem()).addEnergy(MaxCharge - CurrentCharge, false, stack);
useEnergy(amount);
}
} else if (inventory.getStackInSlot(i).getItem() instanceof IElectricItem) {
ItemStack stack = inventory.getStackInSlot(i);
double MaxCharge = ((IElectricItem) stack.getItem()).getMaxCharge(stack);
double amount = ((IElectricItem) stack.getItem()).getTransferLimit(stack);
double CurrentCharge = ElectricItem.manager.getCharge(stack);
int teir = ((IElectricItem) stack.getItem()).getTier(stack);
if (CurrentCharge != MaxCharge && getEnergy() >= 0) {
ElectricItem.manager.charge(stack, MaxCharge - CurrentCharge, 3, false, false);
useEnergy(amount);