Вопрос Clickgui как менять цвет

Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
115
Реакции[?]
1
Поинты[?]
1K

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

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

Спасибо!

clickgui:
package im.expensive.ui.dropdown;



import java.awt.Color;

import java.util.ArrayList;

import java.util.List;



import com.mojang.blaze3d.matrix.MatrixStack;

import net.minecraft.util.ResourceLocation;

import im.expensive.Expensive;

import im.expensive.functions.api.Category;

import im.expensive.functions.api.Function;

import im.expensive.ui.dropdown.components.ModuleComponent;

import im.expensive.ui.dropdown.impl.Component;

import im.expensive.ui.dropdown.impl.IBuilder;

import im.expensive.utils.math.MathUtil;

import im.expensive.utils.math.Vector4i;

import im.expensive.utils.render.ColorUtils;

import im.expensive.utils.render.DisplayUtils;

import im.expensive.utils.render.Scissor;

import im.expensive.utils.render.Stencil;

import im.expensive.utils.render.font.Fonts;

import lombok.Getter;

import lombok.Setter;

import net.minecraft.client.Minecraft;

import net.minecraft.util.math.MathHelper;

import net.minecraft.util.math.vector.Vector4f;



[USER=270918]@Getter[/USER]

[USER=1132491]@setter[/USER]

public class Panel implements IBuilder {



private final Category category;

protected float x;

protected float y;

protected final float width = 105f;

protected final float height = 220f;





private List<ModuleComponent> modules = new ArrayList<>();

private float scroll, animatedScrool;





public Panel(Category category) {

this.category = category;



for (Function function : Expensive.getInstance().getFunctionRegistry().getFunctions()) {

if (function.getCategory() == category) {

ModuleComponent component = new ModuleComponent(function);

component.setPanel(this);

modules.add(component);

}

}



}



@Override

public void render(MatrixStack stack, float mouseX, float mouseY) {



animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);

float header = 20;

float headerFont = 8;





DisplayUtils.drawRoundedRect(x, y, width, height, 13, ColorUtils.rgba(25, 26, 40, 165));



DisplayUtils.drawRoundedRect(x + 3.8f, y + 3.5f, width - 8, height - 7, 12,

ColorUtils.rgba(25, 26, 40, 125));



DisplayUtils.drawShadow(x + 3.8f, y + 3.5f, width - 8, height - 7, 12,

ColorUtils.rgba(25, 26, 40, 125));





Fonts.montserrat.drawCenteredText(stack, category.name(), x + width / 2f,

y + header / 2f - Fonts.montserrat.getHeight(headerFont) / 2f - 1 + 5, ColorUtils.rgb(255, 255, 255),

headerFont, 0.1f);



drawComponents(stack, mouseX, mouseY);





DisplayUtils.drawRoundedRect(x, y + height - header - 1, width, header, new Vector4f(0, 15, 0, 15),

new Vector4i(Color.TRANSLUCENT, ColorUtils.rgba(23, 23, 23, (int) (255 * 0.5)), Color.TRANSLUCENT,

ColorUtils.rgba(23, 23, 23, (int) (255 * 0.5))));





}





float max = 0;



private void drawComponents(MatrixStack stack, float mouseX, float mouseY) {

float animationValue = (float) DropDown.getAnimation().getValue() * DropDown.scale;



float halfAnimationValueRest = (1 - animationValue) / 2f;

float height = getHeight();

float testX = getX() + (getWidth() * halfAnimationValueRest);

float testY = getY() + 25 + (height * halfAnimationValueRest);

float testW = getWidth() * animationValue;

float testH = height * animationValue - 33;



testX = testX * animationValue + ((Minecraft.getInstance().getMainWindow().getScaledWidth() - testW) *

halfAnimationValueRest);



Scissor.push();

Scissor.setFromComponentCoordinates(testX, testY, testW, testH);

float offset = -1;

float header = 25;





/* float posX = 0;

float posY = 0;

DisplayUtils.drawImage(new ResourceLocation("expensive/images/hud/panel.png"), posX + 3, posY - 18.5f, 15, 15, ColorUtils.getColor(0)); */



if (max > height - header - 10) {

scroll = MathHelper.clamp(scroll, -max + height - header - 10, 0);

animatedScrool = MathHelper.clamp(animatedScrool, -max + height - header - 10, 0);

}

else {

scroll = 0;

animatedScrool = 0;

}



for (ModuleComponent component : modules) {

component.setX(getX() + 5);

component.setY(getY() + header + offset + 6 + animatedScrool);

component.setWidth(getWidth() - 10);

component.setHeight(20);

component.animation.update();

if (component.animation.getValue() > 0) {

float componentOffset = 0;

for (Component component2 : component.getComponents()) {

if (component2.isVisible())

componentOffset += component2.getHeight();

}

componentOffset *= component.animation.getValue();

component.setHeight(component.getHeight() + componentOffset);

}

component.render(stack, mouseX, mouseY);

offset += component.getHeight() + 3.5f;

}

max = offset;



Scissor.unset();

Scissor.pop();



}



