Вопрос Гуи проблема

ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
420
Реакции[?]
23
Поинты[?]
6K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Вообщем начал написание гуишки, наговнокодил кое какие кнопки, вроде бы сначала все работало, а потом оказалось, что переливание при наведении курсором на кнопки не работает если их несколько, если же инициализирована только одна, то все работает как нужно
Код самой кнопки:
Код:
public class ButtonUI {

    private int widthc;
    private int heightc;
    private int xc;
    private int yc;
    private String modulec;
    private static boolean toggle = false;
    private static boolean hovered = false;
    public float prt;
    static float[] bc = new float[]{0};

    Color fadet = Color.getHSBColor(0.666f, 0.46f, 1f);
    private static float ticks;

    public ButtonUI(int height, int width, String function, String module, FontRenderer fontRenderer, int x, int y, RenderHUDEvent e){
        widthc = width;
        heightc = height;
        xc = x;
        yc = y;
        modulec = module;
        OnButton(e, width, x, height, y, fontRenderer, function, module);
    }
    @EventTarget
    public void getprt(Render3DEvent e){
        prt = e.getPartialTicks();
    }

    public static double getCursorPosX(long windowID) {
        DoubleBuffer posX = BufferUtils.createDoubleBuffer(1);
        GLFW.glfwGetCursorPos(windowID, posX, null);
        return posX.get(0);
    }

    public static double getCursorPosY(long windowID) {
        DoubleBuffer posY = BufferUtils.createDoubleBuffer(1);
        GLFW.glfwGetCursorPos(windowID, null, posY);
        return posY.get(0);
    }

     void OnButton(RenderHUDEvent e, int width, int x, int height, int y, FontRenderer fontRenderer, String function, String module) {
        ticks++;
        
         if (getCursorPosX(MainWindow.handle) > (widthc / 12f * 4 + 7 + xc) * 2 && getCursorPosX(MainWindow.handle) < (widthc / 12f * 5 - 7 + xc) * 2 && getCursorPosY(MainWindow.handle) > (heightc / 10f * 3 + 19 + yc) * 2 && getCursorPosY(MainWindow.handle) < (heightc / 10f * 3 + yc + 35) * 2) {
             hovered = true;
         }else{
             hovered = false;
         }
         if(hovered){
             bc[0] += 0.05f; if(bc[0] > 3) bc[0] = 3f;
         }else{
             bc[0] -= 0.05f; if (bc[0] < 0) bc[0] = 0;
         }
        AbstractGui.fill(e.getMatrixStack(), width / 12 * 4 + 7 + x, height / 10 * 3 + 19 + y, width / 12 * 5 -7  + x, height / 10 * 3 + y + 35, Mainx.getModuleManager().getModule(module).toggled ? fadet.hashCode() : Color.getHSBColor(0, 0, 0.1f + bc[0] * 0.01f).hashCode());

        UI.drawCenteredString(e.getMatrixStack(), fontRenderer, function, width / 12f * 4.5F - 3.5f + x, height / 10f * 3 + 22 + y, (0xffffff));

        if (MainWindow.handle != 0) {
            if (GLFW.glfwGetMouseButton(MainWindow.handle, GLFW.GLFW_MOUSE_BUTTON_1) == 0) {
                //OnClick();
                toggle = false;
            }

            if (GLFW.glfwGetMouseButton(MainWindow.handle, GLFW.GLFW_MOUSE_BUTTON_1) == 1 && !toggle && getCursorPosX(MainWindow.handle) > (widthc / 12f * 4 + 7 + xc) * 2 && getCursorPosX(MainWindow.handle) < (widthc / 12f * 5 - 7 + xc) * 2 && getCursorPosY(MainWindow.handle) > (heightc / 10f * 3 + 19 + yc) * 2 && getCursorPosY(MainWindow.handle) < (heightc / 10f * 3 + yc + 35) * 2) {
                Chtulhu.getModuleManager().getModule(modulec).toggle();
                SoundEvent breakst = SoundEvents.BLOCK_STONE_BREAK;
                Minecraft.getInstance().player.playSound(breakst, 100, 1);
                toggle = true;
            }
            

        }

    }

    float fadeiti(boolean hovered, float colorOffset){

        return 0.1f + colorOffset * 0.01f;
    }
    
}
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
Во-первых, тебе бы следовало прикрепить картинки, чтобы стало понятно, что за кнопки и как они должны выглядеть. Во-вторых, твой код... он ужасен. Твои кнопки не работают так, как надо, скорее всего из-за того, что bc статическая.
 
ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
420
Реакции[?]
23
Поинты[?]
6K
Во-первых, тебе бы следовало прикрепить картинки, чтобы стало понятно, что за кнопки и как они должны выглядеть. Во-вторых, твой код... он ужасен. Твои кнопки не работают так, как надо, скорее всего из-за того, что bc статическая.
если я даже сделаю ее не статичной то она будет постоянно обновляться, и переливания не будет впринципе, ща код перепишу и все скину
 
ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
420
Реакции[?]
23
Поинты[?]
6K
Крч ща немного рекоднул, вот как должно быть с обеими кнопками:
Пожалуйста, авторизуйтесь для просмотра ссылки.

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

Проблема в переменной RGBAOffsets, а именно что она меняется в другом клоне класса кнопки, я хуй знает как это фиксить, ибо статичных переменных в методах в джава нет

Вот код самого класса кнопки:
Код:
package chtulhu.gui;

import chtulhu.Chtulhu;
import chtulhu.events.render.RenderHUDEvent;
import chtulhu.utils.client.ClientUtils;
import chtulhu.utils.render.ColorUtility;
import chtulhu.utils.render.ColorUtils;
import chtulhu.utils.render.RenderUtils;
import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import java.awt.*;
import java.nio.DoubleBuffer;

