Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Визуальная часть Nursultan MainMenu exp 3.1 skid

React Client
Премиум
Премиум
Статус
Оффлайн
Регистрация
6 Мар 2025
Сообщения
82
Реакции
0
Выберите загрузчик игры
  1. OptiFine
салам югейм, сделал MainMenu нурика для пастерков

1760213463637.png


MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
шрифт сменить и один в один будет
 
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
ахуенно заскидил, только чутка со шрифтами проебался
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
так норм но шрифт самый деф дерьмо + нужна норм утилка на рендер фото и будет как там
 
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
Ебаать +rep, ахуенно выглядит
 
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
Шрифты поменять и норм
 
салам югейм, сделал MainMenu нурика для пастерков

Посмотреть вложение 317441

MainScreen:
Expand Collapse Copy
package crash.system.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import crash.system.Expensive;
import crash.system.functions.impl.render.HUD;
import crash.system.utils.client.ClientUtil;
import crash.system.utils.client.IMinecraft;
import crash.system.utils.client.Vec2i;
import crash.system.utils.math.MathUtil;
import crash.system.utils.math.StopWatch;
import crash.system.utils.render.ColorUtils;
import crash.system.utils.render.DisplayUtils;
import crash.system.utils.render.KawaseBlur;
import crash.system.utils.render.Stencil;
import crash.system.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 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("expensive/images/mainmenu/background.png");
    private final ResourceLocation logo = new ResourceLocation("expensive/images/mainmenu/icon.png");
    private final ResourceLocation logo_line = new ResourceLocation("expensive/images/mainmenu/icon_outline.png");
    private final ResourceLocation menu = new ResourceLocation("expensive/images/mainmenu/w.png");
    private final ResourceLocation menu2 = new ResourceLocation("expensive/images/mainmenu/w2.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 = 250 / 2f;


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

        buttons.add(new Button(x, y, widthButton, 25, "Одиночная игра", () -> {
            mc.displayGuiScreen(new WorldSelectionScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Сетевая игра", () -> {
            mc.displayGuiScreen(new MultiplayerScreen(this));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Настройки", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 47 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Аккаунты", () -> {
            mc.displayGuiScreen(new OptionsScreen(this, mc.gameSettings));
        }));
        y += 91 / 2f + 5;
        buttons.add(new Button(x, y, widthButton, 25, "Выйти", mc::shutdownMinecraftApplet));
    }

    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) {
        Expensive.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 += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(menu, 1, 1, 430, 580, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(menu2, 611, 1, 430, 350, ColorUtils.rgba(23,45,79,255));
        DisplayUtils.drawImage(logo, 110, 145, 260, 230, -1);
        DisplayUtils.drawImage(logo_line, 1, 1, 430, 580, -1);
        Fonts.sfbold.drawText(matrixStack, "Nurs", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "               ultan", 770, 185, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "       Cli", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "                ent", 767, 200, ColorUtils.rgb(17,89,235), 15);
        Fonts.sfbold.drawText(matrixStack, "Нурсултан клиентик крашсистем в шоке", 395, 490, ColorUtils.rgba(90,92,94,200), 8);
        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);



    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        Expensive.getInstance().getAltWidget().onChar(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        Expensive.getInstance().getAltWidget().onKey(keyCode);
        return false;
    }

    @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));
        Expensive.getInstance().getAltWidget().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));
    }

    public static final ResourceLocation button = new ResourceLocation("expensive/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();
            DisplayUtils.drawRoundedRect(x, y + 2, width, height, 5, -1);
            Stencil.readStencilBuffer(1);

            Stencil.uninitStencilBuffer();

            DisplayUtils.drawImage(button, x, y + 2, width, height, ColorUtils.rgb(255, 255, 255));
            int color = ColorUtils.rgb(255, 255, 255);
            if (MathUtil.isHovered(mouseX, mouseY, x, y, width, height)) {
                color = ColorUtils.rgb(255, 255, 255);
            }
            Fonts.sfbold.drawCenteredText(stack, text, x + width / 2f, y + height / 2f - 5.5f + 2, ColorUtils.rgb(130,130,130), 10f);


        }

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

    }

}

Пожалуйста, авторизуйтесь для просмотра ссылки.
Честно выглядить пиздато
 
Назад
Сверху Снизу