Начинающий
- Статус
- Оффлайн
- Регистрация
- 25 Сен 2024
- Сообщения
- 12
- Реакции
- 0
- Выберите загрузчик игры
- OptiFine
SS - приклеплен ниже
думаю крассиво делалась 5 минут | помог гпт
MainMenu:
package im.expensive.ui.mainmenu;
import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.Expensive;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.client.IMinecraft;
import im.expensive.utils.client.Vec2i;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.font.Fonts;
import lombok.AllArgsConstructor;
import lombok.Getter;
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.text.ITextComponent;
import java.util.ArrayList;
import java.util.List;
public class MainScreen extends Screen implements IMinecraft {
public MainScreen() {
super(ITextComponent.getTextComponentOrEmpty(""));
}
private final ResourceLocation background = new ResourceLocation("expensive/images/dark_gradient.png");
private final ResourceLocation logo = new ResourceLocation("expensive/images/n_logo.png");
private final List<Button> buttons = new ArrayList<>();
@Override
public void init(Minecraft minecraft, int width, int height) {
super.init(minecraft, width, height);
buttons.clear();
float buttonWidth = 120;
float buttonHeight = 20;
float startY = height / 2f - 40;
float x = width - buttonWidth - 50;
buttons.add(new Button(x, startY, buttonWidth, buttonHeight, "Одиночная игра", () ->
mc.displayGuiScreen(new WorldSelectionScreen(this))));
startY += buttonHeight + 5;
buttons.add(new Button(x, startY, buttonWidth, buttonHeight, "Сетевая игра", () ->
mc.displayGuiScreen(new MultiplayerScreen(this))));
startY += buttonHeight + 5;
buttons.add(new Button(x, startY, buttonWidth, buttonHeight, "Аккаунты", () -> {
// пастеры здесь вместо System.out.println("Alt menu clicked"); ставим ваш мейнаккунты
System.out.println("Alt menu clicked");
}));
startY += buttonHeight + 5;
buttons.add(new Button(x, startY, buttonWidth, buttonHeight, "Настройки", () ->
mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings))));
startY += buttonHeight + 5;
buttons.add(new Button(x, startY, buttonWidth, buttonHeight, "Выйти", mc::shutdownMinecraftApplet));
}
@Override
public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) {
super.render(stack, mouseX, mouseY, partialTicks);
renderBackgroundGradient(stack);
int logoSize = Math.min(width, height) / 3;
int logoX = width / 2 - logoSize / 2;
int logoY = height / 2 - logoSize / 2 - 40;
DisplayUtils.drawImage(logo, logoX, logoY, logoSize, logoSize, -1);
Fonts.montserrat.drawCenteredText(stack, "Nursultan", width / 2f, logoY + logoSize + 30, ColorUtils.rgb(90, 150, 255), 20f);
Fonts.montserrat.drawCenteredText(stack, "SkidЖоска", width / 2f, logoY + logoSize + 50, ColorUtils.rgb(180, 200, 255), 14f);
for (Button b : buttons) {
b.render(stack, mouseX, mouseY);
}
}
private void renderBackgroundGradient(MatrixStack stack) {
DisplayUtils.drawRect(0, 0, width, height, ColorUtils.rgb(5, 10, 25));
DisplayUtils.drawRect(0, 0, width, height, ColorUtils.setAlpha(ColorUtils.rgb(0, 0, 0), 120));
}
@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);
}
@AllArgsConstructor
private static class Button {
@Getter private final float x, y, width, height;
private final String text;
private final Runnable action;
public void render(MatrixStack stack, int mouseX, int mouseY) {
boolean hovered = MathUtil.isHovered(mouseX, mouseY, x, y, width, height);
int bgColor = hovered ? ColorUtils.rgb(30, 50, 120) : ColorUtils.rgb(15, 20, 40);
int textColor = hovered ? ColorUtils.rgb(120, 170, 255) : ColorUtils.rgb(200, 200, 200);
DisplayUtils.drawRoundedRect(x, y, width, height, 4, bgColor);
Fonts.montserrat.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 4, textColor, 9f);
}
public void click(int mouseX, int mouseY, int button) {
if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
action.run();
}
}
}
}