aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java33
-rw-r--r--src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java17
-rw-r--r--src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java18
3 files changed, 54 insertions, 14 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 5a077b4171..a50c925e61 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -88,11 +88,11 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
/**
* Stores which mod added this recipe
*/
- public ModContainer owner = null;
+ public List<ModContainer> owners = new ArrayList<>();
/**
* Stores stack traces where this recipe was added
*/
- public List<StackTraceElement> stackTraces = null;
+ public List<List<StackTraceElement>> stackTraces = new ArrayList<>();
private GT_Recipe(GT_Recipe aRecipe) {
mInputs = GT_Utility.copyStackArray((Object[]) aRecipe.mInputs);
@@ -109,6 +109,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
mFakeRecipe = aRecipe.mFakeRecipe;
mEnabled = aRecipe.mEnabled;
mHidden = aRecipe.mHidden;
+ owners = new ArrayList<>(aRecipe.owners);
reloadOwner();
}
@@ -570,19 +571,39 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
}
public void reloadOwner() {
- this.owner = Loader.instance().activeModContainer();
+ setOwner(Loader.instance().activeModContainer());
final List<String> excludedClasses = Arrays.asList(
"java.lang.Thread",
"gregtech.api.util.GT_Recipe",
"gregtech.common.GT_RecipeAdder");
if (GT_Mod.gregtechproxy.mNEIRecipeOwnerStackTrace) {
- this.stackTraces = new ArrayList<>();
+ List<StackTraceElement> toAdd = new ArrayList<>();
for (StackTraceElement stackTrace : Thread.currentThread().getStackTrace()) {
- if (!excludedClasses.stream().anyMatch(c -> stackTrace.getClassName().contains(c))) {
- this.stackTraces.add(stackTrace);
+ if (excludedClasses.stream().noneMatch(c -> stackTrace.getClassName().contains(c))) {
+ toAdd.add(stackTrace);
}
}
+ stackTraces.add(toAdd);
+ }
+ }
+
+ public void setOwner(ModContainer newOwner) {
+ ModContainer oldOwner = owners.size() > 0 ? this.owners.get(owners.size() - 1) : null;
+ if (newOwner != null && newOwner != oldOwner) {
+ owners.add(newOwner);
+ }
+ }
+
+ /**
+ * Use in case {@link Loader#activeModContainer()} isn't helpful
+ */
+ public void setOwner(String modId) {
+ for (ModContainer mod : Loader.instance().getModList()) {
+ if (mod.getModId().equals(modId)) {
+ setOwner(mod);
+ return;
+ }
}
}
diff --git a/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java b/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
index d98aa99ae7..4b05051528 100644
--- a/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
+++ b/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
@@ -278,14 +278,23 @@ public class GT_NEI_AssLineHandler extends RecipeMapHandler {
specialDrew = true;
}
int y = 123 + (specialDrew ? 10 : 0);
- if (GT_Mod.gregtechproxy.mNEIRecipeOwner && recipe.owner != null) {
- drawText(10, y, EnumChatFormatting.ITALIC + GT_Utility.trans("225", "Recipe by: ") + recipe.owner.getName(), 0xFF000000);
- y += 10;
+ if (GT_Mod.gregtechproxy.mNEIRecipeOwner) {
+ if (recipe.owners.size() > 1) {
+ drawText(10, y, EnumChatFormatting.ITALIC + GT_Utility.trans("226", "Original Recipe by: ") + recipe.owners.get(0).getName(), 0xFF000000);
+ y += 10;
+ for (int i = 1; i < recipe.owners.size(); i++) {
+ drawText(10, y, EnumChatFormatting.ITALIC + GT_Utility.trans("227", "Modified by: ") + recipe.owners.get(i).getName(), 0xFF000000);
+ y += 10;
+ }
+ } else if (recipe.owners.size() > 0) {
+ drawText(10, y, EnumChatFormatting.ITALIC + GT_Utility.trans("225", "Recipe by: ") + recipe.owners.get(0).getName(), 0xFF000000);
+ y += 10;
+ }
}
if (GT_Mod.gregtechproxy.mNEIRecipeOwnerStackTrace && recipe.stackTraces != null) {
drawText(10, y, "stackTrace:", 0xFF000000);
y += 10;
- for (StackTraceElement stackTrace : recipe.stackTraces) {
+ for (StackTraceElement stackTrace : recipe.stackTraces.get(0)) {
drawText(10, y, stackTrace.toString(), 0xFF000000);
y += 10;
}
diff --git a/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java b/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java
index 554c724889..1d281ce158 100644
--- a/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java
+++ b/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java
@@ -403,14 +403,24 @@ public class GT_NEI_DefaultHandler extends RecipeMapHandler {
if (drawOptionalLine(lineCounter, getSpecialInfo(recipe.mSpecialValue))) {
lineCounter++;
}
- if (GT_Mod.gregtechproxy.mNEIRecipeOwner && recipe.owner != null) {
- drawLine(lineCounter, EnumChatFormatting.ITALIC + GT_Utility.trans("225", "Recipe by: ") + recipe.owner.getName());
- lineCounter++;
+ if (GT_Mod.gregtechproxy.mNEIRecipeOwner) {
+ if (recipe.owners.size() > 1) {
+ drawLine(lineCounter, EnumChatFormatting.ITALIC + GT_Utility.trans("226", "Original Recipe by: ") + recipe.owners.get(0).getName());
+ lineCounter++;
+ for (int i = 1; i < recipe.owners.size(); i++) {
+ drawLine(lineCounter, EnumChatFormatting.ITALIC + GT_Utility.trans("227", "Modified by: ") + recipe.owners.get(i).getName());
+ lineCounter++;
+ }
+ } else if (recipe.owners.size() > 0) {
+ drawLine(lineCounter, EnumChatFormatting.ITALIC + GT_Utility.trans("225", "Recipe by: ") + recipe.owners.get(0).getName());
+ lineCounter++;
+ }
}
if (GT_Mod.gregtechproxy.mNEIRecipeOwnerStackTrace && recipe.stackTraces != null) {
drawLine(lineCounter, "stackTrace:");
lineCounter++;
- for (StackTraceElement stackTrace : recipe.stackTraces) {
+ // todo: good way to show all stacktraces
+ for (StackTraceElement stackTrace : recipe.stackTraces.get(0)) {
drawLine(lineCounter, stackTrace.toString());
lineCounter++;
}