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
|
package dev.isxander.yacl3.gui;
import dev.isxander.yacl3.api.utils.Dimension;
import dev.isxander.yacl3.gui.utils.ButtonTextureRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Renderable;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.narration.NarratableEntry;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.sounds.SoundEvents;
import java.awt.Color;
public abstract class AbstractWidget implements GuiEventListener, Renderable, NarratableEntry {
protected final Minecraft client = Minecraft.getInstance();
protected final Font textRenderer = client.font;
protected final int inactiveColor = 0xFFA0A0A0;
private Dimension<Integer> dim;
public AbstractWidget(Dimension<Integer> dim) {
this.dim = dim;
}
public boolean canReset() {
return false;
}
@Override
public boolean isMouseOver(double mouseX, double mouseY) {
if (dim == null) return false;
return this.dim.isPointInside((int) mouseX, (int) mouseY);
}
public void setDimension(Dimension<Integer> dim) {
this.dim = dim;
}
public Dimension<Integer> getDimension() {
return dim;
}
@Override
public NarrationPriority narrationPriority() {
return NarrationPriority.NONE;
}
public void unfocus() {
}
public boolean matchesSearch(String query) {
return true;
}
@Override
public void updateNarration(NarrationElementOutput builder) {
}
protected void drawButtonRect(GuiGraphics graphics, int x1, int y1, int x2, int y2, boolean hovered, boolean enabled) {
if (x1 > x2) {
int xx1 = x1;
x1 = x2;
x2 = xx1;
}
if (y1 > y2) {
int yy1 = y1;
y1 = y2;
y2 = yy1;
}
int width = x2 - x1;
int height = y2 - y1;
ButtonTextureRenderer.render(graphics, x1, y1, width, height, enabled, hovered);
}
protected void drawOutline(GuiGraphics graphics, int x1, int y1, int x2, int y2, int width, int color) {
graphics.fill(x1, y1, x2, y1 + width, color);
graphics.fill(x2, y1, x2 - width, y2, color);
graphics.fill(x1, y2, x2, y2 - width, color);
graphics.fill(x1, y1, x1 + width, y2, color);
}
protected int multiplyColor(int hex, float amount) {
Color color = new Color(hex, true);
return new Color(Math.max((int)(color.getRed() * amount), 0),
Math.max((int)(color.getGreen() * amount), 0),
Math.max((int)(color.getBlue() * amount), 0),
color.getAlpha()).getRGB();
}
public void playDownSound() {
Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
}
}
|