Исходник Search (поисковик в гуи) expensive 3.1

Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
114
Реакции[?]
1
Поинты[?]
1K
Все показано пошагово, и публикация длинная, так что сорри)

Создаём класс SearchField

Пожалуйста, авторизуйтесь для просмотра ссылки.


Java:
/**
* @author Ieo117
* @created 16.06.2024
*/

@ Setter
@ Getter
public class SearchField {
private int x, y, width, height;
private String text;
private boolean isFocused;
private boolean typing;
private final String placeholder;

public SearchField(int x, int y, int width, int height, String placeholder) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.placeholder = placeholder;
this.text = "";
this.isFocused = false;
this.typing = false;
}

public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
DisplayUtils.drawRoundedRect(x, y, width, height, new Vector4f(5, 5, 5, 5), ColorUtils.rgb(50, 50, 50));
String textToDraw = text.isEmpty() && !typing ? placeholder : text;
String cursor = typing && System.currentTimeMillis() % 1000 > 500 ? "_" : "";
Fonts.montserrat.drawText(matrixStack, textToDraw + cursor, x + 5, y + (height - 8) / 2 + 1, ColorUtils.rgb(255, 255, 255), 6);
}

public boolean charTyped(char codePoint, int modifiers) {
if (isFocused) {
text += codePoint;
return true;
}
return false;
}

public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (isFocused && keyCode == GLFW.GLFW_KEY_BACKSPACE && !text.isEmpty()) {
text = text.substring(0, text.length() - 1);
return true;
}
if(keyCode == GLFW.GLFW_KEY_ENTER || keyCode == GLFW.GLFW_KEY_ESCAPE){
typing = false;
}
return false;
}

public boolean mouseClicked(double mouseX, double mouseY, int button) {
if(!MathUtil.isHovered((float) mouseX, (float) mouseY, x, y, width, height)){
isFocused = false;
}
isFocused = MathUtil.isHovered((float) mouseX, (float) mouseY, x, y, width, height);
typing = isFocused;
return isFocused;
}

public boolean isEmpty() {
return text.isEmpty();
}
public void setFocused(boolean focused) { isFocused = focused; }
}
потом идём в класс DropDown и в начале в любом пустом месте пишем
Java:
public SearchField searchField;
и ищем
protected void init(){} и вставляем
Java:
/**
* @param x,y вычисление середины экрана под 3 панелькой,
*/
int windowWidth = ClientUtil.calc(mc.getMainWindow().getScaledWidth());
int windowHeight = ClientUtil.calc(mc.getMainWindow().getScaledHeight());

float x = (windowWidth / 2f) - (panels.size() * (135 + 10) / 2f) + 2 * (135 + 10) + 27.5f;
float y = windowHeight / 2f + (650 / 2f) / 2f + 30;

searchField = new SearchField((int) x, (int) y, 120, 16, "Поиск");
потом в конце public void render(){ перед
GlStateManager.popMatrix();
mc.gameRenderer.setupOverlayRendering();}
рендерим сам поисковик
Java:
searchField.render(matrixStack, mouseX, mouseY, partialTicks);
и где то в пустом месте вставляем это
Java:
public boolean isSearching() {
return !searchField.isEmpty();
}

public String getSearchText() {
return searchField.getText();
}

public boolean searchCheck(String text) {
return isSearching() && !text
.replaceAll(" ", "")
.toLowerCase()
.contains(getSearchText()
.replaceAll(" ", "")
.toLowerCase());
}
так же не забудьте в charTyped
if (searchField.charTyped(codePoint, modifiers)) {
return true;
}
в keyPressed
if (searchField.keyPressed(keyCode, scanCode, modifiers)) {
return true;
}
и в mouseClicked
if (searchField.mouseClicked(mouseX, mouseY, button)) {
return true;
}

после этого идём в класс Panel

в drawComponents()
после
for(Component component : componennts(){}

Java:
/**
* @param FullMyst укажите вместо него свой основной класс например (Expensive)
*/

if(FullMyst.getInstance().getDropDown().searchCheck(component.getFunction().getName())){
continue;
}
и замените код внутри mouseClick на
Java:
/**
* @param FullMyst укажите вместо него свой основной класс например (Expensive)
*/

for (ModuleComponent component : modules) {
if(FullMyst.getInstance().getDropDown().searchCheck(component.getFunction().getName())){
continue;
}
component.mouseClick(mouseX, mouseY, button);
}
и всё, вы сделали поисковик
Ща проверюесли работает то +rep а так ну ладно
 
Сверху Снизу