From ccecfae2449f71b82e9332a3cc62efe22248a6b9 Mon Sep 17 00:00:00 2001 From: mezz Date: Mon, 25 Sep 2017 00:05:34 -0700 Subject: [PATCH] Fix #999 Improve mod name tooltip detection --- src/main/java/mezz/jei/config/Constants.java | 2 +- .../jei/gui/recipes/RecipeCategoryTab.java | 4 +-- .../IngredientListElementComparator.java | 4 +-- .../vanilla/anvil/AnvilRecipeCategory.java | 2 +- .../brewing/BrewingRecipeCategory.java | 2 +- .../crafting/CraftingRecipeCategory.java | 5 ++-- .../vanilla/furnace/FurnaceFuelCategory.java | 2 +- .../furnace/FurnaceSmeltingCategory.java | 2 +- .../mezz/jei/startup/AbstractModIdHelper.java | 5 ++-- .../mezz/jei/startup/ForgeModIdHelper.java | 27 ++++++++++++++++--- .../java/mezz/jei/startup/IModIdHelper.java | 2 ++ .../mezz/jei/test/lib/TestModIdHelper.java | 5 ++++ 12 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/main/java/mezz/jei/config/Constants.java b/src/main/java/mezz/jei/config/Constants.java index 4ee4c28a0..1203f07c3 100644 --- a/src/main/java/mezz/jei/config/Constants.java +++ b/src/main/java/mezz/jei/config/Constants.java @@ -5,7 +5,7 @@ import java.util.Locale; public final class Constants { - public static final String minecraftModName = "Minecraft"; + public static final String MINECRAFT_NAME = "Minecraft"; // Mod info public static final String MOD_ID = "jei"; diff --git a/src/main/java/mezz/jei/gui/recipes/RecipeCategoryTab.java b/src/main/java/mezz/jei/gui/recipes/RecipeCategoryTab.java index fb21eb981..bb1bc5369 100644 --- a/src/main/java/mezz/jei/gui/recipes/RecipeCategoryTab.java +++ b/src/main/java/mezz/jei/gui/recipes/RecipeCategoryTab.java @@ -90,8 +90,8 @@ public List getTooltip() { String modName = LegacyUtil.getModName(category); if (modName != null) { - modName = ForgeModIdHelper.getInstance().getModNameForModId(modName); - tooltip.add(Config.getModNameFormat() + modName); + modName = ForgeModIdHelper.getInstance().getFormattedModNameForModId(modName); + tooltip.add(modName); } return tooltip; } diff --git a/src/main/java/mezz/jei/ingredients/IngredientListElementComparator.java b/src/main/java/mezz/jei/ingredients/IngredientListElementComparator.java index b9ebb0723..b538771ec 100644 --- a/src/main/java/mezz/jei/ingredients/IngredientListElementComparator.java +++ b/src/main/java/mezz/jei/ingredients/IngredientListElementComparator.java @@ -30,9 +30,9 @@ public int compare(IIngredientListElement o1, IIngredientListElement o2) { final int orderIndex1 = o1.getOrderIndex(); final int orderIndex2 = o2.getOrderIndex(); return Integer.compare(orderIndex1, orderIndex2); - } else if (modName1.equals(Constants.minecraftModName)) { + } else if (modName1.equals(Constants.MINECRAFT_NAME)) { return -1; - } else if (modName2.equals(Constants.minecraftModName)) { + } else if (modName2.equals(Constants.MINECRAFT_NAME)) { return 1; } else { return modName1.compareTo(modName2); diff --git a/src/main/java/mezz/jei/plugins/vanilla/anvil/AnvilRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/anvil/AnvilRecipeCategory.java index dd710ad3c..53ce6fdbb 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/anvil/AnvilRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/anvil/AnvilRecipeCategory.java @@ -30,7 +30,7 @@ public String getTitle() { @Override public String getModName() { - return Constants.minecraftModName; + return Constants.MINECRAFT_NAME; } @Override diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java index 426e7e868..fa3951dd8 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java @@ -60,7 +60,7 @@ public String getTitle() { @Override public String getModName() { - return Constants.minecraftModName; + return Constants.MINECRAFT_NAME; } @Override diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java index 2ed850799..048828d74 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java @@ -55,7 +55,7 @@ public String getTitle() { @Override public String getModName() { - return Constants.minecraftModName; + return Constants.MINECRAFT_NAME; } @Override @@ -110,8 +110,7 @@ public void setRecipe(IRecipeLayout recipeLayout, IRecipeWrapper recipeWrapper, } if (modIdDifferent) { - String modNameFormat = Config.getModNameFormat(); - String modName = modNameFormat + ForgeModIdHelper.getInstance().getModNameForModId(recipeModId); + String modName = ForgeModIdHelper.getInstance().getFormattedModNameForModId(recipeModId); tooltip.add(TextFormatting.GRAY + Translator.translateToLocalFormatted("jei.tooltip.recipe.by", modName)); } diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java index 96824b59d..af667d4ae 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java @@ -42,7 +42,7 @@ public String getTitle() { @Override public String getModName() { - return Constants.minecraftModName; + return Constants.MINECRAFT_NAME; } @Nullable diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java index 69ab14eaf..06b3f345d 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java @@ -38,7 +38,7 @@ public String getTitle() { @Override public String getModName() { - return Constants.minecraftModName; + return Constants.MINECRAFT_NAME; } @Override diff --git a/src/main/java/mezz/jei/startup/AbstractModIdHelper.java b/src/main/java/mezz/jei/startup/AbstractModIdHelper.java index 555e3c6ef..356a241c5 100644 --- a/src/main/java/mezz/jei/startup/AbstractModIdHelper.java +++ b/src/main/java/mezz/jei/startup/AbstractModIdHelper.java @@ -24,9 +24,10 @@ public List addModNameToIngredientTooltip(List tooltip, T in return tooltip; } - String modName = getModNameForIngredient(ingredient, ingredientHelper); + String modId = ingredientHelper.getModId(ingredient); + String modName = getFormattedModNameForModId(modId); List tooltipCopy = new ArrayList<>(tooltip); - tooltipCopy.add(modNameFormat + modName); + tooltipCopy.add(modName); return tooltipCopy; } } diff --git a/src/main/java/mezz/jei/startup/ForgeModIdHelper.java b/src/main/java/mezz/jei/startup/ForgeModIdHelper.java index 0ee5a857d..b7e8d1372 100644 --- a/src/main/java/mezz/jei/startup/ForgeModIdHelper.java +++ b/src/main/java/mezz/jei/startup/ForgeModIdHelper.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; +import mezz.jei.config.Config; +import mezz.jei.config.Constants; import mezz.jei.util.Log; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -16,8 +18,10 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; +import org.apache.commons.lang3.StringUtils; public class ForgeModIdHelper extends AbstractModIdHelper { + private static final String MOD_NAME_FORMAT_CODE = "%MODNAME%"; @Nullable private static ForgeModIdHelper INSTANCE; @@ -43,6 +47,22 @@ public String getModNameForModId(String modId) { return modContainer.getName(); } + @Override + public String getFormattedModNameForModId(String modId) { + String modNameFormat = Config.getModNameFormat(); + String modName = getModNameForModId(modId); + modName = removeChatFormatting(modName); // some crazy mod has formatting in the name + if (modNameFormat.contains(MOD_NAME_FORMAT_CODE)) { + return StringUtils.replaceOnce(modNameFormat, MOD_NAME_FORMAT_CODE, modName); + } + return modNameFormat + modName; + } + + private static String removeChatFormatting(String string) { + String withoutFormattingCodes = TextFormatting.getTextWithoutFormattingCodes(string); + return (withoutFormattingCodes == null) ? "" : withoutFormattingCodes; + } + @Nullable @Override public String getModNameTooltipFormatting() { @@ -56,14 +76,13 @@ public String getModNameTooltipFormatting() { if (tooltip.size() > 1) { String lastLine = tooltip.get(tooltip.size() - 1); - if (lastLine.contains("Minecraft")) { + if (lastLine.contains(Constants.MINECRAFT_NAME)) { String withoutFormatting = TextFormatting.getTextWithoutFormattingCodes(lastLine); if (withoutFormatting != null) { if (lastLine.equals(withoutFormatting)) { return ""; - } else if (lastLine.endsWith(withoutFormatting)) { - int i = lastLine.length() - withoutFormatting.length(); - return lastLine.substring(0, i); + } else if (lastLine.contains(withoutFormatting)) { + return StringUtils.replaceOnce(lastLine, Constants.MINECRAFT_NAME, MOD_NAME_FORMAT_CODE); } } } diff --git a/src/main/java/mezz/jei/startup/IModIdHelper.java b/src/main/java/mezz/jei/startup/IModIdHelper.java index 4f2f6db57..9da8c69e5 100644 --- a/src/main/java/mezz/jei/startup/IModIdHelper.java +++ b/src/main/java/mezz/jei/startup/IModIdHelper.java @@ -9,6 +9,8 @@ public interface IModIdHelper { String getModNameForModId(String modId); + String getFormattedModNameForModId(String modId); + String getModNameForIngredient(T ingredient, IIngredientHelper ingredientHelper); List addModNameToIngredientTooltip(List tooltip, T ingredient, IIngredientHelper ingredientHelper); diff --git a/src/test/java/mezz/jei/test/lib/TestModIdHelper.java b/src/test/java/mezz/jei/test/lib/TestModIdHelper.java index 5a7c942b2..bba30bd2e 100644 --- a/src/test/java/mezz/jei/test/lib/TestModIdHelper.java +++ b/src/test/java/mezz/jei/test/lib/TestModIdHelper.java @@ -10,6 +10,11 @@ public String getModNameForModId(String modId) { return "ModName(" + modId + ")"; } + @Override + public String getFormattedModNameForModId(String modId) { + return getModNameForModId(modId); + } + @Nullable @Override public String getModNameTooltipFormatting() {