diff --git a/common/mekanism/client/gui/GuiAdvancedElectricMachine.java b/common/mekanism/client/gui/GuiAdvancedElectricMachine.java index ed964b8da..ac8f97903 100644 --- a/common/mekanism/client/gui/GuiAdvancedElectricMachine.java +++ b/common/mekanism/client/gui/GuiAdvancedElectricMachine.java @@ -64,7 +64,7 @@ public class GuiAdvancedElectricMachine extends GuiMekanism int displayInt; - displayInt = tileEntity.getScaledSecondaryEnergyLevel(12); + displayInt = tileEntity.getScaledGasLevel(12); drawTexturedModalRect(guiWidth + 61, guiHeight + 37 + 12 - displayInt, 176, 7 + 12 - displayInt, 5, displayInt); displayInt = tileEntity.getScaledProgress(24); diff --git a/common/mekanism/client/gui/GuiFactory.java b/common/mekanism/client/gui/GuiFactory.java index ff6064e97..ccb69b974 100644 --- a/common/mekanism/client/gui/GuiFactory.java +++ b/common/mekanism/client/gui/GuiFactory.java @@ -60,7 +60,7 @@ public class GuiFactory extends GuiMekanism if(xAxis >= 8 && xAxis <= 168 && yAxis >= 78 && yAxis <= 83) { - drawCreativeTabHoveringText(MekanismUtils.localize("gui.factory.secondaryEnergy") + ": " + tileEntity.secondaryEnergyStored, xAxis, yAxis); + drawCreativeTabHoveringText(MekanismUtils.localize("gui.factory.secondaryEnergy") + ": " + tileEntity.gasTank.getStored(), xAxis, yAxis); } super.drawGuiContainerForegroundLayer(mouseX, mouseY); @@ -131,7 +131,7 @@ public class GuiFactory extends GuiMekanism recipeFuelY += 15; } - displayInt = tileEntity.getScaledSecondaryEnergy(160); + displayInt = tileEntity.getScaledGasLevel(160); drawTexturedModalRect(guiWidth + 8, guiHeight + 78, 0, recipeFuelY, displayInt, 5); } } diff --git a/common/mekanism/common/IFactory.java b/common/mekanism/common/IFactory.java index 444a4e08d..7764f817a 100644 --- a/common/mekanism/common/IFactory.java +++ b/common/mekanism/common/IFactory.java @@ -1,5 +1,6 @@ package mekanism.common; +import mekanism.api.gas.GasStack; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -43,6 +44,7 @@ public interface IFactory private String sound; private ItemStack stack; private boolean usesFuel; + private TileEntityAdvancedElectricMachine cacheTile; public ItemStack getCopiedOutput(ItemStack input, boolean stackDecrease) { @@ -93,32 +95,37 @@ public interface IFactory return null; } - public int getFuelTicks(ItemStack itemstack) + public GasStack getItemGas(ItemStack itemstack) { if(usesFuel) { - MachineType type = MachineType.get(getStack().itemID, getStack().getItemDamage()); - TileEntityAdvancedElectricMachine machine = (TileEntityAdvancedElectricMachine)type.create(); - - return machine.getFuelTicks(itemstack); + return getTile().getItemGas(itemstack); } - return 0; + return null; } public int getSecondaryEnergyPerTick() { if(usesFuel) { - MachineType type = MachineType.get(getStack().itemID, getStack().getItemDamage()); - TileEntityAdvancedElectricMachine machine = (TileEntityAdvancedElectricMachine)type.create(); - - return machine.SECONDARY_ENERGY_PER_TICK; + return getTile().SECONDARY_ENERGY_PER_TICK; } return 0; } + public TileEntityAdvancedElectricMachine getTile() + { + if(cacheTile == null) + { + MachineType type = MachineType.get(getStack().itemID, getStack().getItemDamage()); + cacheTile = (TileEntityAdvancedElectricMachine)type.create(); + } + + return cacheTile; + } + public int getMaxSecondaryEnergy() { return 200; diff --git a/common/mekanism/common/inventory/container/ContainerAdvancedElectricMachine.java b/common/mekanism/common/inventory/container/ContainerAdvancedElectricMachine.java index 990e87543..a106f1035 100644 --- a/common/mekanism/common/inventory/container/ContainerAdvancedElectricMachine.java +++ b/common/mekanism/common/inventory/container/ContainerAdvancedElectricMachine.java @@ -97,7 +97,7 @@ public class ContainerAdvancedElectricMachine extends Container } } } - else if(tileEntity.getFuelTicks(slotStack) > 0) + else if(tileEntity.getItemGas(slotStack) != null) { if(slotID != 1) { diff --git a/common/mekanism/common/inventory/container/ContainerFactory.java b/common/mekanism/common/inventory/container/ContainerFactory.java index 15cb72866..da9648c50 100644 --- a/common/mekanism/common/inventory/container/ContainerFactory.java +++ b/common/mekanism/common/inventory/container/ContainerFactory.java @@ -163,7 +163,7 @@ public class ContainerFactory extends Container } } } - else if(RecipeType.values()[tileEntity.recipeType].getFuelTicks(slotStack) > 0) + else if(RecipeType.values()[tileEntity.recipeType].getItemGas(slotStack) != null) { if(slotID > tileEntity.inventory.length-1) { diff --git a/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java b/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java index 3be8891ba..bd5f55b6e 100644 --- a/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java +++ b/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java @@ -3,8 +3,11 @@ package mekanism.common.tile; import java.util.ArrayList; import mekanism.api.EnumColor; +import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; +import mekanism.api.gas.IGasHandler; +import mekanism.api.gas.ITubeConnection; import mekanism.common.Mekanism; import mekanism.common.SideData; import mekanism.common.recipe.RecipeHandler; @@ -16,22 +19,19 @@ import mekanism.common.util.MekanismUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.ForgeDirection; import com.google.common.io.ByteArrayDataInput; import dan200.computer.api.IComputerAccess; import dan200.computer.api.ILuaContext; -public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicMachine +public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicMachine implements IGasHandler, ITubeConnection { /** How much secondary energy (fuel) this machine uses per tick. */ public int SECONDARY_ENERGY_PER_TICK; - /** Maximum amount of secondary energy (fuel) this machine can hold. */ - public int MAX_SECONDARY_ENERGY; - - /** How much secondary energy (fuel) is stored in this machine. */ - public int secondaryEnergyStored = 0; + public int MAX_SECONDARY_ENERGY = 200; public GasTank gasTank; @@ -49,7 +49,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM * @param maxEnergy - maximum amount of energy this machine can hold. * @param maxSecondaryEnergy - maximum amount of secondary energy (fuel) this machine can hold. */ - public TileEntityAdvancedElectricMachine(String soundPath, String name, ResourceLocation location, double perTick, int secondaryPerTick, int ticksRequired, double maxEnergy, int maxSecondaryEnergy) + public TileEntityAdvancedElectricMachine(String soundPath, String name, ResourceLocation location, double perTick, int secondaryPerTick, int ticksRequired, double maxEnergy) { super(soundPath, name, location, perTick, ticksRequired, maxEnergy); @@ -62,12 +62,11 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM sideConfig = new byte[] {2, 1, 0, 4, 5, 3}; - gasTank = new GasTank(maxSecondaryEnergy); + gasTank = new GasTank(MAX_SECONDARY_ENERGY); inventory = new ItemStack[5]; SECONDARY_ENERGY_PER_TICK = secondaryPerTick; - MAX_SECONDARY_ENERGY = maxSecondaryEnergy; upgradeComponent = new TileComponentUpgrade(this, 4); ejectorComponent = new TileComponentEjector(this, sideOutputs.get(3)); @@ -78,7 +77,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM * @param itemstack - itemstack to check with * @return fuel ticks */ - public abstract int getFuelTicks(ItemStack itemstack); + public abstract GasStack getItemGas(ItemStack itemstack); @Override public void onUpdate() @@ -91,13 +90,13 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM handleSecondaryFuel(); - if(canOperate() && MekanismUtils.canFunction(this) && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) + if(canOperate() && MekanismUtils.canFunction(this) && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && gasTank.getStored() >= SECONDARY_ENERGY_PER_TICK) { setActive(true); operatingTicks++; - secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; + gasTank.draw(SECONDARY_ENERGY_PER_TICK, true); electricityStored -= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK); if(operatingTicks >= MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED)) @@ -127,19 +126,12 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { if(inventory[1] != null) { - int fuelTicks = getFuelTicks(inventory[1]); - int energyNeeded = MAX_SECONDARY_ENERGY - secondaryEnergyStored; + GasStack stack = getItemGas(inventory[1]); + int gasNeeded = gasTank.getNeeded(); - if(fuelTicks > 0 && fuelTicks <= energyNeeded) + if(stack != null && stack.amount <= gasNeeded) { - if(fuelTicks <= energyNeeded) - { - setSecondaryEnergy(secondaryEnergyStored + fuelTicks); - } - else if(fuelTicks > energyNeeded) - { - setSecondaryEnergy(secondaryEnergyStored + energyNeeded); - } + gasTank.receive(stack, true); inventory[1].stackSize--; @@ -172,7 +164,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM } else if(slotID == 1) { - return getFuelTicks(itemstack) > 0; + return getItemGas(itemstack) != null; } return false; @@ -233,7 +225,6 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM public void handlePacketData(ByteArrayDataInput dataStream) { super.handlePacketData(dataStream); - secondaryEnergyStored = dataStream.readInt(); if(dataStream.readBoolean()) { @@ -249,8 +240,6 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { super.getNetworkedData(data); - data.add(secondaryEnergyStored); - if(gasTank.getGas() != null) { data.add(true); @@ -269,7 +258,6 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { super.readFromNBT(nbtTags); - secondaryEnergyStored = nbtTags.getInteger("secondaryEnergyStored"); gasTank.read(nbtTags.getCompoundTag("gasTank")); } @@ -278,27 +266,17 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { super.writeToNBT(nbtTags); - nbtTags.setInteger("secondaryEnergyStored", secondaryEnergyStored); nbtTags.setCompoundTag("gasTank", gasTank.write(new NBTTagCompound())); } - /** - * Sets the secondary energy to a new amount - * @param energy - amount to store - */ - public void setSecondaryEnergy(int energy) - { - secondaryEnergyStored = Math.max(Math.min(energy, MAX_SECONDARY_ENERGY), 0); - } - /** * Gets the scaled secondary energy level for the GUI. * @param i - multiplier * @return scaled secondary energy */ - public int getScaledSecondaryEnergyLevel(int i) + public int getScaledGasLevel(int i) { - return secondaryEnergyStored*i / MAX_SECONDARY_ENERGY; + return gasTank.getStored()*i / gasTank.getMaxGas(); } @Override @@ -315,6 +293,36 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM return false; } + + @Override + public boolean canTubeConnect(ForgeDirection side) + { + return false; + } + + @Override + public int receiveGas(ForgeDirection side, GasStack stack) + { + return 0; + } + + @Override + public GasStack drawGas(ForgeDirection side, int amount) + { + return null; + } + + @Override + public boolean canReceiveGas(ForgeDirection side, Gas type) + { + return false; + } + + @Override + public boolean canDrawGas(ForgeDirection side, Gas type) + { + return false; + } @Override public String[] getMethodNames() @@ -330,7 +338,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM case 0: return new Object[] {getEnergy()}; case 1: - return new Object[] {secondaryEnergyStored}; + return new Object[] {gasTank.getStored()}; case 2: return new Object[] {operatingTicks}; case 3: diff --git a/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java b/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java index f9a6f6ca0..6015621ad 100644 --- a/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java @@ -21,7 +21,7 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr { public TileEntityChemicalInjectionChamber() { - super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", new ResourceLocation("mekanism", "gui/GuiChemicalInjectionChamber.png"), Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy, 1200); + super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", new ResourceLocation("mekanism", "gui/GuiChemicalInjectionChamber.png"), Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy); } @Override @@ -31,13 +31,13 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr } @Override - public int getFuelTicks(ItemStack itemstack) + public GasStack getItemGas(ItemStack itemstack) { - if(MekanismUtils.getOreDictName(itemstack).contains("dustSulfur")) return 5; + if(MekanismUtils.getOreDictName(itemstack).contains("dustSulfur")) return new GasStack(GasRegistry.getGas("sulfuricAcid"), 2); if(itemstack.itemID == Mekanism.GasTank.blockID && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null && - ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return 1; + ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return new GasStack(GasRegistry.getGas("sulfuricAcid"), 1); - return 0; + return null; } @Override @@ -45,9 +45,7 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr { if(stack.getGas() == GasRegistry.getGas("sulfuricAcid")) { - int toUse = Math.min(MAX_SECONDARY_ENERGY-secondaryEnergyStored, stack.amount); - secondaryEnergyStored += toUse; - return toUse; + return gasTank.receive(stack, true); } return 0; @@ -62,10 +60,10 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr @Override public void handleSecondaryFuel() { - if(inventory[1] != null && secondaryEnergyStored < MAX_SECONDARY_ENERGY && inventory[1].getItem() instanceof IGasItem) + if(inventory[1] != null && gasTank.getNeeded() > 0 && inventory[1].getItem() instanceof IGasItem) { - GasStack removed = GasTransmission.removeGas(inventory[1], GasRegistry.getGas("sulfuricAcid"), MAX_SECONDARY_ENERGY-secondaryEnergyStored); - setSecondaryEnergy(secondaryEnergyStored + (removed != null ? removed.amount : 0)); + GasStack removed = GasTransmission.removeGas(inventory[1], GasRegistry.getGas("sulfuricAcid"), gasTank.getNeeded()); + gasTank.receive(removed, true); return; } @@ -77,16 +75,4 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr { return true; } - - @Override - public GasStack drawGas(ForgeDirection side, int amount) - { - return null; - } - - @Override - public boolean canDrawGas(ForgeDirection side, Gas type) - { - return false; - } } diff --git a/common/mekanism/common/tile/TileEntityCombiner.java b/common/mekanism/common/tile/TileEntityCombiner.java index f37806a5c..f7776976f 100644 --- a/common/mekanism/common/tile/TileEntityCombiner.java +++ b/common/mekanism/common/tile/TileEntityCombiner.java @@ -2,6 +2,8 @@ package mekanism.common.tile; import java.util.Map; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -14,7 +16,7 @@ public class TileEntityCombiner extends TileEntityAdvancedElectricMachine { public TileEntityCombiner() { - super("Combiner.ogg", "Combiner", new ResourceLocation("mekanism", "gui/GuiCombiner.png"), Mekanism.combinerUsage, 1, 200, MachineType.COMBINER.baseEnergy, 200); + super("Combiner.ogg", "Combiner", new ResourceLocation("mekanism", "gui/GuiCombiner.png"), Mekanism.combinerUsage, 1, 200, MachineType.COMBINER.baseEnergy); } @Override @@ -24,13 +26,13 @@ public class TileEntityCombiner extends TileEntityAdvancedElectricMachine } @Override - public int getFuelTicks(ItemStack itemstack) + public GasStack getItemGas(ItemStack itemstack) { if(itemstack.getItem() instanceof ItemBlock && itemstack.itemID == Block.cobblestone.blockID) { - return 200; + return new GasStack(GasRegistry.getGas("liquidStone"), 200); } - return 0; + return null; } } diff --git a/common/mekanism/common/tile/TileEntityFactory.java b/common/mekanism/common/tile/TileEntityFactory.java index aa934eebb..e24906b95 100644 --- a/common/mekanism/common/tile/TileEntityFactory.java +++ b/common/mekanism/common/tile/TileEntityFactory.java @@ -88,8 +88,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip public boolean sorting; - public int secondaryEnergyStored; - /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; @@ -191,8 +189,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip inventory[2] = null; inventory[3] = getMachineStack(); - recipeType = toSet.ordinal(); - setSecondaryEnergy(0); + gasTank.setGas(null); worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType().blockID); @@ -209,12 +206,12 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip for(int process = 0; process < tier.processes; process++) { - if(MekanismUtils.canFunction(this) && canOperate(getInputSlot(process), getOutputSlot(process)) && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && secondaryEnergyStored >= getSecondaryEnergyPerTick()) + if(MekanismUtils.canFunction(this) && canOperate(getInputSlot(process), getOutputSlot(process)) && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && gasTank.getStored() >= getSecondaryEnergyPerTick()) { if((progress[process]+1) < MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED)) { progress[process]++; - secondaryEnergyStored -= getSecondaryEnergyPerTick(); + gasTank.draw(getSecondaryEnergyPerTick(), true); electricityStored -= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK); } else if((progress[process]+1) >= MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED)) @@ -222,7 +219,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip operate(getInputSlot(process), getOutputSlot(process)); progress[process] = 0; - secondaryEnergyStored -= getSecondaryEnergyPerTick(); + gasTank.draw(getSecondaryEnergyPerTick(), true); electricityStored -= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK); } } @@ -244,7 +241,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip } } - if(MekanismUtils.canFunction(this) && hasOperation && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && secondaryEnergyStored >= getSecondaryEnergyPerTick()) + if(MekanismUtils.canFunction(this) && hasOperation && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_PER_TICK) && gasTank.getStored() >= getSecondaryEnergyPerTick()) { setActive(true); } @@ -349,14 +346,14 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip public void handleSecondaryFuel() { - if(inventory[4] != null && RecipeType.values()[recipeType].usesFuel() && secondaryEnergyStored < getMaxSecondaryEnergy()) + if(inventory[4] != null && RecipeType.values()[recipeType].usesFuel() && gasTank.getStored() < getMaxSecondaryEnergy()) { if(recipeType == RecipeType.PURIFYING.ordinal()) { if(inventory[4].getItem() instanceof IGasItem) { - GasStack removed = GasTransmission.removeGas(inventory[4], GasRegistry.getGas("oxygen"), getMaxSecondaryEnergy()-secondaryEnergyStored); - setSecondaryEnergy(secondaryEnergyStored + (removed != null ? removed.amount : 0)); + GasStack removed = GasTransmission.removeGas(inventory[4], GasRegistry.getGas("oxygen"), gasTank.getNeeded()); + gasTank.receive(removed, true); return; } @@ -365,26 +362,19 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip { if(inventory[4].getItem() instanceof IGasItem) { - GasStack removed = GasTransmission.removeGas(inventory[4], GasRegistry.getGas("sulfuricAcid"), getMaxSecondaryEnergy()-secondaryEnergyStored); - setSecondaryEnergy(secondaryEnergyStored + (removed != null ? removed.amount : 0)); + GasStack removed = GasTransmission.removeGas(inventory[4], GasRegistry.getGas("sulfuricAcid"), gasTank.getNeeded()); + gasTank.receive(removed, true); return; } } - int fuelTicks = RecipeType.values()[recipeType].getFuelTicks(inventory[4]); - int energyNeeded = getMaxSecondaryEnergy() - secondaryEnergyStored; + GasStack stack = RecipeType.values()[recipeType].getItemGas(inventory[4]); + int gasNeeded = gasTank.getNeeded(); - if(fuelTicks > 0 && fuelTicks <= energyNeeded) + if(stack != null && stack.amount <= gasNeeded) { - if(fuelTicks <= energyNeeded) - { - setSecondaryEnergy(secondaryEnergyStored + fuelTicks); - } - else if(fuelTicks > energyNeeded) - { - setSecondaryEnergy(secondaryEnergyStored + energyNeeded); - } + gasTank.receive(stack, true); inventory[4].stackSize--; @@ -471,7 +461,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip } else if(slotID == 4) { - return RecipeType.values()[recipeType].getFuelTicks(itemstack) > 0; + return RecipeType.values()[recipeType].getItemGas(itemstack) != null; } return false; @@ -493,9 +483,9 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip return progress[process]*i / MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED); } - public int getScaledSecondaryEnergy(int i) + public int getScaledGasLevel(int i) { - return secondaryEnergyStored*i / getMaxSecondaryEnergy(); + return gasTank.getStored()*i / gasTank.getMaxGas(); } public int getScaledRecipeProgress(int i) @@ -557,11 +547,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip ejectorComponent.onOutput(); } - public void setSecondaryEnergy(int energy) - { - secondaryEnergyStored = Math.max(Math.min(energy, getMaxSecondaryEnergy()), 0); - } - @Override public void handlePacketData(ByteArrayDataInput dataStream) { @@ -583,7 +568,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip recipeType = dataStream.readInt(); recipeTicks = dataStream.readInt(); controlType = RedstoneControl.values()[dataStream.readInt()]; - secondaryEnergyStored = dataStream.readInt(); sorting = dataStream.readBoolean(); for(int i = 0; i < tier.processes; i++) @@ -621,7 +605,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip recipeType = nbtTags.getInteger("recipeType"); recipeTicks = nbtTags.getInteger("recipeTicks"); controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; - secondaryEnergyStored = nbtTags.getInteger("secondaryEnergyStored"); sorting = nbtTags.getBoolean("sorting"); for(int i = 0; i < tier.processes; i++) @@ -649,7 +632,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip nbtTags.setInteger("recipeType", recipeType); nbtTags.setInteger("recipeTicks", recipeTicks); nbtTags.setInteger("controlType", controlType.ordinal()); - nbtTags.setInteger("secondaryEnergyStored", secondaryEnergyStored); nbtTags.setBoolean("sorting", sorting); for(int i = 0; i < tier.processes; i++) @@ -676,7 +658,6 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip data.add(recipeType); data.add(recipeTicks); data.add(controlType.ordinal()); - data.add(secondaryEnergyStored); data.add(sorting); data.add(progress); data.add(sideConfig); @@ -924,9 +905,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip if(recipeType == RecipeType.PURIFYING.ordinal() && stack.getGas() == GasRegistry.getGas("oxygen") || recipeType == RecipeType.INJECTING.ordinal() && stack.getGas() == GasRegistry.getGas("sulfuricAcid")) { - int toUse = Math.min(getMaxSecondaryEnergy()-secondaryEnergyStored, stack.amount); - secondaryEnergyStored += toUse; - return toUse; + return gasTank.receive(stack, true); } return 0; diff --git a/common/mekanism/common/tile/TileEntityOsmiumCompressor.java b/common/mekanism/common/tile/TileEntityOsmiumCompressor.java index 9f737babb..43f586400 100644 --- a/common/mekanism/common/tile/TileEntityOsmiumCompressor.java +++ b/common/mekanism/common/tile/TileEntityOsmiumCompressor.java @@ -2,6 +2,8 @@ package mekanism.common.tile; import java.util.Map; +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -13,7 +15,7 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin { public TileEntityOsmiumCompressor() { - super("Compressor.ogg", "OsmiumCompressor", new ResourceLocation("mekanism", "gui/GuiCompressor.png"), Mekanism.osmiumCompressorUsage, 1, 200, MachineType.OSMIUM_COMPRESSOR.baseEnergy, 200); + super("Compressor.ogg", "OsmiumCompressor", new ResourceLocation("mekanism", "gui/GuiCompressor.png"), Mekanism.osmiumCompressorUsage, 1, 200, MachineType.OSMIUM_COMPRESSOR.baseEnergy); } @Override @@ -23,7 +25,7 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin } @Override - public int getFuelTicks(ItemStack itemstack) + public GasStack getItemGas(ItemStack itemstack) { int amount = 0; @@ -31,8 +33,7 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin { if(ore.isItemEqual(itemstack)) { - amount = 200; - break; + return new GasStack(GasRegistry.getGas("liquidOsmium"), 200); } } @@ -40,11 +41,10 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin { if(ore.isItemEqual(itemstack)) { - amount = 1800; - break; + return new GasStack(GasRegistry.getGas("liquidOsmium"), 1800); } } - return amount; + return null; } } diff --git a/common/mekanism/common/tile/TileEntityPurificationChamber.java b/common/mekanism/common/tile/TileEntityPurificationChamber.java index 6d962ddcb..e180207ee 100644 --- a/common/mekanism/common/tile/TileEntityPurificationChamber.java +++ b/common/mekanism/common/tile/TileEntityPurificationChamber.java @@ -21,7 +21,7 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac { public TileEntityPurificationChamber() { - super("PurificationChamber.ogg", "PurificationChamber", new ResourceLocation("mekanism", "gui/GuiPurificationChamber.png"), Mekanism.purificationChamberUsage, 1, 200, MachineType.PURIFICATION_CHAMBER.baseEnergy, 1200); + super("PurificationChamber.ogg", "PurificationChamber", new ResourceLocation("mekanism", "gui/GuiPurificationChamber.png"), Mekanism.purificationChamberUsage, 1, 200, MachineType.PURIFICATION_CHAMBER.baseEnergy); } @Override @@ -31,13 +31,13 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac } @Override - public int getFuelTicks(ItemStack itemstack) + public GasStack getItemGas(ItemStack itemstack) { - if(itemstack.isItemEqual(new ItemStack(Item.flint))) return 300; + if(itemstack.isItemEqual(new ItemStack(Item.flint))) return new GasStack(GasRegistry.getGas("oxygen"), 10); if(itemstack.itemID == Mekanism.GasTank.blockID && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null && - ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("oxygen")) return 1; + ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("oxygen")) return new GasStack(GasRegistry.getGas("oxygen"), 1); - return 0; + return null; } @Override @@ -45,9 +45,7 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac { if(stack.getGas() == GasRegistry.getGas("oxygen")) { - int toUse = Math.min(MAX_SECONDARY_ENERGY-secondaryEnergyStored, stack.amount); - secondaryEnergyStored += toUse; - return toUse; + return gasTank.receive(stack, true); } return 0; @@ -62,10 +60,10 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac @Override public void handleSecondaryFuel() { - if(inventory[1] != null && secondaryEnergyStored < MAX_SECONDARY_ENERGY && inventory[1].getItem() instanceof IGasItem) + if(inventory[1] != null && gasTank.getNeeded() > 0 && inventory[1].getItem() instanceof IGasItem) { - GasStack removed = GasTransmission.removeGas(inventory[1], GasRegistry.getGas("oxygen"), MAX_SECONDARY_ENERGY-secondaryEnergyStored); - setSecondaryEnergy(secondaryEnergyStored + (removed != null ? removed.amount : 0)); + GasStack removed = GasTransmission.removeGas(inventory[1], GasRegistry.getGas("oxygen"), gasTank.getNeeded()); + gasTank.receive(removed, true); return; } @@ -77,16 +75,4 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac { return true; } - - @Override - public GasStack drawGas(ForgeDirection side, int amount) - { - return null; - } - - @Override - public boolean canDrawGas(ForgeDirection side, Gas type) - { - return false; - } }