import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import org.lwjgl.BufferUtils;
import org.lwjgl.glfw.*;

public class ButtonUI {
    static boolean clickToggle = false;
    static boolean hoveredState = false;
    private static final float[] RGBAOffsets = new float[]{0, 0, 255, 0};
    SoundEvent stone_break = SoundEvents.BLOCK_STONE_BREAK;
    SoundEvent stone_place = SoundEvents.BLOCK_STONE_PLACE;
    Color fadet = Color.getHSBColor(0.666f, 0.46f, 1f);

    public ButtonUI(int height, int width, String function, String module, FontRenderer fontRenderer, int x, int y, RenderHUDEvent e){
        logicNRender(e, width, x, height, y, fontRenderer, function, module);
    }

    final void logicNRender(RenderHUDEvent e, int width, int x, int height, int y, FontRenderer fontRenderer, String function, String module) {

        //Hovered state var
        hoveredState = isHovered((width / 12f * 4 + 1 + x) * 2, (height / 10f * 3 + 22 + y) * 2, (width / 12f * 4 + 1 + x) * 2 + (width / 12f -8) * 2, (height / 10f * 3 + 22 + y) * 2 + (height / 10f -48) * 2);

        //Fade on hover
        if(hoveredState) {
            RGBAOffsets[3] += 5f;
            if (RGBAOffsets[3] > 255f) RGBAOffsets[3] = 255f;
        }else
            RGBAOffsets[3] -= 5f; if (RGBAOffsets[3] < 0) RGBAOffsets[3] = 0;

        //Render
        RenderUtils.drawGradientRound(width / 12f * 4 + x, height / 10f * 3 + 21 + y, width / 12f -6, height / 10f -46, 2,
                ColorUtility.TwoColorEffect(ColorUtility.rgba(138, 138, 255, RGBAOffsets[3]), ColorUtility.rgba(255, 255, 255, RGBAOffsets[3]), 4f, 1).hashCode(),
                ColorUtility.TwoColorEffect(ColorUtility.rgba(255, 255, 255, RGBAOffsets[3]), ColorUtility.rgba(138, 138, 255, RGBAOffsets[3]), 4f, 1).hashCode(),
                ColorUtility.TwoColorEffect(ColorUtility.rgba(255, 255, 255, RGBAOffsets[3]), ColorUtility.rgba(138, 138, 255, RGBAOffsets[3]), 4f, 1).hashCode(),
                ColorUtility.TwoColorEffect(ColorUtility.rgba(138, 138, 255, RGBAOffsets[3]), ColorUtility.rgba(255, 255, 255, RGBAOffsets[3]), 4f, 1).hashCode());
        RenderUtils.drawRound(width / 12f * 4 + 1 + x, height / 10f * 3 + 22 + y, width / 12f -8, height / 10f -48, 2, Chtulhu.getModuleManager().getModule(module).toggled ? fadet.hashCode() : new Color(255, 255, 255).hashCode());
        ChtulhuUI.drawCenteredString(e.getMatrixStack(), fontRenderer, function, width / 12f * 4.5F - 3.5f + x, height / 10f * 3 + 28.5f + y, new Color(0x343434).getRGB());

        //Func toggling
        if (MainWindow.handle != 0) {

            if (GLFW.glfwGetMouseButton(MainWindow.handle, GLFW.GLFW_MOUSE_BUTTON_1) == 0) clickToggle = false;

            if (GLFW.glfwGetMouseButton(MainWindow.handle, GLFW.GLFW_MOUSE_BUTTON_1) == 1 && !clickToggle && hoveredState) {

                if(Chtulhu.getModuleManager().getModule(module).toggled)
                    Minecraft.getInstance().player.playSound(stone_break, 100, 1);
                else
                    Minecraft.getInstance().player.playSound(stone_place, 100, 1);

                Chtulhu.getModuleManager().getModule(module).toggle();

                clickToggle = true;
            }

        }

    }

    public static double getCursorPosX(long windowID) {
        DoubleBuffer posX = BufferUtils.createDoubleBuffer(1);
        GLFW.glfwGetCursorPos(windowID, posX, null);
        return posX.get(0);
    }

    public static double getCursorPosY(long windowID) {
        DoubleBuffer posY = BufferUtils.createDoubleBuffer(1);
        GLFW.glfwGetCursorPos(windowID, null, posY);
        return posY.get(0);
    }

    boolean isHovered(float minX, float minY, float maxX, float maxY){
        return getCursorPosX(MainWindow.handle) >= minX && getCursorPosX(MainWindow.handle) <= maxX && getCursorPosY(MainWindow.handle) >= minY && getCursorPosY(MainWindow.handle) <= maxY;
    }

}
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
Проблема в переменной RGBAOffsets, а именно что она меняется в другом клоне класса кнопки, я хуй знает как это фиксить, ибо статичных переменных в методах в джава нет
private static final float[] RGBAOffsets = new float[]{0, 0, 255, 0};
???? а это тогда что?

зачем ты вытаскиваешь положение курсора и проверяешь клик напрямую? У тебя в классе Screen первое передается как параметры в render, а для второго есть отдельный метод
 
ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
420
Реакции[?]
23
Поинты[?]
6K
зачем ты вытаскиваешь положение курсора и проверяешь клик напрямую? У тебя в классе Screen первое передается как параметры в render, а для второго есть отдельный метод
так это тут при чем, меня мучает конкретно проблема с изменением альфы цвета
???? а это тогда что?
ты про что? это статичная переменная в классе, насколько я помню в с++ есть статичные переменные которые можно создавать прямо в методе, мб я ошибаюсь, но все же есть какие варианты фикса этой хуйни?
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
420
Реакции[?]
23
Поинты[?]
6K

Вложения

Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
Сверху Снизу