• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Не нажимаются кнопки в mainmenu

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Сен 2022
Сообщения
47
Реакции
0
Я запастил маин меню переместил кнопки все выбло в порядке но с временем у меня они перестали нажиматся вот код
package im.Angel.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.Angel.Angel;
import im.Angel.functions.impl.Visual.ClientHUD;
import im.Angel.utils.animations.Animation;
import im.Angel.utils.client.ClientUtil;
import im.Angel.utils.client.IMinecraft;
import im.Angel.utils.client.Vec2i;
import im.Angel.utils.math.MathUtil;
import im.Angel.utils.math.StopWatch;
import im.Angel.utils.render.ColorUtils;
import im.Angel.utils.render.DisplayUtils;
import im.Angel.utils.render.KawaseBlur;
import im.Angel.utils.render.Stencil;
import im.Angel.utils.render.font.Fonts;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.MultiplayerScreen;
import net.minecraft.client.gui.screen.OptionsScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.WorldSelectionScreen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.ITextComponent;
import ru.hogoshi.util.Easings;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ThreadLocalRandom;


public class MainScreen extends Screen implements IMinecraft {
public MainScreen() {
super(ITextComponent.getTextComponentOrEmpty(""));

}

private final ResourceLocation backmenu = new ResourceLocation("Angel/images/backmenu.png");
private final ResourceLocation telega = new ResourceLocation("Angel/images/telegram.png");
private final List<Button> buttons = new ArrayList<>();

@Override
public void init(Minecraft minecraft, int width, int height) {
super.init(minecraft, width, height);
float widthButton = 350 / 2f;


for (Particle particle : particles) {
particle.y = ThreadLocalRandom.current().nextInt(-5, height);
}
float x = ClientUtil.calc(width) / 2f - widthButton / 2f;
float y = Math.round(ClientUtil.calc(height) / 2f + 1);
buttons.clear();

buttons.add(new Button(x - 320, y + 120f, widthButton - 75, 68 - 45, "singleplayer", () -> {
mc.displayGuiScreen(new WorldSelectionScreen(this));
}));
y += 68 / 2f + 5;
buttons.add(new Button(x - 320, y + 105f, widthButton - 75, 68 - 45, "multiplayer", () -> {
mc.displayGuiScreen(new MultiplayerScreen(this));
}));
y += 68 / 2f + 5;
buttons.add(new Button(x - 320, y + 90, widthButton - 75, 68 - 45, "option", () -> {
mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
}));
y += 68 / 2f + 5;
buttons.add(new Button(x - 320, y + 75f, widthButton - 75, 68 - 45, "quit", () -> {
System.exit(0);
}));
}

private static final CopyOnWriteArrayList<Particle> particles = new CopyOnWriteArrayList<>();

private final StopWatch stopWatch = new StopWatch();
static boolean start = false;

@Override
public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
Angel.getInstance().getAltWidget().updateScroll((int) mouseX, (int) mouseY, (float) delta);
return super.mouseScrolled(mouseX, mouseY, delta);
}

@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
super.render(matrixStack, mouseX, mouseY, partialTicks);
if (stopWatch.isReached(100)) {
particles.add(new Particle());
stopWatch.reset();
}
MainWindow mainWindow = mc.getMainWindow();
int windowWidth = ClientUtil.calc(mainWindow.getScaledWidth());
int windowHeight = ClientUtil.calc(mainWindow.getScaledHeight());

int logoWidth = 1920 / 2;
int logoHeight = 1080 / 2;

// Расчет координат для рисования логотипа по центру
int xLogo = (windowWidth - logoWidth) / 2;
int yLogo = (windowHeight - logoHeight) / 2 + 50;
boolean small = mainWindow.getWidth() < 900 && mainWindow.getHeight() < 900;
if (small) {
yLogo = yLogo + 50;
}
// Рисование логотипа по центру
DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
mc.gameRenderer.setupOverlayRendering(2);
DisplayUtils.drawRoundedRect(xLogo +19, yLogo +290, width -750, height -350, 11, ColorUtils.rgba(0, 0, 0, 180));
DisplayUtils.drawShadow(xLogo + 120, yLogo + 320, ClientHUD.getColor(0),height,1,-1);
KawaseBlur.blur.updateBlur(3, 4);
Fonts.sfbold.drawCenteredText(matrixStack, "AngelClient", xLogo + 120, yLogo +320, ClientHUD.getColor(0), 15F);
Fonts.sfui.drawCenteredText(matrixStack, "", xLogo + 410, yLogo +310, -1, 7.5F);
drawButtons(matrixStack, mouseX, mouseY, partialTicks);

Angel.getInstance().getAltWidget().render(matrixStack, mouseX, mouseY);
mc.gameRenderer.setupOverlayRendering();

}

private void drawButtons(MatrixStack stack, int mX, int mY, float pt) {

buttons.forEach(b -> b.render(stack, mX, mY, pt));
}

public static final ResourceLocation button = new ResourceLocation("Angel/images/button.png");

private class Particle {

private final float x;
private float y;
private float size;

public Particle() {
x = ThreadLocalRandom.current().nextInt(0, mc.getMainWindow().getScaledWidth());
y = 0;
size = 0;
}

public void update() {
y += 1f;
}

public void render(MatrixStack stack) {
update();
size += 0.1f;
GlStateManager.pushMatrix();
GlStateManager.translated((x + Math.sin((System.nanoTime() / 1000000000f)) * 5), y, 0);
GlStateManager.rotatef(size * 20, 0, 0, 1);
GlStateManager.translated(-(x + Math.sin((System.nanoTime() / 1000000000f)) * 5), -y, 0);
float multi = 1 - MathHelper.clamp((y / mc.getMainWindow().getScaledHeight()), 0, 1);
y += 1;
Fonts.damage.drawText(stack, "A", (float) (x + Math.sin((System.nanoTime() / 1000000000f)) * 5), y, -1, MathHelper.clamp(size * multi, 0, 9));
GlStateManager.popMatrix();
if (y >= mc.getMainWindow().getScaledHeight()) {
particles.remove(this);
}
}

}

@AllArgsConstructor
private class Button {
@Getter
private final float x, y, width, height;
private String text;
private Runnable action;

public void render(MatrixStack stack, int mouseX, int mouseY, float pt) {
Stencil.initStencilToWrite();
Stencil.readStencilBuffer(1);
KawaseBlur.blur.BLURRED.draw();
Stencil.uninitStencilBuffer();

DisplayUtils.drawRoundedRect(x, y + 1, width, height, 6f, ColorUtils.rgba(0,0,0,100));

int color = ColorUtils.rgb(161, 164, 177);
if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
color = ColorUtils.rgb(255, 255, 255);
}
Fonts.montserrat.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, color, 10f);
//2
// int buttoncolor = ColorUtils.rgba(21, 24, 40, 255);
int buttoncolor = ColorUtils.rgba(21,23,56,222);
if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
buttoncolor = ClientHUD.getColor(1, 15);
}
// DisplayUtils.drawRoundedRect(x, y, width, height, 5, buttoncolor);
DisplayUtils.drawRoundedRect(x, y, width, height,7,buttoncolor);
Fonts.sfMedium.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, -1, 11f);


}

public void click(int mouseX, int mouseY, int button) {
if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
action.run();
}
}

}

}
 
Назад
Сверху Снизу