aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java36
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeBuilder.java24
2 files changed, 58 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index a232096c85..6d660c67f6 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -5,6 +5,7 @@ import static gregtech.api.enums.Mods.GTPlusPlus;
import static gregtech.api.enums.Mods.GregTech;
import static gregtech.api.enums.Mods.NEICustomDiagrams;
import static gregtech.api.enums.Mods.Railcraft;
+import static gregtech.api.util.GT_RecipeBuilder.handleRecipeCollision;
import static gregtech.api.util.GT_RecipeConstants.ADDITIVE_AMOUNT;
import static gregtech.api.util.GT_RecipeMapUtil.*;
import static gregtech.api.util.GT_Utility.formatNumbers;
@@ -3738,7 +3739,40 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
if (specialHandler != null) r = specialHandler.apply(r);
if (r == null) continue;
if (checkForCollision
- && findRecipe(null, false, true, Long.MAX_VALUE, r.mFluidInputs, r.mInputs) != null) continue;
+ && findRecipe(null, false, true, Long.MAX_VALUE, r.mFluidInputs, r.mInputs) != null) {
+ StringBuilder errorInfo = new StringBuilder();
+ boolean hasAnEntry = false;
+ for (FluidStack fStack : r.mFluidInputs) {
+ if (fStack == null) {
+ continue;
+ }
+ String s = fStack.getLocalizedName();
+ if (s == null) {
+ continue;
+ }
+ if (hasAnEntry) {
+ errorInfo.append("+")
+ .append(s);
+ } else {
+ errorInfo.append(s);
+ }
+ hasAnEntry = true;
+ }
+ for (ItemStack iStack : r.mInputs) {
+ if (iStack == null) {
+ continue;
+ }
+ String s = iStack.getDisplayName();
+ if (hasAnEntry) {
+ errorInfo.append("+" + s);
+ } else {
+ errorInfo.append(s);
+ }
+ hasAnEntry = true;
+ }
+ handleRecipeCollision(errorInfo.toString());
+ continue;
+ }
ret.add(add(r));
}
if (!ret.isEmpty()) {
diff --git a/src/main/java/gregtech/api/util/GT_RecipeBuilder.java b/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
index bdd09f0a34..0553d08805 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
@@ -1,6 +1,14 @@
package gregtech.api.util;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
import java.util.function.Function;
import javax.annotation.Nonnull;
@@ -126,6 +134,20 @@ public class GT_RecipeBuilder {
}
}
+ public static void handleRecipeCollision(String details) {
+ if (!PANIC_MODE && !DEBUG_MODE) {
+ return;
+ }
+ GT_Log.err.print("Recipe collision resulting in recipe loss detected with ");
+ GT_Log.err.println(details);
+ if (PANIC_MODE) {
+ throw new IllegalArgumentException("Recipe Collision");
+ } else {
+ // place a breakpoint here to catch all these issues
+ new IllegalArgumentException().printStackTrace(GT_Log.err);
+ }
+ }
+
/**
* Non-OreDicted item inputs. Assumes input is unified.
*/