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
|
/*
* Roughly Enough Items by Danielshe.
* Licensed under the MIT License.
*/
package me.shedaniel.rei.gui.widget;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.sound.PositionedSoundInstance;
import net.minecraft.client.util.InputUtil;
import net.minecraft.sound.SoundEvents;
public class SearchFieldWidget extends TextFieldWidget {
public static boolean isSearching = false;
public long keybindFocusTime = -1;
public int keybindFocusKey = -1;
protected long lastClickedTime = -1;
public SearchFieldWidget(int x, int y, int width, int height) {
super(x, y, width, height);
setMaxLength(10000);
}
public void laterRender(int int_1, int int_2, float float_1) {
GuiLighting.disable();
GlStateManager.disableDepthTest();
setEditableColor(ContainerScreenOverlay.getEntryListWidget().children().isEmpty() && !getText().isEmpty() ? 16733525 : isSearching ? -1313241 : 14737632);
setSuggestion(!isFocused() && getText().isEmpty() ? I18n.translate("text.rei.search.field.suggestion") : null);
super.render(int_1, int_2, float_1);
GlStateManager.enableDepthTest();
}
@Override
public void renderBorder() {
if (!isSearching)
super.renderBorder();
else if (this.hasBorder()) {
fill(this.getBounds().x - 1, this.getBounds().y - 1, this.getBounds().x + this.getBounds().width + 1, this.getBounds().y + this.getBounds().height + 1, -1313241);
fill(this.getBounds().x, this.getBounds().y, this.getBounds().x + this.getBounds().width, this.getBounds().y + this.getBounds().height, -16777216);
}
}
@Override
public boolean mouseClicked(double double_1, double double_2, int int_1) {
boolean contains = containsMouse(double_1, double_2);
if (isVisible() && contains && int_1 == 1)
setText("");
if (contains && int_1 == 0)
if (lastClickedTime == -1)
lastClickedTime = System.currentTimeMillis();
else if (System.currentTimeMillis() - lastClickedTime > 1200)
lastClickedTime = -1;
else {
lastClickedTime = -1;
isSearching = !isSearching;
minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
}
return super.mouseClicked(double_1, double_2, int_1);
}
@Override
public boolean keyPressed(int int_1, int int_2, int int_3) {
if (this.isVisible() && this.isFocused())
if (int_1 == 257 || int_1 == 335) {
setFocused(false);
return true;
}
return super.keyPressed(int_1, int_2, int_3);
}
@Override
public boolean charTyped(char char_1, int int_1) {
if (System.currentTimeMillis() - keybindFocusTime < 1000 && InputUtil.isKeyPressed(MinecraftClient.getInstance().window.getHandle(), keybindFocusKey)) {
keybindFocusTime = -1;
keybindFocusKey = -1;
return true;
}
return super.charTyped(char_1, int_1);
}
@Override
public void render(int int_1, int int_2, float float_1) {
}
}
|