aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gregtech/api/util/Recipe_GT.java11
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java45
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java80
3 files changed, 73 insertions, 63 deletions
diff --git a/src/Java/gregtech/api/util/Recipe_GT.java b/src/Java/gregtech/api/util/Recipe_GT.java
index 11ac153195..19bd1122a4 100644
--- a/src/Java/gregtech/api/util/Recipe_GT.java
+++ b/src/Java/gregtech/api/util/Recipe_GT.java
@@ -17,6 +17,7 @@ import gregtech.nei.GT_NEI_DefaultHandler;
import codechicken.nei.PositionedStack;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
@@ -1214,8 +1215,14 @@ public class Recipe_GT extends GT_Recipe{
}
aOutputs = adjustedOutputs.toArray(new ItemStack[adjustedOutputs.size()]);
aFluidOutputs = adjustedFluidOutputs.toArray(new FluidStack[adjustedFluidOutputs.size()]);
- return this.addRecipe(new GT_Recipe_AdvFreezer(aOptimize, aInputs, aOutputs, aSpecial,
- aOutputChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue));
+
+ GT_Recipe mNew = new Recipe_GT(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUt, 0);
+ if (RecipeUtils.doesGregtechRecipeHaveEqualCells(mNew)) {
+ return this.addRecipe(mNew);
+ }
+ else {
+ return null;
+ }
}
static {
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
index e5e4bb1181..ce24edc776 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
@@ -341,12 +341,12 @@ public class RecipeUtils {
boolean[] hasMultiStack = new boolean[9];
boolean inUse[] = {false, false, false};
ItemStack array[][] = new ItemStack[3][9];
-
+
Object[] inputs = {
InputItem1, InputItem2, InputItem3,
InputItem4, InputItem5, InputItem6,
InputItem7, InputItem8, InputItem9};
-
+
for (Object o : inputs){
if (o.getClass().isArray()){
if (inUse[using] == false){
@@ -361,10 +361,10 @@ public class RecipeUtils {
}
recipeSlotCurrent++;
}
-
+
int using2 = 0;
for (boolean t : inUse){
-
+
if (t){
if (array[using2] != null){
//addShapedGregtechRecipe
@@ -372,8 +372,8 @@ public class RecipeUtils {
}
using2++;
}
-
-
+
+
return false;
}
@@ -486,7 +486,7 @@ public class RecipeUtils {
public static boolean buildShapelessRecipe(final ItemStack output, final Object[] input){
return ShapelessUtils.addShapelessRecipe(output, input);
}
-
+
public static boolean generateMortarRecipe(ItemStack aStack, ItemStack aOutput) {
return RecipeUtils.addShapedGregtechRecipe(
aStack, null, null,
@@ -496,20 +496,27 @@ public class RecipeUtils {
}
public static boolean doesGregtechRecipeHaveEqualCells(GT_Recipe x) {
- if (x.mInputs.length < 1) {
+ if (x.mInputs.length == 0 && x.mOutputs.length == 0) {
+ return true;
+ }
+
+ final int tInputAmount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(x.mInputs);
+ final int tOutputAmount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(x.mOutputs);
+
+ if (tInputAmount < tOutputAmount) {
+ if (!Materials.Tin.contains(x.mInputs)) {
return false;
}
- final int tInputAmount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(x.mInputs);
- final int tOutputAmount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(x.mOutputs);
- if (tInputAmount < tOutputAmount) {
- if (!Materials.Tin.contains(x.mInputs)) {
- return false;
- }
- } else if (tInputAmount > tOutputAmount && !Materials.Tin.contains(x.mOutputs)) {
- return false;
- }
-
- return true;
+ else {
+ return true;
+ }
+ }
+ else if (tInputAmount > tOutputAmount && !Materials.Tin.contains(x.mOutputs)) {
+ return false;
+ }
+ else {
+ return true;
+ }
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
index 29c05c4045..8799300eb6 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
@@ -5,10 +5,12 @@ import net.minecraft.item.ItemStack;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.util.CustomRecipeMap;
+import gregtech.api.util.GT_Recipe;
import gregtech.api.util.Recipe_GT;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
import gtPlusPlus.xmod.gregtech.api.interfaces.internal.IGregtech_RecipeAdder;
import gtPlusPlus.xmod.gregtech.recipes.machines.RECIPEHANDLER_MatterFabricator;
import net.minecraftforge.fluids.FluidStack;
@@ -481,53 +483,47 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
null, new FluidStack[] { aFluidInput }, null, aDuration, aEUt, 0);
return true;
}
-
-
+
+
public boolean addMultiblockCentrifugeRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick){
- if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs)) {
- return false;
- }
- if (aEUtick <= 0) {
- return false;
- }
- Recipe_GT.Gregtech_Recipe_Map.sMultiblockCentrifugeRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0);
- return true;
+ if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs) || aEUtick <= 0) {
+ return false;
+ }
+ Recipe_GT.Gregtech_Recipe_Map.sMultiblockCentrifugeRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0);
+ return true;
}
-
+
public boolean addMultiblockElectrolyzerRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick){
- if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs)) {
- return false;
- }
- if (aEUtick <= 0) {
- return false;
- }
- Recipe_GT.Gregtech_Recipe_Map.sMultiblockElectrolyzerRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0);
- return true;
+ if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs) || aEUtick <= 0) {
+ return false;
+ }
+ Recipe_GT.Gregtech_Recipe_Map.sMultiblockElectrolyzerRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0);
+ return true;
}
-
-
- public boolean addAdvancedFreezerRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick) {
- if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs)) {
- return false;
- }
- if (aEUtick <= 0) {
- return false;
- }
- Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0);
- return true;
+
+
+ public boolean addAdvancedFreezerRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick) {
+ if (areItemsAndFluidsBothNull(aInputs, aFluidInputs) || areItemsAndFluidsBothNull(aOutputs, aFluidOutputs) || aEUtick <= 0) {
+ return false;
+ }
+ if (Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.addRecipe(false, aInputs, aOutputs, null, null, aFluidInputs, aFluidOutputs, aDuration, aEUtick, 0) != null) {
+ return true;
+ }
+ return false;
+
}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
private boolean areItemsAndFluidsBothNull(final ItemStack[] items, final FluidStack[] fluids) {
boolean itemsNull = true;