From 81b5724c53170ea1f29b92dbd09c27fb64cacd5c Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Fri, 20 Mar 2015 22:54:48 -0500 Subject: [PATCH] Self-merged Chemical Infuser fix --- .../recipe/inputs/ChemicalPairInput.java | 23 ++++++++++++------- .../machines/ChemicalInfuserRecipe.java | 9 ++++---- .../common/recipe/outputs/ChanceOutput.java | 12 ++++++++-- .../tile/TileEntityChemicalInfuser.java | 14 +++++++---- 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/main/java/mekanism/common/recipe/inputs/ChemicalPairInput.java b/src/main/java/mekanism/common/recipe/inputs/ChemicalPairInput.java index 0019ec46b..fa802e627 100644 --- a/src/main/java/mekanism/common/recipe/inputs/ChemicalPairInput.java +++ b/src/main/java/mekanism/common/recipe/inputs/ChemicalPairInput.java @@ -37,25 +37,32 @@ public class ChemicalPairInput extends MachineInput public ChemicalPairInput() {} - public boolean useGas(GasTank leftTank, GasTank rightTank, boolean deplete) + public boolean useGas(GasTank leftTank, GasTank rightTank, boolean deplete, int scale) { + int leftAmount = leftGas.amount * scale; + int rightAmount = rightGas.amount * scale; + if(leftTank.canDraw(leftGas.getGas()) && rightTank.canDraw(rightGas.getGas())) { - if(leftTank.getStored() >= leftGas.amount && rightTank.getStored() >= rightGas.amount) + if(leftTank.getStored() >= leftAmount && rightTank.getStored() >= rightAmount) { - leftTank.draw(leftGas.amount, deplete); - rightTank.draw(rightGas.amount, deplete); + leftTank.draw(leftAmount, deplete); + rightTank.draw(rightAmount, deplete); + return true; } - } else if(leftTank.canDraw(rightGas.getGas()) && rightTank.canDraw(leftGas.getGas())) + } + else if(leftTank.canDraw(rightGas.getGas()) && rightTank.canDraw(leftGas.getGas())) { - if(leftTank.getStored() >= rightGas.amount && rightTank.getStored() >= leftGas.amount) + if(leftTank.getStored() >= rightAmount && rightTank.getStored() >= leftAmount) { - leftTank.draw(rightGas.amount, deplete); - rightTank.draw(leftGas.amount, deplete); + leftTank.draw(rightAmount, deplete); + rightTank.draw(leftAmount, deplete); + return true; } } + return false; } diff --git a/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java b/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java index 25f93cf36..436d151dd 100644 --- a/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java +++ b/src/main/java/mekanism/common/recipe/machines/ChemicalInfuserRecipe.java @@ -17,6 +17,7 @@ public class ChemicalInfuserRecipe extends MachineRecipe inventory[primaryIndex] = primaryOutput.copy(); } return true; - } else if(inventory[primaryIndex].isItemEqual(primaryOutput) && inventory[primaryIndex].stackSize + primaryOutput.stackSize <= inventory[primaryIndex].getMaxStackSize()) + } + else if(inventory[primaryIndex].isItemEqual(primaryOutput) && inventory[primaryIndex].stackSize + primaryOutput.stackSize <= inventory[primaryIndex].getMaxStackSize()) { if(doEmit) { inventory[primaryIndex].stackSize += primaryOutput.stackSize; } + return true; } + return false; } @@ -83,21 +86,26 @@ public class ChanceOutput extends MachineOutput { inventory[secondaryIndex] = secondaryOutput.copy(); } + return true; - } else if(inventory[secondaryIndex].isItemEqual(secondaryOutput) && inventory[secondaryIndex].stackSize + primaryOutput.stackSize <= inventory[secondaryIndex].getMaxStackSize()) + } + else if(inventory[secondaryIndex].isItemEqual(secondaryOutput) && inventory[secondaryIndex].stackSize + primaryOutput.stackSize <= inventory[secondaryIndex].getMaxStackSize()) { if(doEmit) { inventory[secondaryIndex].stackSize += secondaryOutput.stackSize; } + return true; } + return false; } return true; } + @Override public ChanceOutput copy() { return new ChanceOutput(StackUtils.copy(primaryOutput), StackUtils.copy(secondaryOutput), secondaryChance); diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java index 127ba0a1d..a31c19113 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java @@ -124,9 +124,9 @@ public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock impl if(canOperate(recipe) && getEnergy() >= energyPerTick && MekanismUtils.canFunction(this)) { setActive(true); - setEnergy(getEnergy() - energyPerTick); - - operate(recipe); + + int operations = operate(recipe); + setEnergy(getEnergy() - energyPerTick*operations); } else { if(prevEnergy >= getEnergy()) @@ -196,11 +196,15 @@ public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock impl return recipe != null && recipe.canOperate(leftTank, rightTank, centerTank); } - public void operate(ChemicalInfuserRecipe recipe) + public int operate(ChemicalInfuserRecipe recipe) { - recipe.operate(leftTank, rightTank, centerTank); + int operations = getUpgradedUsage(recipe); + + recipe.operate(leftTank, rightTank, centerTank, operations); markDirty(); + + return operations; } @Override