aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util/GT_Recipe.java
diff options
context:
space:
mode:
authorchochem <40274384+chochem@users.noreply.github.com>2023-05-19 18:56:11 +0100
committerGitHub <noreply@github.com>2023-05-19 19:56:11 +0200
commit3911a3bdcb1d75df91e2015d61e48b13944f0458 (patch)
treef4e0192cd0b35cef13b23a48a64d5dcade4df03c /src/main/java/gregtech/api/util/GT_Recipe.java
parent9aa0086254984fc81a551bb3e738985b2d570c25 (diff)
downloadGT5-Unofficial-3911a3bdcb1d75df91e2015d61e48b13944f0458.tar.gz
GT5-Unofficial-3911a3bdcb1d75df91e2015d61e48b13944f0458.tar.bz2
GT5-Unofficial-3911a3bdcb1d75df91e2015d61e48b13944f0458.zip
Debug for recipe collisions (#2008)
* add collision debug * fix npe * try better names * unwrap nested ifs * do it for the other too * follow some code writing suggestions * add more info to panic crash * code polishing
Diffstat (limited to 'src/main/java/gregtech/api/util/GT_Recipe.java')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java36
1 files changed, 35 insertions, 1 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()) {