@Override

public void mouseClick(float mouseX, float mouseY, int button) {

for (ModuleComponent component : modules) {

component.mouseClick(mouseX, mouseY, button);

}

}



@Override

public void keyPressed(int key, int scanCode, int modifiers) {

for (ModuleComponent component : modules) {

component.keyPressed(key, scanCode, modifiers);

}

}



@Override

public void charTyped(char codePoint, int modifiers) {

for (ModuleComponent component : modules) {

component.charTyped(codePoint, modifiers);

}

}



@Override

public void mouseRelease(float mouseX, float mouseY, int button) {

for (ModuleComponent component : modules) {

component.mouseRelease(mouseX, mouseY, button);

}

}



}
это panel из dropdown
я хочу сделать кнопку смены цветов типо как это:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2023
Сообщения
497
Реакции[?]
8
Поинты[?]
4K
clickgui:
package im.expensive.ui.dropdown;



import java.awt.Color;

import java.util.ArrayList;

import java.util.List;



import com.mojang.blaze3d.matrix.MatrixStack;

import net.minecraft.util.ResourceLocation;

import im.expensive.Expensive;

import im.expensive.functions.api.Category;

import im.expensive.functions.api.Function;

import im.expensive.ui.dropdown.components.ModuleComponent;

import im.expensive.ui.dropdown.impl.Component;

import im.expensive.ui.dropdown.impl.IBuilder;

import im.expensive.utils.math.MathUtil;

import im.expensive.utils.math.Vector4i;

import im.expensive.utils.render.ColorUtils;

import im.expensive.utils.render.DisplayUtils;

import im.expensive.utils.render.Scissor;

import im.expensive.utils.render.Stencil;

import im.expensive.utils.render.font.Fonts;

import lombok.Getter;

import lombok.Setter;

import net.minecraft.client.Minecraft;

import net.minecraft.util.math.MathHelper;

import net.minecraft.util.math.vector.Vector4f;



[USER=270918]@Getter[/USER]

[USER=1132491]@setter[/USER]

public class Panel implements IBuilder {



private final Category category;

protected float x;

protected float y;

protected final float width = 105f;

protected final float height = 220f;





private List<ModuleComponent> modules = new ArrayList<>();

private float scroll, animatedScrool;





public Panel(Category category) {

this.category = category;



for (Function function : Expensive.getInstance().getFunctionRegistry().getFunctions()) {

if (function.getCategory() == category) {

ModuleComponent component = new ModuleComponent(function);

component.setPanel(this);

modules.add(component);

}

}



}



@Override

public void render(MatrixStack stack, float mouseX, float mouseY) {



animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);

float header = 20;

float headerFont = 8;





DisplayUtils.drawRoundedRect(x, y, width, height, 13, ColorUtils.rgba(25, 26, 40, 165));



DisplayUtils.drawRoundedRect(x + 3.8f, y + 3.5f, width - 8, height - 7, 12,

ColorUtils.rgba(25, 26, 40, 125));



DisplayUtils.drawShadow(x + 3.8f, y + 3.5f, width - 8, height - 7, 12,

ColorUtils.rgba(25, 26, 40, 125));





Fonts.montserrat.drawCenteredText(stack, category.name(), x + width / 2f,

y + header / 2f - Fonts.montserrat.getHeight(headerFont) / 2f - 1 + 5, ColorUtils.rgb(255, 255, 255),

headerFont, 0.1f);



drawComponents(stack, mouseX, mouseY);





DisplayUtils.drawRoundedRect(x, y + height - header - 1, width, header, new Vector4f(0, 15, 0, 15),

new Vector4i(Color.TRANSLUCENT, ColorUtils.rgba(23, 23, 23, (int) (255 * 0.5)), Color.TRANSLUCENT,

ColorUtils.rgba(23, 23, 23, (int) (255 * 0.5))));





}





float max = 0;



