/
ItemListOverlay.java
126 lines (104 loc) · 2.94 KB
/
ItemListOverlay.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
package mezz.jei.gui;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.common.collect.ImmutableList;
import mezz.jei.ItemFilter;
import mezz.jei.api.IItemListOverlay;
import mezz.jei.api.gui.IAdvancedGuiHandler;
import mezz.jei.api.ingredients.IIngredientRegistry;
import mezz.jei.config.Config;
import mezz.jei.util.Log;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
public class ItemListOverlay implements IItemListOverlay {
private final ItemFilter itemFilter;
private final List<IAdvancedGuiHandler<?>> advancedGuiHandlers;
private final IIngredientRegistry ingredientRegistry;
private final Set<ItemStack> highlightedStacks = new HashSet<ItemStack>();
@Nullable
private ItemListOverlayInternal internal;
public ItemListOverlay(ItemFilter itemFilter, List<IAdvancedGuiHandler<?>> advancedGuiHandlers, IIngredientRegistry ingredientRegistry) {
this.itemFilter = itemFilter;
this.advancedGuiHandlers = advancedGuiHandlers;
this.ingredientRegistry = ingredientRegistry;
}
@Nullable
public ItemListOverlayInternal create(GuiScreen guiScreen) {
close();
if (Config.isOverlayEnabled()) {
GuiProperties guiProperties = GuiProperties.create(guiScreen);
if (guiProperties != null) {
final int columns = ItemListOverlayInternal.getColumns(guiProperties);
if (columns >= 4) {
internal = new ItemListOverlayInternal(this, ingredientRegistry, guiScreen, guiProperties);
return internal;
}
}
}
return null;
}
@Nullable
public ItemListOverlayInternal getInternal() {
return internal;
}
@Nullable
@Override
public ItemStack getStackUnderMouse() {
if (internal != null) {
return internal.getStackUnderMouse();
}
return null;
}
@Override
public void setFilterText(@Nullable String filterText) {
if (filterText == null) {
Log.error("null filterText", new NullPointerException());
return;
}
Config.setFilterText(filterText);
if (internal != null) {
internal.setFilterText(filterText);
}
}
@Override
public String getFilterText() {
return Config.getFilterText();
}
@Override
public ImmutableList<ItemStack> getVisibleStacks() {
if (internal == null) {
return ImmutableList.of();
}
return internal.getVisibleStacks();
}
@Override
public ImmutableList<ItemStack> getFilteredStacks() {
return itemFilter.getItemStacks();
}
@Override
public void highlightStacks(Collection<ItemStack> stacks) {
highlightedStacks.clear();
highlightedStacks.addAll(stacks);
}
public Set<ItemStack> getHighlightedStacks() {
return highlightedStacks;
}
public ItemFilter getItemFilter() {
return itemFilter;
}
public List<IAdvancedGuiHandler<?>> getAdvancedGuiHandlers() {
return advancedGuiHandlers;
}
public boolean isOpen() {
return internal != null;
}
public void close() {
if (internal != null) {
internal.close();
}
internal = null;
}
}