Начинающий
- Статус
- Оффлайн
- Регистрация
- 13 Май 2025
- Сообщения
- 71
- Реакции
- 1
- Выберите загрузчик игры
- Vanilla
- OptiFine
ss
code
асетов у меня нету, чуть баганные кнопки
code
MainScreen:
package expensive.display.mainmenu;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import expensive.main.Expensive;
import expensive.util.Normal.ClientFonts;
import expensive.util.client.main.ClientUtil;
import expensive.util.client.main.IMinecraft;
import expensive.util.client.main.Vec2i;
import expensive.util.math.main.MathUtil;
import expensive.util.math.main.StopWatch;
import expensive.util.visual.main.color.ColorUtils;
import expensive.util.visual.main.display.DisplayUtils;
import expensive.util.visual.blur.KawaseBlur;
import expensive.util.visual.components.Stencil;
import expensive.util.visual.main.fonts.Fonts;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.*;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.ITextComponent;
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 List<Button> buttons = new ArrayList<>();
@Override
public void init(Minecraft minecraft, int width, int height) {
super.init(minecraft, width, height);
float widthButton = 350 / 2f;
float spacing = -140;
int buttonsCount = 4;
float totalWidth = buttonsCount * widthButton + (buttonsCount - 1) * spacing;
float startX = (ClientUtil.calc(width) - totalWidth) / 2f;
float y = Math.round(ClientUtil.calc(height) / 39f);
buttons.clear();
float x = startX;
buttons.add(new Button(
x, y, widthButton, 68 / 2f,
new ResourceLocation("eva/images/mainmenu/1.png"),
() -> mc.displayGuiScreen(new WorldSelectionScreen(this))
));
x += widthButton + spacing;
buttons.add(new Button(
x, y, widthButton, 68 / 2f,
new ResourceLocation("eva/images/mainmenu/multiplayer.png"),
() -> mc.displayGuiScreen(new MultiplayerScreen(this))
));
x += widthButton + spacing;
buttons.add(new Button(
x, y, widthButton, 68 / 2f,
new ResourceLocation("eva/images/mainmenu/options.png"),
() -> mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings))
));
x += widthButton + spacing;
buttons.add(new Button(
x, y, widthButton, 68 / 2f,
new ResourceLocation("icons/exit.png"),
mc::shutdownMinecraftApplet
));
}
@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
super.render(matrixStack, mouseX, mouseY, partialTicks);
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 += 50;
}
mc.gameRenderer.setupOverlayRendering(2);
DisplayUtils.drawRoundedRect(0, 0, 1000, 1000, 0, ColorUtils.rgba(200, 200, 200, 255));
DisplayUtils.drawShadow(
63,
16,
815,
26,
8,
ColorUtils.rgba(21, 21, 21, 255)
);
DisplayUtils.drawRoundedRect(
60,
14,
820,
30,
6,
ColorUtils.rgba(255, 255, 255, 255)
);
DisplayUtils.drawShadow(
63,
61,
815,
28,
7,
ColorUtils.rgba(21, 21, 21, 255)
);
DisplayUtils.drawRoundedRect(
60,
60,
820,
30,
6,
ColorUtils.rgba(60, 100, 255, 255)
);
drawButtons(matrixStack, mouseX, mouseY, partialTicks);
ClientFonts.msBold[24].drawString(matrixStack,"AKRIEN",70,24,ColorUtils.rgba(0,0,0,255));
ClientFonts.msBold[17].drawString(matrixStack,"BetaUser",795,22,ColorUtils.rgba(60, 100, 255, 255));
ClientFonts.msBold[14].drawString(matrixStack,"UID: 1",815,32,ColorUtils.rgba(150, 150, 150, 255));
ClientFonts.msBold[18].drawString(matrixStack,"Добро пожаловать в Akrien Beta. Скоро на этой странице что-то появится :)",70,72,ColorUtils.rgba(255,255,255,255));
mc.gameRenderer.setupOverlayRendering();
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
Vec2i fixed = ClientUtil.getMouse((int) mouseX, (int) mouseY);
buttons.forEach(b -> b.click(fixed.getX(), fixed.getY(), button));
return super.mouseClicked(mouseX, mouseY, button);
}
private void drawButtons(MatrixStack stack, int mX, int mY, float pt) {
buttons.forEach(b -> b.render(stack, mX, mY, pt));
}
@AllArgsConstructor
private class Button {
@Getter
private final float x, y, width, height;
private ResourceLocation icon;
private Runnable action;
public void render(MatrixStack stack, int mouseX, int mouseY, float pt) {
mc.getTextureManager().bindTexture(icon);
GlStateManager.color4f(0, 0, 0, 1);
int iconSize = (int) (height - 18);
blit(stack, (int)(x + (width - iconSize) / 2), (int)(y + (height - iconSize) / 2), 0, 0, iconSize, iconSize, iconSize, iconSize);
}
public void click(int mouseX, int mouseY, int button) {
if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
action.run();
}
}
}
}
асетов у меня нету, чуть баганные кнопки