/
IngredientListElement.java
152 lines (124 loc) · 4.68 KB
/
IngredientListElement.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package mezz.jei.util;
import javax.annotation.Nullable;
import java.util.Locale;
import mezz.jei.IngredientInformation;
import mezz.jei.Internal;
import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.api.ingredients.IIngredientRenderer;
import mezz.jei.config.Config;
import mezz.jei.gui.ingredients.IIngredientListElement;
import net.minecraft.client.resources.I18n;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
public class IngredientListElement<V> implements IIngredientListElement<V> {
private final V ingredient;
private final IIngredientHelper<V> ingredientHelper;
private final String searchString;
private final String modNameString;
private final String tooltipString;
private final String oreDictString;
private final String creativeTabsString;
private final String colorString;
@Nullable
public static <V> IngredientListElement<V> create(V ingredient, IIngredientHelper<V> ingredientHelper, IIngredientRenderer<V> ingredientRenderer) {
try {
return new IngredientListElement<V>(ingredient, ingredientHelper, ingredientRenderer);
} catch (RuntimeException e) {
try {
String ingredientInfo = ingredientHelper.getErrorInfo(ingredient);
Log.warning("Found a broken ingredient {}", ingredientInfo, e);
} catch (RuntimeException e2) {
Log.warning("Found a broken ingredient.", e2);
}
return null;
}
}
protected IngredientListElement(V ingredient, IIngredientHelper<V> ingredientHelper, IIngredientRenderer<V> ingredientRenderer) {
this.ingredient = ingredient;
this.ingredientHelper = ingredientHelper;
String modId = ingredientHelper.getModId(ingredient);
ModIdUtil modIdUtil = Internal.getModIdUtil();
String modName = modIdUtil.getModNameForModId(modId).toLowerCase(Locale.ENGLISH);
modId = modId.toLowerCase(Locale.ENGLISH);
String displayName = ingredientHelper.getDisplayName(ingredient).toLowerCase();
this.modNameString = modId.replaceAll(" ", "") + ' ' + modName.replaceAll(" ", "");
this.tooltipString = IngredientInformation.getTooltipString(ingredient, ingredientRenderer, modId, modName, displayName);
if (Config.getColorSearchMode() != Config.SearchMode.DISABLED) {
this.colorString = IngredientInformation.getColorString(ingredient, ingredientHelper);
} else {
this.colorString = "";
}
if (ingredient instanceof ItemStack) {
ItemStack itemStack = (ItemStack) ingredient;
Item item = itemStack.getItem();
StringBuilder oreDictStringBuilder = new StringBuilder();
for (int oreId : OreDictionary.getOreIDs(itemStack)) {
String oreName = OreDictionary.getOreName(oreId).toLowerCase(Locale.ENGLISH);
oreDictStringBuilder.append(oreName).append(' ');
}
this.oreDictString = oreDictStringBuilder.toString();
StringBuilder creativeTabStringBuilder = new StringBuilder();
for (CreativeTabs creativeTab : item.getCreativeTabs()) {
if (creativeTab != null) {
String creativeTabName = I18n.format(creativeTab.getTranslatedTabLabel()).toLowerCase();
creativeTabStringBuilder.append(creativeTabName).append(' ');
}
}
this.creativeTabsString = creativeTabStringBuilder.toString();
} else {
this.oreDictString = "";
this.creativeTabsString = "";
}
StringBuilder searchStringBuilder = new StringBuilder(displayName);
if (Config.getModNameSearchMode() == Config.SearchMode.ENABLED) {
searchStringBuilder.append(' ').append(this.modNameString);
}
if (Config.getTooltipSearchMode() == Config.SearchMode.ENABLED) {
searchStringBuilder.append(' ').append(this.tooltipString);
}
if (Config.getOreDictSearchMode() == Config.SearchMode.ENABLED) {
searchStringBuilder.append(' ').append(this.oreDictString);
}
if (Config.getCreativeTabSearchMode() == Config.SearchMode.ENABLED) {
searchStringBuilder.append(' ').append(this.creativeTabsString);
}
if (Config.getColorSearchMode() == Config.SearchMode.ENABLED) {
searchStringBuilder.append(' ').append(this.colorString);
}
this.searchString = searchStringBuilder.toString();
}
@Override
public final V getIngredient() {
return ingredient;
}
@Override
public IIngredientHelper<V> getIngredientHelper() {
return ingredientHelper;
}
@Override
public final String getSearchString() {
return searchString;
}
@Override
public final String getModNameString() {
return modNameString;
}
@Override
public final String getTooltipString() {
return tooltipString;
}
@Override
public String getOreDictString() {
return oreDictString;
}
@Override
public String getCreativeTabsString() {
return creativeTabsString;
}
@Override
public String getColorString() {
return colorString;
}
}