-
Notifications
You must be signed in to change notification settings - Fork 302
/
ItemStackHelper.java
115 lines (93 loc) · 3.1 KB
/
ItemStackHelper.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
package mezz.jei.plugins.vanilla.ingredients;
import javax.annotation.Nullable;
import java.awt.Color;
import java.util.List;
import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.color.ColorGetter;
import mezz.jei.startup.StackHelper;
import mezz.jei.util.ErrorUtil;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class ItemStackHelper implements IIngredientHelper<ItemStack> {
private final StackHelper stackHelper;
public ItemStackHelper(StackHelper stackHelper) {
this.stackHelper = stackHelper;
}
@Override
public List<ItemStack> expandSubtypes(List<ItemStack> contained) {
return stackHelper.getAllSubtypes(contained);
}
@Override
@Nullable
public ItemStack getMatch(Iterable<ItemStack> ingredients, ItemStack toMatch) {
return stackHelper.containsStack(ingredients, toMatch);
}
@Override
public String getDisplayName(ItemStack ingredient) {
return ErrorUtil.checkNotNull(ingredient.getDisplayName(), "itemStack.getDisplayName()");
}
@Override
public String getUniqueId(ItemStack ingredient) {
ErrorUtil.checkNotEmpty(ingredient);
return stackHelper.getUniqueIdentifierForStack(ingredient);
}
@Override
public String getWildcardId(ItemStack ingredient) {
ErrorUtil.checkNotEmpty(ingredient);
return stackHelper.getUniqueIdentifierForStack(ingredient, StackHelper.UidMode.WILDCARD);
}
@Override
public String getModId(ItemStack ingredient) {
ErrorUtil.checkNotEmpty(ingredient);
Item item = ingredient.getItem();
ResourceLocation itemName = item.getRegistryName();
if (itemName == null) {
String stackInfo = getErrorInfo(ingredient);
throw new IllegalStateException("item.getRegistryName() returned null for: " + stackInfo);
}
return itemName.getResourceDomain();
}
@Override
public String getDisplayModId(ItemStack ingredient) {
ErrorUtil.checkNotEmpty(ingredient);
Item item = ingredient.getItem();
String modId = item.getCreatorModId(ingredient);
if (modId == null) {
String stackInfo = getErrorInfo(ingredient);
throw new IllegalStateException("item.getCreatorModId() returned null for: " + stackInfo);
}
return modId;
}
@Override
public Iterable<Color> getColors(ItemStack ingredient) {
return ColorGetter.getColors(ingredient, 2);
}
@Override
public String getResourceId(ItemStack ingredient) {
ErrorUtil.checkNotEmpty(ingredient);
Item item = ingredient.getItem();
ResourceLocation itemName = item.getRegistryName();
if (itemName == null) {
String stackInfo = getErrorInfo(ingredient);
throw new IllegalStateException("item.getRegistryName() returned null for: " + stackInfo);
}
return itemName.getResourcePath();
}
@Override
public ItemStack cheatIngredient(ItemStack ingredient, boolean fullStack) {
return ingredient;
}
@Override
public ItemStack copyIngredient(ItemStack ingredient) {
return ingredient.copy();
}
@Override
public boolean isValidIngredient(ItemStack ingredient) {
return !ingredient.isEmpty();
}
@Override
public String getErrorInfo(ItemStack ingredient) {
return ErrorUtil.getItemStackInfo(ingredient);
}
}