Finish base code for gas-based advanced machinery

This commit is contained in:
Aidan Brady 2014-01-16 20:35:05 -05:00
parent 4fb335b7d3
commit da6c0a2c90
11 changed files with 120 additions and 152 deletions

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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;

View file

@ -97,7 +97,7 @@ public class ContainerAdvancedElectricMachine extends Container
}
}
}
else if(tileEntity.getFuelTicks(slotStack) > 0)
else if(tileEntity.getItemGas(slotStack) != null)
{
if(slotID != 1)
{

View file

@ -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)
{

View file

@ -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:

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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;
}
}