Skip to content

Commit f3d92bd

Browse files
committed
Fix #3767 Recipe ID should be shown for all recipes when advanced tooltips are enabled
1 parent cecea72 commit f3d92bd

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

Library/src/main/java/mezz/jei/library/gui/recipes/OutputSlotTooltipCallback.java

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import mezz.jei.api.ingredients.IIngredientType;
99
import mezz.jei.api.ingredients.ITypedIngredient;
1010
import mezz.jei.api.recipe.RecipeIngredientRole;
11+
import mezz.jei.api.recipe.RecipeType;
1112
import mezz.jei.api.runtime.IIngredientManager;
1213
import mezz.jei.common.Internal;
1314
import mezz.jei.common.util.ErrorUtil;
@@ -27,9 +28,11 @@ public class OutputSlotTooltipCallback implements IRecipeSlotRichTooltipCallback
2728
private static final Logger LOGGER = LogManager.getLogger();
2829

2930
private final ResourceLocation recipeName;
31+
private final boolean recipeFromSameModAsCategory;
3032

31-
public OutputSlotTooltipCallback(ResourceLocation recipeName) {
33+
public OutputSlotTooltipCallback(ResourceLocation recipeName, RecipeType<?> recipeType) {
3234
this.recipeName = recipeName;
35+
this.recipeFromSameModAsCategory = recipeName.getNamespace().equals(recipeType.getUid().getNamespace());
3336
}
3437

3538
@Override
@@ -42,18 +45,7 @@ public void onRichTooltip(IRecipeSlotView recipeSlotView, ITooltipBuilder toolti
4245
return;
4346
}
4447

45-
IModIdHelper modIdHelper = Internal.getJeiRuntime().getJeiHelpers().getModIdHelper();
46-
if (modIdHelper.isDisplayingModNameEnabled()) {
47-
String ingredientModId = getDisplayModId(displayedIngredient.get());
48-
if (ingredientModId != null) {
49-
String recipeModId = recipeName.getNamespace();
50-
if (!recipeModId.equals(ingredientModId)) {
51-
String modName = modIdHelper.getFormattedModNameForModId(recipeModId);
52-
MutableComponent recipeBy = Component.translatable("jei.tooltip.recipe.by", modName);
53-
tooltip.add(recipeBy.withStyle(ChatFormatting.GRAY));
54-
}
55-
}
56-
}
48+
addRecipeBy(tooltip, displayedIngredient.get());
5749

5850
Minecraft minecraft = Minecraft.getInstance();
5951
boolean showAdvanced = minecraft.options.advancedItemTooltips || Screen.hasShiftDown();
@@ -63,6 +55,27 @@ public void onRichTooltip(IRecipeSlotView recipeSlotView, ITooltipBuilder toolti
6355
}
6456
}
6557

58+
private void addRecipeBy(ITooltipBuilder tooltip, ITypedIngredient<?> displayedIngredient) {
59+
if (recipeFromSameModAsCategory) {
60+
return;
61+
}
62+
IModIdHelper modIdHelper = Internal.getJeiRuntime().getJeiHelpers().getModIdHelper();
63+
if (!modIdHelper.isDisplayingModNameEnabled()) {
64+
return;
65+
}
66+
String ingredientModId = getDisplayModId(displayedIngredient);
67+
if (ingredientModId == null) {
68+
return;
69+
}
70+
String recipeModId = recipeName.getNamespace();
71+
if (recipeModId.equals(ingredientModId)) {
72+
return;
73+
}
74+
String modName = modIdHelper.getFormattedModNameForModId(recipeModId);
75+
MutableComponent recipeBy = Component.translatable("jei.tooltip.recipe.by", modName);
76+
tooltip.add(recipeBy.withStyle(ChatFormatting.GRAY));
77+
}
78+
6679
private <T> @Nullable String getDisplayModId(ITypedIngredient<T> typedIngredient) {
6780
IIngredientManager ingredientManager = Internal.getJeiRuntime().getIngredientManager();
6881

Library/src/main/java/mezz/jei/library/gui/recipes/layout/builder/RecipeLayoutBuilder.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import mezz.jei.api.ingredients.ITypedIngredient;
1818
import mezz.jei.api.recipe.IFocusGroup;
1919
import mezz.jei.api.recipe.RecipeIngredientRole;
20+
import mezz.jei.api.recipe.RecipeType;
2021
import mezz.jei.api.recipe.category.IRecipeCategory;
2122
import mezz.jei.api.recipe.category.extensions.IRecipeCategoryDecorator;
2223
import mezz.jei.api.runtime.IIngredientManager;
@@ -97,11 +98,9 @@ public IRecipeSlotBuilder addSlotToWidget(RecipeIngredientRole role, ISlottedWid
9798
private void addOutputSlotTooltipCallback(RecipeSlotBuilder slot) {
9899
ResourceLocation recipeName = recipeCategory.getRegistryName(recipe);
99100
if (recipeName != null) {
100-
ResourceLocation recipeTypeUid = recipeCategory.getRecipeType().getUid();
101-
if (!recipeTypeUid.getNamespace().equals(recipeName.getNamespace())) {
102-
OutputSlotTooltipCallback callback = new OutputSlotTooltipCallback(recipeName);
103-
slot.addRichTooltipCallback(callback);
104-
}
101+
RecipeType<T> recipeType = recipeCategory.getRecipeType();
102+
OutputSlotTooltipCallback callback = new OutputSlotTooltipCallback(recipeName, recipeType);
103+
slot.addRichTooltipCallback(callback);
105104
}
106105
}
107106

0 commit comments

Comments
 (0)