/
ForgeModIdHelper.java
75 lines (65 loc) · 2.78 KB
/
ForgeModIdHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package mezz.jei.ingredients;
import java.util.ArrayList;
import java.util.List;
import net.minecraftforge.fml.ModList;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.config.ClientConfig;
import mezz.jei.config.ModIdFormattingConfig;
import org.apache.commons.lang3.StringUtils;
public class ForgeModIdHelper extends AbstractModIdHelper {
private final ClientConfig config;
private final ModIdFormattingConfig modIdFormattingConfig;
public ForgeModIdHelper(ClientConfig config, ModIdFormattingConfig modIdFormattingConfig) {
this.config = config;
this.modIdFormattingConfig = modIdFormattingConfig;
}
@Override
public String getModNameForModId(String modId) {
return ModList.get().getModContainerById(modId)
.map(modContainer -> modContainer.getModInfo().getDisplayName())
.orElse(StringUtils.capitalize(modId));
}
@Override
public boolean isDisplayingModNameEnabled() {
String modNameFormat = modIdFormattingConfig.getModNameFormat();
return !modNameFormat.isEmpty();
}
@Override
public String getFormattedModNameForModId(String modId) {
String modName = getModNameForModId(modId);
modName = removeChatFormatting(modName); // some crazy mod has formatting in the name
String modNameFormat = modIdFormattingConfig.getModNameFormat();
if (!modNameFormat.isEmpty()) {
if (modNameFormat.contains(ModIdFormattingConfig.MOD_NAME_FORMAT_CODE)) {
return StringUtils.replaceOnce(modNameFormat, ModIdFormattingConfig.MOD_NAME_FORMAT_CODE, modName);
}
return modNameFormat + modName;
}
return modName;
}
private static String removeChatFormatting(String string) {
String withoutFormattingCodes = TextFormatting.getTextWithoutFormattingCodes(string);
return (withoutFormattingCodes == null) ? "" : withoutFormattingCodes;
}
@Override
public <T> List<String> addModNameToIngredientTooltip(List<String> tooltip, T ingredient, IIngredientHelper<T> ingredientHelper) {
if (config.isDebugModeEnabled() && Minecraft.getInstance().gameSettings.advancedItemTooltips) {
tooltip = new ArrayList<>(tooltip);
tooltip.add(TextFormatting.GRAY + "JEI Debug:");
tooltip.add(TextFormatting.GRAY + "info: " + ingredientHelper.getErrorInfo(ingredient));
tooltip.add(TextFormatting.GRAY + "uid: " + ingredientHelper.getUniqueId(ingredient));
}
if (modIdFormattingConfig.isModNameFormatOverrideActive() && (ingredient instanceof ItemStack)) {
// we detected that another mod is adding the mod name already
return tooltip;
}
String modNameFormat = modIdFormattingConfig.getModNameFormat();
if (modNameFormat.isEmpty()) {
return tooltip;
}
return super.addModNameToIngredientTooltip(tooltip, ingredient, ingredientHelper);
}
}