private void drawComponents(MatrixStack stack, float mouseX, float mouseY) {

float animationValue = (float) DropDown.getAnimation().getValue() * DropDown.scale;



float halfAnimationValueRest = (1 - animationValue) / 2f;

float height = getHeight();

float testX = getX() + (getWidth() * halfAnimationValueRest);

float testY = getY() + 25 + (height * halfAnimationValueRest);

float testW = getWidth() * animationValue;

float testH = height * animationValue - 33;



testX = testX * animationValue + ((Minecraft.getInstance().getMainWindow().getScaledWidth() - testW) *

halfAnimationValueRest);



Scissor.push();

Scissor.setFromComponentCoordinates(testX, testY, testW, testH);

float offset = -1;

float header = 25;





/* float posX = 0;

float posY = 0;

DisplayUtils.drawImage(new ResourceLocation("expensive/images/hud/panel.png"), posX + 3, posY - 18.5f, 15, 15, ColorUtils.getColor(0)); */



if (max > height - header - 10) {

scroll = MathHelper.clamp(scroll, -max + height - header - 10, 0);

animatedScrool = MathHelper.clamp(animatedScrool, -max + height - header - 10, 0);

}

else {

scroll = 0;

animatedScrool = 0;

}



for (ModuleComponent component : modules) {

component.setX(getX() + 5);

component.setY(getY() + header + offset + 6 + animatedScrool);

component.setWidth(getWidth() - 10);

component.setHeight(20);

component.animation.update();

if (component.animation.getValue() > 0) {

float componentOffset = 0;

for (Component component2 : component.getComponents()) {

if (component2.isVisible())

componentOffset += component2.getHeight();

}

componentOffset *= component.animation.getValue();

component.setHeight(component.getHeight() + componentOffset);

}

component.render(stack, mouseX, mouseY);

offset += component.getHeight() + 3.5f;

}

max = offset;



Scissor.unset();

Scissor.pop();



}



@Override

public void mouseClick(float mouseX, float mouseY, int button) {

for (ModuleComponent component : modules) {

component.mouseClick(mouseX, mouseY, button);

}

}



@Override

public void keyPressed(int key, int scanCode, int modifiers) {

for (ModuleComponent component : modules) {

component.keyPressed(key, scanCode, modifiers);

}

}



@Override

public void charTyped(char codePoint, int modifiers) {

for (ModuleComponent component : modules) {

component.charTyped(codePoint, modifiers);

}

}



@Override

public void mouseRelease(float mouseX, float mouseY, int button) {

for (ModuleComponent component : modules) {

component.mouseRelease(mouseX, mouseY, button);

}

}



}
это panel из dropdown
я хочу сделать кнопку смены цветов типо как это:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Берешь делаешь иконку,и на нее чтобы нажималась,сделай проверку на нажатие и делай действие которое должно выполняться
 
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
115
Реакции[?]
1
Поинты[?]
1K
я фулл нуб не знаю даже джавы это все с югейма взято
Берешь делаешь иконку,и на нее чтобы нажималась,сделай проверку на нажатие и делай действие которое должно выполняться
помоги если не трудно я нуб в java
 
Начинающий
Статус
Оффлайн
Регистрация
6 Дек 2023
Сообщения
169
Реакции[?]
2
Поинты[?]
0
это в метод mouseClick, дальше сам дописываешь

Код:
if (RenderUtility.isHovered(x, y, width, height) && button == 0)) {
// действие которое должно выполняться если мышка наведена на координаты и нажат лкм
}
 
Начинающий
Статус
Оффлайн
Регистрация
8 Мар 2024
Сообщения
640
Реакции[?]
2
Поинты[?]
2K
это в метод mouseClick, дальше сам дописываешь

Код:
if (RenderUtility.isHovered(x, y, width, height) && button == 0)) {
// действие которое должно выполняться если мышка наведена на координаты и нажат лкм
}
это генеально :hushed:
 
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
115
Реакции[?]
1
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2021
Сообщения
1,273
Реакции[?]
27
Поинты[?]
40K
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
115
Реакции[?]
1
Поинты[?]
1K
это в метод mouseClick, дальше сам дописываешь

Код:
if (RenderUtility.isHovered(x, y, width, height) && button == 0)) {
// действие которое должно выполняться если мышка наведена на координаты и нажат лкм
}
спасибо, правда я не знаю как дописывать...
 
Нестандартное звание?
Пользователь
Статус
Оффлайн
Регистрация
23 Июл 2021
Сообщения
421
Реакции[?]
81
Поинты[?]
2K
спасибо, правда я не знаю как дописывать...
Если у тебя база экспы, то держи

супер пупер:
// mouseX - координата наведения по X
// mouseY - тоже самое, но уже по Y
// mouseButton - это проверка на нажатие на ЛКМ, ПКМ, СКМ

@Override
    public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
        if (RenderUtil.isInRegion(mouseX,mouseY, тут по X должны быть границы 'кнопки', тут по Y -> 'кнопки', 'ширина','высота')) {
            if (setted == opened) {
                opened = null;
                return;
            }
            opened = setted;
        }
    }
 
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2023
Сообщения
115
Реакции[?]
1
Поинты[?]
1K
Если у тебя база экспы, то держи

супер пупер:
// mouseX - координата наведения по X
// mouseY - тоже самое, но уже по Y
// mouseButton - это проверка на нажатие на ЛКМ, ПКМ, СКМ

@Override
    public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
        if (RenderUtil.isInRegion(mouseX,mouseY, тут по X должны быть границы 'кнопки', тут по Y -> 'кнопки', 'ширина','высота')) {
            if (setted == opened) {
                opened = null;
                return;
            }
            opened = setted;
        }
    }
а как сделать то clickgui + hud + arraylist белыми
 
Сверху Снизу