diff --git a/common/mekanism/common/ChemicalInput.java b/common/mekanism/common/ChemicalInput.java new file mode 100644 index 000000000..fa2ed8bd8 --- /dev/null +++ b/common/mekanism/common/ChemicalInput.java @@ -0,0 +1,38 @@ +package mekanism.common; + +import mekanism.api.Object3D; +import mekanism.api.gas.Gas; + +public class ChemicalInput +{ + public Gas leftGas; + public Gas rightGas; + + public ChemicalInput(Gas left, Gas right) + { + leftGas = left; + rightGas = right; + } + + public boolean isValid() + { + return leftGas != null && rightGas != null; + } + + @Override + public boolean equals(Object obj) + { + return obj instanceof ChemicalInput && + ((ChemicalInput)obj).leftGas == leftGas && + ((ChemicalInput)obj).rightGas == rightGas; + } + + @Override + public int hashCode() + { + int code = 1; + code = 31 * code + leftGas.getID(); + code = 31 * code + rightGas.getID(); + return code; + } +} diff --git a/common/mekanism/common/RecipeHandler.java b/common/mekanism/common/RecipeHandler.java index adb4451f0..60ab79c3b 100644 --- a/common/mekanism/common/RecipeHandler.java +++ b/common/mekanism/common/RecipeHandler.java @@ -3,6 +3,7 @@ package mekanism.common; import java.util.HashMap; import java.util.Map; +import mekanism.api.gas.GasStack; import mekanism.api.infuse.InfusionInput; import mekanism.api.infuse.InfusionOutput; import mekanism.common.util.StackUtils; @@ -80,6 +81,16 @@ public final class RecipeHandler Recipe.METALLURGIC_INFUSER.put(input, InfusionOutput.getInfusion(input, output)); } + public static void addChemicalInfuserRecipe(ChemicalInput input, GasStack output) + { + Recipe.CHEMICAL_INFUSER.put(input, output); + } + + public static void addChemicalFormulatorRecipe(ItemStack input, GasStack output) + { + Recipe.CHEMICAL_FORMULATOR.put(input, output); + } + /** * Gets the InfusionOutput of the InfusionInput in the parameters. * @param infusion - input Infusion @@ -87,11 +98,13 @@ public final class RecipeHandler * @param recipes - Map of recipes * @return InfusionOutput */ - public static InfusionOutput getOutput(InfusionInput infusion, boolean stackDecrease, Map recipes) - { + public static InfusionOutput getOutput(InfusionInput infusion, boolean stackDecrease) + { if(infusion != null && infusion.inputStack != null) { - for(Map.Entry entry : recipes.entrySet()) + HashMap recipes = Recipe.METALLURGIC_INFUSER.get(); + + for(Map.Entry entry : recipes.entrySet()) { InfusionInput input = (InfusionInput)entry.getKey(); @@ -113,6 +126,42 @@ public final class RecipeHandler return null; } + public static GasStack getOutput(ChemicalInput input) + { + if(input != null && input.isValid()) + { + HashMap recipes = Recipe.CHEMICAL_INFUSER.get(); + return recipes.get(input); + } + + return null; + } + + public GasStack getOutput(ItemStack itemstack, boolean stackDecrease) + { + if(itemstack != null) + { + HashMap recipes = Recipe.CHEMICAL_FORMULATOR.get(); + + for(Map.Entry entry : recipes.entrySet()) + { + ItemStack stack = (ItemStack)entry.getKey(); + + if(StackUtils.equalsWildcard(stack, itemstack) && itemstack.stackSize >= stack.stackSize) + { + if(stackDecrease) + { + itemstack.stackSize -= stack.stackSize; + } + + return entry.getValue().copy(); + } + } + } + + return null; + } + /** * Gets the output ItemStack of the ItemStack in the parameters. * @param itemstack - input ItemStack @@ -150,7 +199,9 @@ public final class RecipeHandler COMBINER(new HashMap()), CRUSHER(new HashMap()), PURIFICATION_CHAMBER(new HashMap()), - METALLURGIC_INFUSER(new HashMap()); + METALLURGIC_INFUSER(new HashMap()), + CHEMICAL_INFUSER(new HashMap()), + CHEMICAL_FORMULATOR(new HashMap()); private HashMap recipes; diff --git a/common/mekanism/common/inventory/container/ContainerChemicalFormulator.java b/common/mekanism/common/inventory/container/ContainerChemicalFormulator.java index 794b0e6ef..d6ae8260f 100644 --- a/common/mekanism/common/inventory/container/ContainerChemicalFormulator.java +++ b/common/mekanism/common/inventory/container/ContainerChemicalFormulator.java @@ -18,11 +18,10 @@ public class ContainerChemicalFormulator extends Container public ContainerChemicalFormulator(InventoryPlayer inventory, TileEntityChemicalInfuser tentity) { tileEntity = tentity; - addSlotToContainer(new SlotStorageTank(tentity, null, true, 0, 5, 25)); - addSlotToContainer(new SlotStorageTank(tentity, null, true, 1, 5, 56)); - addSlotToContainer(new SlotStorageTank(tentity, null, true, 2, 155, 25)); - addSlotToContainer(new SlotStorageTank(tentity, null, true, 3, 155, 56)); - addSlotToContainer(new SlotDischarge(tentity, 4, 155, 5)); + addSlotToContainer(new SlotStorageTank(tentity, null, true, 0, 5, 56)); + addSlotToContainer(new SlotStorageTank(tentity, null, true, 1, 80, 65)); + addSlotToContainer(new SlotStorageTank(tentity, null, true, 2, 155, 56)); + addSlotToContainer(new SlotDischarge(tentity, 3, 155, 5)); int slotX; diff --git a/common/mekanism/common/inventory/container/ContainerChemicalInfuser.java b/common/mekanism/common/inventory/container/ContainerChemicalInfuser.java index 54738485e..7daead959 100644 --- a/common/mekanism/common/inventory/container/ContainerChemicalInfuser.java +++ b/common/mekanism/common/inventory/container/ContainerChemicalInfuser.java @@ -24,7 +24,6 @@ public class ContainerChemicalInfuser extends Container addSlotToContainer(new Slot(tentity, 0, 26, 36)); addSlotToContainer(new SlotDischarge(tentity, 1, 155, 5)); addSlotToContainer(new SlotStorageTank(tentity, null, true, 2, 155, 25)); - addSlotToContainer(new SlotStorageTank(tentity, null, true, 3, 155, 56)); int slotX; diff --git a/common/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java b/common/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java index c1fcb1366..80066d0aa 100644 --- a/common/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java +++ b/common/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java @@ -156,7 +156,7 @@ public class ContainerMetallurgicInfuser extends Container { if(tileEntity.type != null) { - if(RecipeHandler.getOutput(InfusionInput.getInfusion(tileEntity.type, tileEntity.infuseStored, itemStack), false, Recipe.METALLURGIC_INFUSER.get()) != null) + if(RecipeHandler.getOutput(InfusionInput.getInfusion(tileEntity.type, tileEntity.infuseStored, itemStack), false) != null) { return true; } diff --git a/common/mekanism/common/tileentity/TileEntityMetallurgicInfuser.java b/common/mekanism/common/tileentity/TileEntityMetallurgicInfuser.java index 4cbbd6dbd..b5fe4e704 100644 --- a/common/mekanism/common/tileentity/TileEntityMetallurgicInfuser.java +++ b/common/mekanism/common/tileentity/TileEntityMetallurgicInfuser.java @@ -226,7 +226,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem { if(type != null) { - if(RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, itemstack), false, Recipe.METALLURGIC_INFUSER.get()) != null) + if(RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, itemstack), false) != null) { return true; } @@ -257,7 +257,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem return; } - InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), true, Recipe.METALLURGIC_INFUSER.get()); + InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), true); infuseStored -= output.getInfuseRequired(); @@ -284,7 +284,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem return false; } - InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), false, Recipe.METALLURGIC_INFUSER.get()); + InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), false); if(output == null) { diff --git a/resources/assets/mekanism/gui/GuiChemicalFormulator.png b/resources/assets/mekanism/gui/GuiChemicalFormulator.png index 0b6799cb0..cbe664e58 100644 Binary files a/resources/assets/mekanism/gui/GuiChemicalFormulator.png and b/resources/assets/mekanism/gui/GuiChemicalFormulator.png differ diff --git a/resources/assets/mekanism/gui/GuiChemicalInfuser.png b/resources/assets/mekanism/gui/GuiChemicalInfuser.png index 2f3bdb90b..362a6f1d5 100644 Binary files a/resources/assets/mekanism/gui/GuiChemicalInfuser.png and b/resources/assets/mekanism/gui/GuiChemicalInfuser.png differ