Charge bench now uses new power system, also uses old one
This commit is contained in:
parent
9d824e76ca
commit
2d3c6a8dec
2 changed files with 210 additions and 4 deletions
198
src/main/java/techreborn/powerSystem/PoweredPickaxe.java
Normal file
198
src/main/java/techreborn/powerSystem/PoweredPickaxe.java
Normal 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
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package techreborn.tiles;
|
package techreborn.tiles;
|
||||||
|
|
||||||
import ic2.api.energy.tile.IEnergyTile;
|
|
||||||
import ic2.api.item.ElectricItem;
|
import ic2.api.item.ElectricItem;
|
||||||
import ic2.api.item.IElectricItem;
|
import ic2.api.item.IElectricItem;
|
||||||
import ic2.api.tile.IWrenchable;
|
import ic2.api.tile.IWrenchable;
|
||||||
|
@ -10,11 +9,12 @@ import net.minecraft.inventory.ISidedInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import techreborn.api.power.IEnergyInterfaceItem;
|
||||||
import techreborn.init.ModBlocks;
|
import techreborn.init.ModBlocks;
|
||||||
import techreborn.powerSystem.TilePowerAcceptor;
|
import techreborn.powerSystem.TilePowerAcceptor;
|
||||||
import techreborn.util.Inventory;
|
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 Inventory inventory = new Inventory(6, "TileChargeBench", 64);
|
||||||
public int capacity = 100000;
|
public int capacity = 100000;
|
||||||
|
@ -29,12 +29,20 @@ public class TileChargeBench extends TilePowerAcceptor implements IWrenchable, I
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
if (inventory.getStackInSlot(i) != null) {
|
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);
|
ItemStack stack = inventory.getStackInSlot(i);
|
||||||
double MaxCharge = ((IElectricItem) stack.getItem()).getMaxCharge(stack);
|
double MaxCharge = ((IElectricItem) stack.getItem()).getMaxCharge(stack);
|
||||||
double amount = ((IElectricItem) stack.getItem()).getTransferLimit(stack);
|
double amount = ((IElectricItem) stack.getItem()).getTransferLimit(stack);
|
||||||
double CurrentCharge = ElectricItem.manager.getCharge(stack);
|
double CurrentCharge = ElectricItem.manager.getCharge(stack);
|
||||||
int teir = ((IElectricItem) stack.getItem()).getTier(stack);
|
|
||||||
if (CurrentCharge != MaxCharge && getEnergy() >= 0) {
|
if (CurrentCharge != MaxCharge && getEnergy() >= 0) {
|
||||||
ElectricItem.manager.charge(stack, MaxCharge - CurrentCharge, 3, false, false);
|
ElectricItem.manager.charge(stack, MaxCharge - CurrentCharge, 3, false, false);
|
||||||
useEnergy(amount);
|
useEnergy(amount);
|
||||||
|
|
Loading…
Add table
Reference in a new issue