diff --git a/misc/vector/recipe.distillation_tower.svg b/misc/vector/recipe.distillation_tower.svg
new file mode 100644
index 00000000..013bf2ee
--- /dev/null
+++ b/misc/vector/recipe.distillation_tower.svg
@@ -0,0 +1,1259 @@
+
+
+
+
diff --git a/misc/vector/recipe.nine_x_nine.svg b/misc/vector/recipe.nine_x_nine.svg
new file mode 100644
index 00000000..e26c941f
--- /dev/null
+++ b/misc/vector/recipe.nine_x_nine.svg
@@ -0,0 +1,189 @@
+
+
+
+
diff --git a/misc/vector/recipe.twelve_x_twelve.svg b/misc/vector/recipe.twelve_x_twelve.svg
new file mode 100644
index 00000000..83bfafa3
--- /dev/null
+++ b/misc/vector/recipe.twelve_x_twelve.svg
@@ -0,0 +1,186 @@
+
+
+
+
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 23d5c121..84ad487e 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -552,7 +552,7 @@ public class GT_Recipe implements Comparable {
public static final GT_Recipe_Map sVacuumRecipes = new GT_Recipe_Map(new HashSet(100), "gt.recipe.vacuumfreezer", "Vacuum Freezer", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sChemicalRecipes = new GT_Recipe_Map(new HashSet(100), "gt.recipe.chemicalreactor", "Chemical Reactor", null, RES_PATH_GUI + "basicmachines/ChemicalReactor", 2, 2, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sMultiblockChemicalRecipes = new GT_Recipe_Map_LargeChemicalReactor();
- public static final GT_Recipe_Map sDistillationRecipes = new GT_Recipe_Map(new HashSet(50), "gt.recipe.distillationtower", "Distillation Tower", null, RES_PATH_GUI + "basicmachines/Default", 2, 4, 0, 0, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sDistillationRecipes = new GT_Recipe_Map_DistillationTower();
public static final GT_Recipe_Map sCrakingRecipes = new GT_Recipe_Map(new HashSet(50), "gt.recipe.craker", "Oil Cracker", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sPyrolyseRecipes = new GT_Recipe_Map(new HashSet(50), "gt.recipe.pyro", "Pyrolyse Oven", null, RES_PATH_GUI + "basicmachines/Default", 2, 1, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sWiremillRecipes = new GT_Recipe_Map(new HashSet(50), "gt.recipe.wiremill", "Wiremill", null, RES_PATH_GUI + "basicmachines/Wiremill", 1, 1, 1, 0, 1, E, 1, E, true, true);
@@ -1568,4 +1568,59 @@ public class GT_Recipe implements Comparable {
}
}
+
+ public static class GT_Recipe_Map_DistillationTower extends GT_Recipe_Map {
+ private static final int FLUID_OUTPUT_COUNT = 11;
+ private static final int ROW_SIZE = 3;
+
+ public GT_Recipe_Map_DistillationTower() {
+ super(new HashSet(50), "gt.recipe.distillationtower", "Distillation Tower", null, RES_PATH_GUI + "basicmachines/DistillationTower", 2, 4, 0, 0, 1, E, 1, E, true, true);
+ }
+
+ @Override
+ public GT_Recipe addRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecial, int[] aOutputChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
+ return addRecipe(new GT_Recipe_DistillationTower(aOptimize, aInputs, aOutputs, aSpecial, aOutputChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue));
+ }
+
+ @Override
+ public GT_Recipe addRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecial, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
+ return addRecipe(aOptimize, aInputs, aOutputs, aSpecial, null, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue);
+ }
+
+ private static class GT_Recipe_DistillationTower extends GT_Recipe{
+
+ protected GT_Recipe_DistillationTower(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
+ super(aOptimize, aInputs, aOutputs, aSpecialItems, aChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue);
+ }
+
+ @Override
+ public ArrayList getInputPositionedStacks() {
+ ArrayList inputStacks = new ArrayList(1);
+
+ if (this.mFluidInputs.length > 0 && this.mFluidInputs[0] != null) {
+ inputStacks.add(new FixedPositionedStack(GT_Utility.getFluidDisplayStack(this.mFluidInputs[0], true), 48, 52));
+ }
+ return inputStacks;
+ }
+
+ @Override
+ public ArrayList getOutputPositionedStacks() {
+ int fluidLimit = Math.min(mFluidOutputs.length, FLUID_OUTPUT_COUNT);
+ ArrayList outputStacks = new ArrayList(1 + fluidLimit);
+
+ if (this.mOutputs.length > 0 && this.mOutputs[0] != null) {
+ outputStacks.add(new FixedPositionedStack(this.getOutput(0), 102, 52));
+ }
+
+ for (int i = 0; i < fluidLimit; i++) {
+ int x = 102 + ((i + 1) % ROW_SIZE) * 18;
+ int y = 52 - ((i + 1) / ROW_SIZE) * 18;
+ outputStacks.add(new FixedPositionedStack(GT_Utility.getFluidDisplayStack(this.mFluidOutputs[i], true), x, y));
+ }
+
+ return outputStacks;
+ }
+
+ }
+ }
}
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/DistillationTower.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/DistillationTower.png
new file mode 100644
index 00000000..0fb00229
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/basicmachines/DistillationTower.png differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/NineXNine.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/NineXNine.png
new file mode 100644
index 00000000..628d86f0
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/basicmachines/NineXNine.png differ