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
|
package dev.isxander.yacl3.gui.tab;
import com.google.common.collect.ImmutableList;
import dev.isxander.yacl3.gui.ElementListWidgetExt;
import net.minecraft.client.gui.ComponentPath;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.events.ContainerEventHandler;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.gui.navigation.FocusNavigationEvent;
import net.minecraft.client.gui.navigation.ScreenRectangle;
import net.minecraft.network.chat.CommonComponents;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.function.Supplier;
public class ListHolderWidget<T extends ElementListWidgetExt<?>> extends AbstractWidget implements ContainerEventHandler {
private final Supplier<ScreenRectangle> dimensions;
private final T list;
public ListHolderWidget(Supplier<ScreenRectangle> dimensions, T list) {
super(0, 0, 100, 0, CommonComponents.EMPTY);
this.dimensions = dimensions;
this.list = list;
}
@Override
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float deltaTick) {
ScreenRectangle dimensions = this.dimensions.get();
this.setX(dimensions.left());
this.setY(dimensions.top());
this.width = dimensions.width();
this.height = dimensions.height();
this.list.updateDimensions(dimensions);
this.list.render(guiGraphics, mouseX, mouseY, deltaTick);
}
@Override
protected void updateWidgetNarration(NarrationElementOutput output) {
this.list.updateNarration(output);
}
@Override
public List<? extends GuiEventListener> children() {
return ImmutableList.of(this.list);
}
public T getList() {
return list;
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
return this.list.mouseClicked(mouseX, mouseY, button);
}
@Override
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
return this.list.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
return this.list.mouseReleased(mouseX, mouseY, button);
}
@Override
public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
return this.list.mouseScrolled(mouseX, mouseY, /*? if >1.20.2 {*/ horizontal, /*?}*/ vertical);
}
@Override
public boolean keyPressed(int i, int j, int k) {
return this.list.keyPressed(i, j, k);
}
@Override
public boolean charTyped(char c, int i) {
return this.list.charTyped(c, i);
}
@Override
public boolean isDragging() {
return this.list.isDragging();
}
@Override
public void setDragging(boolean dragging) {
this.list.setDragging(dragging);
}
@Nullable
@Override
public GuiEventListener getFocused() {
return this.list.getFocused();
}
@Override
public void setFocused(@Nullable GuiEventListener listener) {
this.list.setFocused(listener);
}
@Nullable
@Override
public ComponentPath nextFocusPath(FocusNavigationEvent event) {
return this.list.nextFocusPath(event);
}
@Nullable
@Override
public ComponentPath getCurrentFocusPath() {
return this.list.getCurrentFocusPath();
}
}
|