Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Визуальная часть AltManager | Base Expensive 2.0

  • Автор темы Автор темы Twiser
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2022
Сообщения
196
Реакции
1
Выберите загрузчик игры
  1. Forge
Делал его ещё в марте, но он мне не понравился и я делаю другой так что вот:


Java:
Expand Collapse Copy
package newcode.fun.ui.alt;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.MainMenuScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Session;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.StringTextComponent;
import newcode.fun.control.Manager;
import newcode.fun.ui.midnight.StyleManager;
import newcode.fun.utils.IMinecraft;
import newcode.fun.utils.SoundUtils;
import newcode.fun.utils.render.*;
import newcode.fun.utils.render.animation.AnimationMath;
import org.apache.commons.lang3.RandomStringUtils;
import org.joml.Vector4i;
import org.lwjgl.glfw.GLFW;
import newcode.fun.utils.font.Fonts;

import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;

import static newcode.fun.utils.IMinecraft.mc;

public class AltManager extends Screen {

    public AltManager() {
        super(new StringTextComponent(""));
    }

    public ArrayList<Account> accounts = new ArrayList<>();
    private String altName = "";
    private boolean typing;
    private String editingAccountName = null;
    private boolean showDeletedPanel = false;
    private final DeletedAltConfig deletedAltConfig = new DeletedAltConfig();

    public static class DeletedAccount {
        String accountName;
        ResourceLocation skin;
        long deletionTime;

        DeletedAccount(String accountName, ResourceLocation skin, long deletionTime) {
            this.accountName = accountName;
            this.skin = skin;
            this.deletionTime = deletionTime;
        }
    }

    @Override
    protected void init() {
        super.init();
        try {
            deletedAltConfig.init();
            System.out.println("Deleted accounts loaded: " + Manager.deletedAccounts.size());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        return super.mouseReleased(mouseX, mouseY, button);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == GLFW.GLFW_KEY_V && (modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
            altName += Minecraft.getInstance().keyboardListener.getClipboardString();
        }

        if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
            if (!altName.isEmpty())
                altName = altName.substring(0, altName.length() - 1);
        }

        if (keyCode == GLFW.GLFW_KEY_ENTER) {
            if (!altName.isEmpty()) {
                if (editingAccountName != null) {
                    for (Account account : accounts) {
                        if (account.accountName.equals(editingAccountName)) {
                            account.accountName = altName;
                            break;
                        }
                    }
                    editingAccountName = null;
                    AltConfig.updateFile();
                } else {
                    accounts.add(new Account(altName));
                }
                typing = false;
                altName = "";
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        altName += !typing ? "" : Character.toString(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        if (button == 0) {
            float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

            if (showDeletedPanel) {
                float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
                float deletedPanelY = panelY;
                float deletedPanelWidth = 180f;
                float iter = 0;
                for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                    float acY = deletedPanelY + 30f + (iter * 40f);
                    float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                    float restoreButtonX = centeredRectX + 120f;
                    float restoreButtonY = acY + 5f;

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) restoreButtonX, (int) restoreButtonY, 20, 20)) {
                        DeletedAccount deletedAccount = Manager.deletedAccounts.remove(i);
                        accounts.add(new Account(deletedAccount.accountName));
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                    iter++;
                }
            }

            float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
            float recycleButtonY = panelY + 5f;
            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20)) {
                showDeletedPanel = !showDeletedPanel;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                if (!altName.isEmpty()) {
                    accounts.add(new Account(altName));
                    altName = "";
                    AltConfig.updateFile();
                    if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                        SoundUtils.playSound("theme.wav", 70, false);
                    }
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                IMinecraft.mc.displayGuiScreen(new MainMenuScreen());
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                altName = RandomStringUtils.randomAlphabetic(8);
                typing = true;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
                typing = !typing;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
            float iter = scrollAn;

            float scissorYMin = panelY + 70f;
            float scissorYMax = scissorYMin + 70f;

            for (int i = 0; i < accounts.size(); i++) {
                Account account = accounts.get(i);
                float acY = panelY + 70f + (iter * 40f);

                if (acY >= scissorYMin && acY <= scissorYMax - 30f) {
                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30)) {
                        IMinecraft.mc.session = new Session(account.accountName, "", "", "mojang");
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20,
                            20)) {
                        altName = account.accountName;
                        editingAccountName = account.accountName;
                        typing = true;
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme2.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20)) {
                        Account deletedAccount = accounts.remove(i);
                        addToDeletedAccounts(deletedAccount);
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                }
                iter++;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
    }

    @Override
    public void tick() {
        super.tick();
    }

    public float scroll;
    public float scrollAn;

    public boolean hoveredFirst;
    public boolean hoveredSecond;
    public boolean hoveredThird;

    public float hoveredFirstAn;
    public float hoveredSecondAn;
    public float hoveredThirdAn;

    private boolean isMouseOverButton(int mouseX, int mouseY, int buttonX, int buttonY, int buttonWidth, int buttonHeight) {
        return mouseX >= buttonX && mouseY >= buttonY && mouseX < buttonX + buttonWidth && mouseY < buttonY + buttonHeight;
    }

    @Override
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        scroll += delta * 1;
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    private void addToDeletedAccounts(Account account) {
        if (Manager.deletedAccounts.size() >= 5) {
            Manager.deletedAccounts.remove(0);
        }
        if (account == null || account.accountName == null || account.skin == null) {
           return;
        }
        Manager.deletedAccounts.add(new DeletedAccount(account.accountName, account.skin, System.currentTimeMillis()));
        DeletedAltConfig.updateFile();
    }

    @Override
    public void onClose() {
        DeletedAltConfig.updateFile();
        super.onClose();
    }

    @Override
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        scrollAn = AnimationMath.lerp(scrollAn, scroll, 5);
        hoveredFirst = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredSecond = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredThird = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredFirstAn = AnimationMath.lerp(hoveredFirstAn, hoveredFirst ? 1 : 0, 10);
        hoveredSecondAn = AnimationMath.lerp(hoveredSecondAn, hoveredSecond ? 1 : 0, 10);
        hoveredThirdAn = AnimationMath.lerp(hoveredThirdAn, hoveredThird ? 1 : 0, 10);

        IMinecraft.mc.gameRenderer.setupOverlayRendering(2);

        int firstColor2 = (Manager.FUNCTION_MANAGER.hud2.mode.is("13") ? ColorUtils.getColorStyle(0.0F) : StyleManager.getCurrentStyle().getSecondaryColor());
        int primaryColor = new Color(25, 26, 33, 230).getRGB();
        int secondaryColor = new Color(34, 34, 34, 179).getRGB();
        int textColor = new Color(200, 200, 200, 255).getRGB();
        int glowColor = new Color(50, 80, 150, 100).getRGB();

        RenderUtils.Render2D.drawImage(new ResourceLocation("newcode/images/all/mainscreen/background.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);

        float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

        float nickRectX = (mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float nickRectY = panelY - 40f;
        float nickRectWidth = 300f;
        float nickRectHeight = 30f;
        RenderUtils.Render2D.drawShadow(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 10, glowColor);
        RenderUtils.Render2D.drawRoundedRect(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        String nickText = "��� ���: " + IMinecraft.mc.session.getUsername();
        float nickTextWidth = Fonts.newcode[16].getWidth(nickText);
        float nickTextHeight = Fonts.newcode[16].getFontHeight();
        float nickTextX = nickRectX + (nickRectWidth - nickTextWidth) / 2f;
        float nickTextY = nickRectY + (nickRectHeight - nickTextHeight) / 2f + 2f;
        Fonts.newcode[16].drawString(matrixStack, nickText, nickTextX, nickTextY, textColor);

        RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 15, glowColor);
        RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        Fonts.newcode[20].drawCenteredString(matrixStack, "Alt Manager", mc.getMainWindow().scaledWidth() / 2f, panelY + 8f, textColor);

        float inputHoverProgress = AnimationMath.lerp(0, 1, isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25) ? 1 : 0);
        if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress)
            ));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, new Color(150, 150, 150, 255).getRGB());
        }

        float buttonPanelX = (mc.getMainWindow().scaledWidth() / 2f) - 145f;
        float buttonPanelY = panelY + 150f;
        float buttonPanelWidth = 290f;
        float buttonPanelHeight = 45f;
        RenderUtils.Render2D.drawShadow(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 8, glowColor);
        RenderUtils.Render2D.drawRoundedRect(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));

        float addHoverProgress = hoveredFirstAn;
        if (hoveredFirst) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float randomHoverProgress = hoveredThirdAn;
        if (hoveredThird) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float backHoverProgress = hoveredSecondAn;
        if (hoveredSecond) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float iter = scrollAn;
        float size = 0;
        SmartScissor.push();
        SmartScissor.setFromComponentCoordinates((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 70f, 300, 70);

        for (int i = 0; i < accounts.size(); i++) {
            Account account = accounts.get(i);
            float acY = panelY + 70f + (iter * 40f);
            boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30);
            boolean isSelected = account.accountName.equalsIgnoreCase(IMinecraft.mc.session.getUsername());
            float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);
            float accountSelectProgress = AnimationMath.lerp(0, 1, isSelected ? 1 : 0);

            if (isHovered) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress)
                ));
            } else if (isSelected) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress)
                ));
            } else {
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            }

            float headX = altX + 5f;
            float headY = acY + (30f - 25f) / 2f;
            StencilUtils.initStencilToWrite();
            RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
            StencilUtils.readStencilBuffer(1);
            mc.getTextureManager().bindTexture(account.skin);
            AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
            StencilUtils.uninitStencilBuffer();

            float nickX = headX + 25f + 5f;
            float nickY = acY + (30f - Fonts.newcode[16].getFontHeight()) / 2f + 4f;
            Fonts.newcode[16].drawString(matrixStack, account.accountName, nickX, nickY, isHovered || isSelected ? textColor : new Color(150, 150, 150, 255).getRGB());

            boolean isEditHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20, 20);
            float editHoverProgress = AnimationMath.lerp(0, 1, isEditHovered ? 1 : 0);
            int editBaseColor = new Color(34, 139, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 240f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 240f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "q", altX + 250f, acY + 15f, isEditHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            boolean isDeleteHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20);
            float deleteHoverProgress = AnimationMath.lerp(0, 1, isDeleteHovered ? 1 : 0);
            int deleteBaseColor = new Color(139, 34, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 270f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 270f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "p", altX + 280f, acY + 15f, isDeleteHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            iter++;
            size++;
        }

        scroll = MathHelper.clamp(scroll, size > 1 ? -size + 1 : 0, 0);

        SmartScissor.unset();
        SmartScissor.pop();

        float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
        float recycleButtonY = panelY + 5f;
        boolean isRecycleHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20);
        float recycleHoverProgress = AnimationMath.lerp(0, 1, isRecycleHovered ? 1 : 0);
        RenderUtils.Render2D.drawRoundedRect(recycleButtonX, recycleButtonY, 20, 20, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(recycleButtonX, recycleButtonY, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress)
        ));
        Fonts.iconn[21].drawCenteredString(matrixStack, "a", recycleButtonX + 10f, recycleButtonY + 9f, isRecycleHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

        if (showDeletedPanel) {
            float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
            float deletedPanelY = panelY;
            float deletedPanelWidth = 180f;
            float deletedPanelHeight = 200f;

            RenderUtils.Render2D.drawShadow(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 15, glowColor);
            RenderUtils.Render2D.drawRoundedRect(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Deleted Accounts", deletedPanelX + deletedPanelWidth / 2f, deletedPanelY + 8f, textColor);

            SmartScissor.push();
            SmartScissor.setFromComponentCoordinates(deletedPanelX, deletedPanelY + 30f, deletedPanelWidth, 150);
            iter = 0;
            for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                AltManager.DeletedAccount account = Manager.deletedAccounts.get(i);
                float acY = deletedPanelY + 30f + (iter * 40f);
                float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) centeredRectX, (int) acY, 150, 30);
                float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);

                if (isHovered) {
                    RenderUtils.Render2D.drawShadow(centeredRectX, acY, 150, 30, 10, glowColor);
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress)
                    ));
                } else {
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
                }

                float headX = centeredRectX + 5f;
                float headY = acY + (30f - 25f) / 2f;
                StencilUtils.initStencilToWrite();
                RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
                StencilUtils.readStencilBuffer(1);
                mc.getTextureManager().bindTexture(account.skin);
                AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
                StencilUtils.uninitStencilBuffer();

                float nickX = headX + 25f + 5f;
                float nickY = acY + (30f - Fonts.newcode[14].getFontHeight()) / 2f + 4f;
                Fonts.newcode[14].drawString(matrixStack, account.accountName, nickX, nickY, isHovered ? textColor : new Color(150, 150, 150, 255).getRGB());

                boolean isRestoreHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (centeredRectX + 120f), (int) (acY + 5f), 20, 20);
                float restoreHoverProgress = AnimationMath.lerp(0, 1, isRestoreHovered ? 1 : 0);
                int restoreBaseColor = new Color(34, 139, 34, 179).getRGB();
                RenderUtils.Render2D.drawRoundedRect(centeredRectX + 120f, acY + 5f, 20, 20, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(centeredRectX + 120f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress)
                ));
                Fonts.iconn[14].drawCenteredString(matrixStack, "b", centeredRectX + 130f, acY + 15f, isRestoreHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

                iter++;
            }
            SmartScissor.unset();
            SmartScissor.pop();
        }

        IMinecraft.mc.gameRenderer.setupOverlayRendering();
    }
}
 

Вложения

  • Screenshot_3.png
    Screenshot_3.png
    45.3 KB · Просмотры: 1,221
Делал его ещё в марте, но он мне не понравился и я делаю другой так что вот:


Java:
Expand Collapse Copy
package newcode.fun.ui.alt;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.MainMenuScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Session;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.StringTextComponent;
import newcode.fun.control.Manager;
import newcode.fun.ui.midnight.StyleManager;
import newcode.fun.utils.IMinecraft;
import newcode.fun.utils.SoundUtils;
import newcode.fun.utils.render.*;
import newcode.fun.utils.render.animation.AnimationMath;
import org.apache.commons.lang3.RandomStringUtils;
import org.joml.Vector4i;
import org.lwjgl.glfw.GLFW;
import newcode.fun.utils.font.Fonts;

import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;

import static newcode.fun.utils.IMinecraft.mc;

public class AltManager extends Screen {

    public AltManager() {
        super(new StringTextComponent(""));
    }

    public ArrayList<Account> accounts = new ArrayList<>();
    private String altName = "";
    private boolean typing;
    private String editingAccountName = null;
    private boolean showDeletedPanel = false;
    private final DeletedAltConfig deletedAltConfig = new DeletedAltConfig();

    public static class DeletedAccount {
        String accountName;
        ResourceLocation skin;
        long deletionTime;

        DeletedAccount(String accountName, ResourceLocation skin, long deletionTime) {
            this.accountName = accountName;
            this.skin = skin;
            this.deletionTime = deletionTime;
        }
    }

    @Override
    protected void init() {
        super.init();
        try {
            deletedAltConfig.init();
            System.out.println("Deleted accounts loaded: " + Manager.deletedAccounts.size());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        return super.mouseReleased(mouseX, mouseY, button);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == GLFW.GLFW_KEY_V && (modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
            altName += Minecraft.getInstance().keyboardListener.getClipboardString();
        }

        if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
            if (!altName.isEmpty())
                altName = altName.substring(0, altName.length() - 1);
        }

        if (keyCode == GLFW.GLFW_KEY_ENTER) {
            if (!altName.isEmpty()) {
                if (editingAccountName != null) {
                    for (Account account : accounts) {
                        if (account.accountName.equals(editingAccountName)) {
                            account.accountName = altName;
                            break;
                        }
                    }
                    editingAccountName = null;
                    AltConfig.updateFile();
                } else {
                    accounts.add(new Account(altName));
                }
                typing = false;
                altName = "";
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        altName += !typing ? "" : Character.toString(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        if (button == 0) {
            float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

            if (showDeletedPanel) {
                float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
                float deletedPanelY = panelY;
                float deletedPanelWidth = 180f;
                float iter = 0;
                for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                    float acY = deletedPanelY + 30f + (iter * 40f);
                    float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                    float restoreButtonX = centeredRectX + 120f;
                    float restoreButtonY = acY + 5f;

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) restoreButtonX, (int) restoreButtonY, 20, 20)) {
                        DeletedAccount deletedAccount = Manager.deletedAccounts.remove(i);
                        accounts.add(new Account(deletedAccount.accountName));
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                    iter++;
                }
            }

            float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
            float recycleButtonY = panelY + 5f;
            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20)) {
                showDeletedPanel = !showDeletedPanel;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                if (!altName.isEmpty()) {
                    accounts.add(new Account(altName));
                    altName = "";
                    AltConfig.updateFile();
                    if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                        SoundUtils.playSound("theme.wav", 70, false);
                    }
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                IMinecraft.mc.displayGuiScreen(new MainMenuScreen());
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                altName = RandomStringUtils.randomAlphabetic(8);
                typing = true;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
                typing = !typing;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
            float iter = scrollAn;

            float scissorYMin = panelY + 70f;
            float scissorYMax = scissorYMin + 70f;

            for (int i = 0; i < accounts.size(); i++) {
                Account account = accounts.get(i);
                float acY = panelY + 70f + (iter * 40f);

                if (acY >= scissorYMin && acY <= scissorYMax - 30f) {
                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30)) {
                        IMinecraft.mc.session = new Session(account.accountName, "", "", "mojang");
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20,
                            20)) {
                        altName = account.accountName;
                        editingAccountName = account.accountName;
                        typing = true;
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme2.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20)) {
                        Account deletedAccount = accounts.remove(i);
                        addToDeletedAccounts(deletedAccount);
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                }
                iter++;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
    }

    @Override
    public void tick() {
        super.tick();
    }

    public float scroll;
    public float scrollAn;

    public boolean hoveredFirst;
    public boolean hoveredSecond;
    public boolean hoveredThird;

    public float hoveredFirstAn;
    public float hoveredSecondAn;
    public float hoveredThirdAn;

    private boolean isMouseOverButton(int mouseX, int mouseY, int buttonX, int buttonY, int buttonWidth, int buttonHeight) {
        return mouseX >= buttonX && mouseY >= buttonY && mouseX < buttonX + buttonWidth && mouseY < buttonY + buttonHeight;
    }

    @Override
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        scroll += delta * 1;
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    private void addToDeletedAccounts(Account account) {
        if (Manager.deletedAccounts.size() >= 5) {
            Manager.deletedAccounts.remove(0);
        }
        if (account == null || account.accountName == null || account.skin == null) {
           return;
        }
        Manager.deletedAccounts.add(new DeletedAccount(account.accountName, account.skin, System.currentTimeMillis()));
        DeletedAltConfig.updateFile();
    }

    @Override
    public void onClose() {
        DeletedAltConfig.updateFile();
        super.onClose();
    }

    @Override
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        scrollAn = AnimationMath.lerp(scrollAn, scroll, 5);
        hoveredFirst = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredSecond = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredThird = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredFirstAn = AnimationMath.lerp(hoveredFirstAn, hoveredFirst ? 1 : 0, 10);
        hoveredSecondAn = AnimationMath.lerp(hoveredSecondAn, hoveredSecond ? 1 : 0, 10);
        hoveredThirdAn = AnimationMath.lerp(hoveredThirdAn, hoveredThird ? 1 : 0, 10);

        IMinecraft.mc.gameRenderer.setupOverlayRendering(2);

        int firstColor2 = (Manager.FUNCTION_MANAGER.hud2.mode.is("13") ? ColorUtils.getColorStyle(0.0F) : StyleManager.getCurrentStyle().getSecondaryColor());
        int primaryColor = new Color(25, 26, 33, 230).getRGB();
        int secondaryColor = new Color(34, 34, 34, 179).getRGB();
        int textColor = new Color(200, 200, 200, 255).getRGB();
        int glowColor = new Color(50, 80, 150, 100).getRGB();

        RenderUtils.Render2D.drawImage(new ResourceLocation("newcode/images/all/mainscreen/background.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);

        float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

        float nickRectX = (mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float nickRectY = panelY - 40f;
        float nickRectWidth = 300f;
        float nickRectHeight = 30f;
        RenderUtils.Render2D.drawShadow(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 10, glowColor);
        RenderUtils.Render2D.drawRoundedRect(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        String nickText = "��� ���: " + IMinecraft.mc.session.getUsername();
        float nickTextWidth = Fonts.newcode[16].getWidth(nickText);
        float nickTextHeight = Fonts.newcode[16].getFontHeight();
        float nickTextX = nickRectX + (nickRectWidth - nickTextWidth) / 2f;
        float nickTextY = nickRectY + (nickRectHeight - nickTextHeight) / 2f + 2f;
        Fonts.newcode[16].drawString(matrixStack, nickText, nickTextX, nickTextY, textColor);

        RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 15, glowColor);
        RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        Fonts.newcode[20].drawCenteredString(matrixStack, "Alt Manager", mc.getMainWindow().scaledWidth() / 2f, panelY + 8f, textColor);

        float inputHoverProgress = AnimationMath.lerp(0, 1, isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25) ? 1 : 0);
        if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress)
            ));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, new Color(150, 150, 150, 255).getRGB());
        }

        float buttonPanelX = (mc.getMainWindow().scaledWidth() / 2f) - 145f;
        float buttonPanelY = panelY + 150f;
        float buttonPanelWidth = 290f;
        float buttonPanelHeight = 45f;
        RenderUtils.Render2D.drawShadow(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 8, glowColor);
        RenderUtils.Render2D.drawRoundedRect(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));

        float addHoverProgress = hoveredFirstAn;
        if (hoveredFirst) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float randomHoverProgress = hoveredThirdAn;
        if (hoveredThird) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float backHoverProgress = hoveredSecondAn;
        if (hoveredSecond) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float iter = scrollAn;
        float size = 0;
        SmartScissor.push();
        SmartScissor.setFromComponentCoordinates((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 70f, 300, 70);

        for (int i = 0; i < accounts.size(); i++) {
            Account account = accounts.get(i);
            float acY = panelY + 70f + (iter * 40f);
            boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30);
            boolean isSelected = account.accountName.equalsIgnoreCase(IMinecraft.mc.session.getUsername());
            float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);
            float accountSelectProgress = AnimationMath.lerp(0, 1, isSelected ? 1 : 0);

            if (isHovered) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress)
                ));
            } else if (isSelected) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress)
                ));
            } else {
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            }

            float headX = altX + 5f;
            float headY = acY + (30f - 25f) / 2f;
            StencilUtils.initStencilToWrite();
            RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
            StencilUtils.readStencilBuffer(1);
            mc.getTextureManager().bindTexture(account.skin);
            AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
            StencilUtils.uninitStencilBuffer();

            float nickX = headX + 25f + 5f;
            float nickY = acY + (30f - Fonts.newcode[16].getFontHeight()) / 2f + 4f;
            Fonts.newcode[16].drawString(matrixStack, account.accountName, nickX, nickY, isHovered || isSelected ? textColor : new Color(150, 150, 150, 255).getRGB());

            boolean isEditHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20, 20);
            float editHoverProgress = AnimationMath.lerp(0, 1, isEditHovered ? 1 : 0);
            int editBaseColor = new Color(34, 139, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 240f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 240f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "q", altX + 250f, acY + 15f, isEditHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            boolean isDeleteHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20);
            float deleteHoverProgress = AnimationMath.lerp(0, 1, isDeleteHovered ? 1 : 0);
            int deleteBaseColor = new Color(139, 34, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 270f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 270f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "p", altX + 280f, acY + 15f, isDeleteHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            iter++;
            size++;
        }

        scroll = MathHelper.clamp(scroll, size > 1 ? -size + 1 : 0, 0);

        SmartScissor.unset();
        SmartScissor.pop();

        float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
        float recycleButtonY = panelY + 5f;
        boolean isRecycleHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20);
        float recycleHoverProgress = AnimationMath.lerp(0, 1, isRecycleHovered ? 1 : 0);
        RenderUtils.Render2D.drawRoundedRect(recycleButtonX, recycleButtonY, 20, 20, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(recycleButtonX, recycleButtonY, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress)
        ));
        Fonts.iconn[21].drawCenteredString(matrixStack, "a", recycleButtonX + 10f, recycleButtonY + 9f, isRecycleHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

        if (showDeletedPanel) {
            float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
            float deletedPanelY = panelY;
            float deletedPanelWidth = 180f;
            float deletedPanelHeight = 200f;

            RenderUtils.Render2D.drawShadow(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 15, glowColor);
            RenderUtils.Render2D.drawRoundedRect(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Deleted Accounts", deletedPanelX + deletedPanelWidth / 2f, deletedPanelY + 8f, textColor);

            SmartScissor.push();
            SmartScissor.setFromComponentCoordinates(deletedPanelX, deletedPanelY + 30f, deletedPanelWidth, 150);
            iter = 0;
            for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                AltManager.DeletedAccount account = Manager.deletedAccounts.get(i);
                float acY = deletedPanelY + 30f + (iter * 40f);
                float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) centeredRectX, (int) acY, 150, 30);
                float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);

                if (isHovered) {
                    RenderUtils.Render2D.drawShadow(centeredRectX, acY, 150, 30, 10, glowColor);
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress)
                    ));
                } else {
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
                }

                float headX = centeredRectX + 5f;
                float headY = acY + (30f - 25f) / 2f;
                StencilUtils.initStencilToWrite();
                RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
                StencilUtils.readStencilBuffer(1);
                mc.getTextureManager().bindTexture(account.skin);
                AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
                StencilUtils.uninitStencilBuffer();

                float nickX = headX + 25f + 5f;
                float nickY = acY + (30f - Fonts.newcode[14].getFontHeight()) / 2f + 4f;
                Fonts.newcode[14].drawString(matrixStack, account.accountName, nickX, nickY, isHovered ? textColor : new Color(150, 150, 150, 255).getRGB());

                boolean isRestoreHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (centeredRectX + 120f), (int) (acY + 5f), 20, 20);
                float restoreHoverProgress = AnimationMath.lerp(0, 1, isRestoreHovered ? 1 : 0);
                int restoreBaseColor = new Color(34, 139, 34, 179).getRGB();
                RenderUtils.Render2D.drawRoundedRect(centeredRectX + 120f, acY + 5f, 20, 20, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(centeredRectX + 120f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress)
                ));
                Fonts.iconn[14].drawCenteredString(matrixStack, "b", centeredRectX + 130f, acY + 15f, isRestoreHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

                iter++;
            }
            SmartScissor.unset();
            SmartScissor.pop();
        }

        IMinecraft.mc.gameRenderer.setupOverlayRendering();
    }
}
Норм
 
Делал его ещё в марте, но он мне не понравился и я делаю другой так что вот:


Java:
Expand Collapse Copy
package newcode.fun.ui.alt;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.MainMenuScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Session;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.StringTextComponent;
import newcode.fun.control.Manager;
import newcode.fun.ui.midnight.StyleManager;
import newcode.fun.utils.IMinecraft;
import newcode.fun.utils.SoundUtils;
import newcode.fun.utils.render.*;
import newcode.fun.utils.render.animation.AnimationMath;
import org.apache.commons.lang3.RandomStringUtils;
import org.joml.Vector4i;
import org.lwjgl.glfw.GLFW;
import newcode.fun.utils.font.Fonts;

import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;

import static newcode.fun.utils.IMinecraft.mc;

public class AltManager extends Screen {

    public AltManager() {
        super(new StringTextComponent(""));
    }

    public ArrayList<Account> accounts = new ArrayList<>();
    private String altName = "";
    private boolean typing;
    private String editingAccountName = null;
    private boolean showDeletedPanel = false;
    private final DeletedAltConfig deletedAltConfig = new DeletedAltConfig();

    public static class DeletedAccount {
        String accountName;
        ResourceLocation skin;
        long deletionTime;

        DeletedAccount(String accountName, ResourceLocation skin, long deletionTime) {
            this.accountName = accountName;
            this.skin = skin;
            this.deletionTime = deletionTime;
        }
    }

    @Override
    protected void init() {
        super.init();
        try {
            deletedAltConfig.init();
            System.out.println("Deleted accounts loaded: " + Manager.deletedAccounts.size());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        return super.mouseReleased(mouseX, mouseY, button);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == GLFW.GLFW_KEY_V && (modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
            altName += Minecraft.getInstance().keyboardListener.getClipboardString();
        }

        if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
            if (!altName.isEmpty())
                altName = altName.substring(0, altName.length() - 1);
        }

        if (keyCode == GLFW.GLFW_KEY_ENTER) {
            if (!altName.isEmpty()) {
                if (editingAccountName != null) {
                    for (Account account : accounts) {
                        if (account.accountName.equals(editingAccountName)) {
                            account.accountName = altName;
                            break;
                        }
                    }
                    editingAccountName = null;
                    AltConfig.updateFile();
                } else {
                    accounts.add(new Account(altName));
                }
                typing = false;
                altName = "";
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        altName += !typing ? "" : Character.toString(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        if (button == 0) {
            float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

            if (showDeletedPanel) {
                float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
                float deletedPanelY = panelY;
                float deletedPanelWidth = 180f;
                float iter = 0;
                for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                    float acY = deletedPanelY + 30f + (iter * 40f);
                    float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                    float restoreButtonX = centeredRectX + 120f;
                    float restoreButtonY = acY + 5f;

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) restoreButtonX, (int) restoreButtonY, 20, 20)) {
                        DeletedAccount deletedAccount = Manager.deletedAccounts.remove(i);
                        accounts.add(new Account(deletedAccount.accountName));
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                    iter++;
                }
            }

            float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
            float recycleButtonY = panelY + 5f;
            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20)) {
                showDeletedPanel = !showDeletedPanel;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                if (!altName.isEmpty()) {
                    accounts.add(new Account(altName));
                    altName = "";
                    AltConfig.updateFile();
                    if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                        SoundUtils.playSound("theme.wav", 70, false);
                    }
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                IMinecraft.mc.displayGuiScreen(new MainMenuScreen());
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                altName = RandomStringUtils.randomAlphabetic(8);
                typing = true;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
                typing = !typing;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
            float iter = scrollAn;

            float scissorYMin = panelY + 70f;
            float scissorYMax = scissorYMin + 70f;

            for (int i = 0; i < accounts.size(); i++) {
                Account account = accounts.get(i);
                float acY = panelY + 70f + (iter * 40f);

                if (acY >= scissorYMin && acY <= scissorYMax - 30f) {
                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30)) {
                        IMinecraft.mc.session = new Session(account.accountName, "", "", "mojang");
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20,
                            20)) {
                        altName = account.accountName;
                        editingAccountName = account.accountName;
                        typing = true;
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme2.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20)) {
                        Account deletedAccount = accounts.remove(i);
                        addToDeletedAccounts(deletedAccount);
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                }
                iter++;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
    }

    @Override
    public void tick() {
        super.tick();
    }

    public float scroll;
    public float scrollAn;

    public boolean hoveredFirst;
    public boolean hoveredSecond;
    public boolean hoveredThird;

    public float hoveredFirstAn;
    public float hoveredSecondAn;
    public float hoveredThirdAn;

    private boolean isMouseOverButton(int mouseX, int mouseY, int buttonX, int buttonY, int buttonWidth, int buttonHeight) {
        return mouseX >= buttonX && mouseY >= buttonY && mouseX < buttonX + buttonWidth && mouseY < buttonY + buttonHeight;
    }

    @Override
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        scroll += delta * 1;
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    private void addToDeletedAccounts(Account account) {
        if (Manager.deletedAccounts.size() >= 5) {
            Manager.deletedAccounts.remove(0);
        }
        if (account == null || account.accountName == null || account.skin == null) {
           return;
        }
        Manager.deletedAccounts.add(new DeletedAccount(account.accountName, account.skin, System.currentTimeMillis()));
        DeletedAltConfig.updateFile();
    }

    @Override
    public void onClose() {
        DeletedAltConfig.updateFile();
        super.onClose();
    }

    @Override
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        scrollAn = AnimationMath.lerp(scrollAn, scroll, 5);
        hoveredFirst = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredSecond = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredThird = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredFirstAn = AnimationMath.lerp(hoveredFirstAn, hoveredFirst ? 1 : 0, 10);
        hoveredSecondAn = AnimationMath.lerp(hoveredSecondAn, hoveredSecond ? 1 : 0, 10);
        hoveredThirdAn = AnimationMath.lerp(hoveredThirdAn, hoveredThird ? 1 : 0, 10);

        IMinecraft.mc.gameRenderer.setupOverlayRendering(2);

        int firstColor2 = (Manager.FUNCTION_MANAGER.hud2.mode.is("13") ? ColorUtils.getColorStyle(0.0F) : StyleManager.getCurrentStyle().getSecondaryColor());
        int primaryColor = new Color(25, 26, 33, 230).getRGB();
        int secondaryColor = new Color(34, 34, 34, 179).getRGB();
        int textColor = new Color(200, 200, 200, 255).getRGB();
        int glowColor = new Color(50, 80, 150, 100).getRGB();

        RenderUtils.Render2D.drawImage(new ResourceLocation("newcode/images/all/mainscreen/background.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);

        float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

        float nickRectX = (mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float nickRectY = panelY - 40f;
        float nickRectWidth = 300f;
        float nickRectHeight = 30f;
        RenderUtils.Render2D.drawShadow(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 10, glowColor);
        RenderUtils.Render2D.drawRoundedRect(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        String nickText = "��� ���: " + IMinecraft.mc.session.getUsername();
        float nickTextWidth = Fonts.newcode[16].getWidth(nickText);
        float nickTextHeight = Fonts.newcode[16].getFontHeight();
        float nickTextX = nickRectX + (nickRectWidth - nickTextWidth) / 2f;
        float nickTextY = nickRectY + (nickRectHeight - nickTextHeight) / 2f + 2f;
        Fonts.newcode[16].drawString(matrixStack, nickText, nickTextX, nickTextY, textColor);

        RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 15, glowColor);
        RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        Fonts.newcode[20].drawCenteredString(matrixStack, "Alt Manager", mc.getMainWindow().scaledWidth() / 2f, panelY + 8f, textColor);

        float inputHoverProgress = AnimationMath.lerp(0, 1, isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25) ? 1 : 0);
        if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress)
            ));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, new Color(150, 150, 150, 255).getRGB());
        }

        float buttonPanelX = (mc.getMainWindow().scaledWidth() / 2f) - 145f;
        float buttonPanelY = panelY + 150f;
        float buttonPanelWidth = 290f;
        float buttonPanelHeight = 45f;
        RenderUtils.Render2D.drawShadow(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 8, glowColor);
        RenderUtils.Render2D.drawRoundedRect(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));

        float addHoverProgress = hoveredFirstAn;
        if (hoveredFirst) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float randomHoverProgress = hoveredThirdAn;
        if (hoveredThird) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float backHoverProgress = hoveredSecondAn;
        if (hoveredSecond) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float iter = scrollAn;
        float size = 0;
        SmartScissor.push();
        SmartScissor.setFromComponentCoordinates((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 70f, 300, 70);

        for (int i = 0; i < accounts.size(); i++) {
            Account account = accounts.get(i);
            float acY = panelY + 70f + (iter * 40f);
            boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30);
            boolean isSelected = account.accountName.equalsIgnoreCase(IMinecraft.mc.session.getUsername());
            float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);
            float accountSelectProgress = AnimationMath.lerp(0, 1, isSelected ? 1 : 0);

            if (isHovered) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress)
                ));
            } else if (isSelected) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress)
                ));
            } else {
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            }

            float headX = altX + 5f;
            float headY = acY + (30f - 25f) / 2f;
            StencilUtils.initStencilToWrite();
            RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
            StencilUtils.readStencilBuffer(1);
            mc.getTextureManager().bindTexture(account.skin);
            AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
            StencilUtils.uninitStencilBuffer();

            float nickX = headX + 25f + 5f;
            float nickY = acY + (30f - Fonts.newcode[16].getFontHeight()) / 2f + 4f;
            Fonts.newcode[16].drawString(matrixStack, account.accountName, nickX, nickY, isHovered || isSelected ? textColor : new Color(150, 150, 150, 255).getRGB());

            boolean isEditHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20, 20);
            float editHoverProgress = AnimationMath.lerp(0, 1, isEditHovered ? 1 : 0);
            int editBaseColor = new Color(34, 139, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 240f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 240f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "q", altX + 250f, acY + 15f, isEditHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            boolean isDeleteHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20);
            float deleteHoverProgress = AnimationMath.lerp(0, 1, isDeleteHovered ? 1 : 0);
            int deleteBaseColor = new Color(139, 34, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 270f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 270f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "p", altX + 280f, acY + 15f, isDeleteHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            iter++;
            size++;
        }

        scroll = MathHelper.clamp(scroll, size > 1 ? -size + 1 : 0, 0);

        SmartScissor.unset();
        SmartScissor.pop();

        float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
        float recycleButtonY = panelY + 5f;
        boolean isRecycleHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20);
        float recycleHoverProgress = AnimationMath.lerp(0, 1, isRecycleHovered ? 1 : 0);
        RenderUtils.Render2D.drawRoundedRect(recycleButtonX, recycleButtonY, 20, 20, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(recycleButtonX, recycleButtonY, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress)
        ));
        Fonts.iconn[21].drawCenteredString(matrixStack, "a", recycleButtonX + 10f, recycleButtonY + 9f, isRecycleHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

        if (showDeletedPanel) {
            float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
            float deletedPanelY = panelY;
            float deletedPanelWidth = 180f;
            float deletedPanelHeight = 200f;

            RenderUtils.Render2D.drawShadow(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 15, glowColor);
            RenderUtils.Render2D.drawRoundedRect(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Deleted Accounts", deletedPanelX + deletedPanelWidth / 2f, deletedPanelY + 8f, textColor);

            SmartScissor.push();
            SmartScissor.setFromComponentCoordinates(deletedPanelX, deletedPanelY + 30f, deletedPanelWidth, 150);
            iter = 0;
            for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                AltManager.DeletedAccount account = Manager.deletedAccounts.get(i);
                float acY = deletedPanelY + 30f + (iter * 40f);
                float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) centeredRectX, (int) acY, 150, 30);
                float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);

                if (isHovered) {
                    RenderUtils.Render2D.drawShadow(centeredRectX, acY, 150, 30, 10, glowColor);
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress)
                    ));
                } else {
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
                }

                float headX = centeredRectX + 5f;
                float headY = acY + (30f - 25f) / 2f;
                StencilUtils.initStencilToWrite();
                RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
                StencilUtils.readStencilBuffer(1);
                mc.getTextureManager().bindTexture(account.skin);
                AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
                StencilUtils.uninitStencilBuffer();

                float nickX = headX + 25f + 5f;
                float nickY = acY + (30f - Fonts.newcode[14].getFontHeight()) / 2f + 4f;
                Fonts.newcode[14].drawString(matrixStack, account.accountName, nickX, nickY, isHovered ? textColor : new Color(150, 150, 150, 255).getRGB());

                boolean isRestoreHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (centeredRectX + 120f), (int) (acY + 5f), 20, 20);
                float restoreHoverProgress = AnimationMath.lerp(0, 1, isRestoreHovered ? 1 : 0);
                int restoreBaseColor = new Color(34, 139, 34, 179).getRGB();
                RenderUtils.Render2D.drawRoundedRect(centeredRectX + 120f, acY + 5f, 20, 20, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(centeredRectX + 120f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress)
                ));
                Fonts.iconn[14].drawCenteredString(matrixStack, "b", centeredRectX + 130f, acY + 15f, isRestoreHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

                iter++;
            }
            SmartScissor.unset();
            SmartScissor.pop();
        }

        IMinecraft.mc.gameRenderer.setupOverlayRendering();
    }
}
закруглить шейдером - X
закруглить стенсилом с ебучим кривым закруглением -ОДААА
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
под пивасик норм
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
/del глаза по почте отправишь?
 
Скрытое содержимое
да,держи -


package nova.dlc.control.config;

import net.minecraft.client.Minecraft;
import net.minecraft.util.Session;

import java.io.*;
import java.nio.file.Files;

public class LastAccountConfig {

public static final File file = new File("C:\\NovaDLC\\game\\NovaDLC\\lastaccount.json");

public void init() throws Exception {
if (!file.exists()) {
System.out.println("Файл с последним аккаунтом не был найден! Создаю пустой файл..");
file.createNewFile();
} else {
readAlts();
}
}

public void updateFile() {
try {
Files.write(file.toPath(), Minecraft.getInstance().session.getUsername().getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}

private void readAlts() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(file.getAbsolutePath()))));
String line;
while ((line = reader.readLine()) != null) {
Minecraft.getInstance().session = new Session(line, "", "", "mojang");
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
 
Делал его ещё в марте, но он мне не понравился и я делаю другой так что вот:


Java:
Expand Collapse Copy
package newcode.fun.ui.alt;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.MainMenuScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Session;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.StringTextComponent;
import newcode.fun.control.Manager;
import newcode.fun.ui.midnight.StyleManager;
import newcode.fun.utils.IMinecraft;
import newcode.fun.utils.SoundUtils;
import newcode.fun.utils.render.*;
import newcode.fun.utils.render.animation.AnimationMath;
import org.apache.commons.lang3.RandomStringUtils;
import org.joml.Vector4i;
import org.lwjgl.glfw.GLFW;
import newcode.fun.utils.font.Fonts;

import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;

import static newcode.fun.utils.IMinecraft.mc;

public class AltManager extends Screen {

    public AltManager() {
        super(new StringTextComponent(""));
    }

    public ArrayList<Account> accounts = new ArrayList<>();
    private String altName = "";
    private boolean typing;
    private String editingAccountName = null;
    private boolean showDeletedPanel = false;
    private final DeletedAltConfig deletedAltConfig = new DeletedAltConfig();

    public static class DeletedAccount {
        String accountName;
        ResourceLocation skin;
        long deletionTime;

        DeletedAccount(String accountName, ResourceLocation skin, long deletionTime) {
            this.accountName = accountName;
            this.skin = skin;
            this.deletionTime = deletionTime;
        }
    }

    @Override
    protected void init() {
        super.init();
        try {
            deletedAltConfig.init();
            System.out.println("Deleted accounts loaded: " + Manager.deletedAccounts.size());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        return super.mouseReleased(mouseX, mouseY, button);
    }

    @Override
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == GLFW.GLFW_KEY_V && (modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
            altName += Minecraft.getInstance().keyboardListener.getClipboardString();
        }

        if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
            if (!altName.isEmpty())
                altName = altName.substring(0, altName.length() - 1);
        }

        if (keyCode == GLFW.GLFW_KEY_ENTER) {
            if (!altName.isEmpty()) {
                if (editingAccountName != null) {
                    for (Account account : accounts) {
                        if (account.accountName.equals(editingAccountName)) {
                            account.accountName = altName;
                            break;
                        }
                    }
                    editingAccountName = null;
                    AltConfig.updateFile();
                } else {
                    accounts.add(new Account(altName));
                }
                typing = false;
                altName = "";
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    @Override
    public boolean charTyped(char codePoint, int modifiers) {
        altName += !typing ? "" : Character.toString(codePoint);
        return super.charTyped(codePoint, modifiers);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        if (button == 0) {
            float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

            if (showDeletedPanel) {
                float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
                float deletedPanelY = panelY;
                float deletedPanelWidth = 180f;
                float iter = 0;
                for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                    float acY = deletedPanelY + 30f + (iter * 40f);
                    float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                    float restoreButtonX = centeredRectX + 120f;
                    float restoreButtonY = acY + 5f;

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) restoreButtonX, (int) restoreButtonY, 20, 20)) {
                        DeletedAccount deletedAccount = Manager.deletedAccounts.remove(i);
                        accounts.add(new Account(deletedAccount.accountName));
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                    iter++;
                }
            }

            float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
            float recycleButtonY = panelY + 5f;
            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20)) {
                showDeletedPanel = !showDeletedPanel;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                if (!altName.isEmpty()) {
                    accounts.add(new Account(altName));
                    altName = "";
                    AltConfig.updateFile();
                    if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                        SoundUtils.playSound("theme.wav", 70, false);
                    }
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                IMinecraft.mc.displayGuiScreen(new MainMenuScreen());
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25)) {
                altName = RandomStringUtils.randomAlphabetic(8);
                typing = true;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
                typing = !typing;
                if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                    SoundUtils.playSound("theme.wav", 70, false);
                }
                return true;
            }

            float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
            float iter = scrollAn;

            float scissorYMin = panelY + 70f;
            float scissorYMax = scissorYMin + 70f;

            for (int i = 0; i < accounts.size(); i++) {
                Account account = accounts.get(i);
                float acY = panelY + 70f + (iter * 40f);

                if (acY >= scissorYMin && acY <= scissorYMax - 30f) {
                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30)) {
                        IMinecraft.mc.session = new Session(account.accountName, "", "", "mojang");
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20,
                            20)) {
                        altName = account.accountName;
                        editingAccountName = account.accountName;
                        typing = true;
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme2.wav", 70, false);
                        }
                        return true;
                    }

                    if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20)) {
                        Account deletedAccount = accounts.remove(i);
                        addToDeletedAccounts(deletedAccount);
                        AltConfig.updateFile();
                        DeletedAltConfig.updateFile();
                        if (Manager.FUNCTION_MANAGER.clickGui.sounds.get()) {
                            SoundUtils.playSound("theme.wav", 70, false);
                        }
                        return true;
                    }
                }
                iter++;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
    }

    @Override
    public void tick() {
        super.tick();
    }

    public float scroll;
    public float scrollAn;

    public boolean hoveredFirst;
    public boolean hoveredSecond;
    public boolean hoveredThird;

    public float hoveredFirstAn;
    public float hoveredSecondAn;
    public float hoveredThirdAn;

    private boolean isMouseOverButton(int mouseX, int mouseY, int buttonX, int buttonY, int buttonWidth, int buttonHeight) {
        return mouseX >= buttonX && mouseY >= buttonY && mouseX < buttonX + buttonWidth && mouseY < buttonY + buttonHeight;
    }

    @Override
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        scroll += delta * 1;
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    private void addToDeletedAccounts(Account account) {
        if (Manager.deletedAccounts.size() >= 5) {
            Manager.deletedAccounts.remove(0);
        }
        if (account == null || account.accountName == null || account.skin == null) {
           return;
        }
        Manager.deletedAccounts.add(new DeletedAccount(account.accountName, account.skin, System.currentTimeMillis()));
        DeletedAltConfig.updateFile();
    }

    @Override
    public void onClose() {
        DeletedAltConfig.updateFile();
        super.onClose();
    }

    @Override
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        int adjustedMouseX = fixed.getX();
        int adjustedMouseY = fixed.getY();

        scrollAn = AnimationMath.lerp(scrollAn, scroll, 5);
        hoveredFirst = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 135f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredSecond = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) + 65f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredThird = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 35f), (int) (mc.getMainWindow().scaledHeight() / 2f + 75f), 70, 25);
        hoveredFirstAn = AnimationMath.lerp(hoveredFirstAn, hoveredFirst ? 1 : 0, 10);
        hoveredSecondAn = AnimationMath.lerp(hoveredSecondAn, hoveredSecond ? 1 : 0, 10);
        hoveredThirdAn = AnimationMath.lerp(hoveredThirdAn, hoveredThird ? 1 : 0, 10);

        IMinecraft.mc.gameRenderer.setupOverlayRendering(2);

        int firstColor2 = (Manager.FUNCTION_MANAGER.hud2.mode.is("13") ? ColorUtils.getColorStyle(0.0F) : StyleManager.getCurrentStyle().getSecondaryColor());
        int primaryColor = new Color(25, 26, 33, 230).getRGB();
        int secondaryColor = new Color(34, 34, 34, 179).getRGB();
        int textColor = new Color(200, 200, 200, 255).getRGB();
        int glowColor = new Color(50, 80, 150, 100).getRGB();

        RenderUtils.Render2D.drawImage(new ResourceLocation("newcode/images/all/mainscreen/background.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);

        float panelY = mc.getMainWindow().scaledHeight() / 2f - 80f;

        float nickRectX = (mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float nickRectY = panelY - 40f;
        float nickRectWidth = 300f;
        float nickRectHeight = 30f;
        RenderUtils.Render2D.drawShadow(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 10, glowColor);
        RenderUtils.Render2D.drawRoundedRect(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(nickRectX, nickRectY, nickRectWidth, nickRectHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        String nickText = "��� ���: " + IMinecraft.mc.session.getUsername();
        float nickTextWidth = Fonts.newcode[16].getWidth(nickText);
        float nickTextHeight = Fonts.newcode[16].getFontHeight();
        float nickTextX = nickRectX + (nickRectWidth - nickTextWidth) / 2f;
        float nickTextY = nickRectY + (nickRectHeight - nickTextHeight) / 2f + 2f;
        Fonts.newcode[16].drawString(matrixStack, nickText, nickTextX, nickTextY, textColor);

        RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 15, glowColor);
        RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 180f, panelY, 360f, 200f, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
        Fonts.newcode[20].drawCenteredString(matrixStack, "Alt Manager", mc.getMainWindow().scaledWidth() / 2f, panelY + 8f, textColor);

        float inputHoverProgress = AnimationMath.lerp(0, 1, isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25) ? 1 : 0);
        if (isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) ((mc.getMainWindow().scaledWidth() / 2f) - 150f), (int) (panelY + 30f), 300, 25)) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), inputHoverProgress)
            ));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 30f, 300, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawString(matrixStack, altName.isEmpty() && !typing ? "Enter Username" : altName + (typing ? (System.currentTimeMillis() % 1000 > 500 ? "_" : "") : ""), (mc.getMainWindow().scaledWidth() / 2f) - 140f, panelY + 40f, new Color(150, 150, 150, 255).getRGB());
        }

        float buttonPanelX = (mc.getMainWindow().scaledWidth() / 2f) - 145f;
        float buttonPanelY = panelY + 150f;
        float buttonPanelWidth = 290f;
        float buttonPanelHeight = 45f;
        RenderUtils.Render2D.drawShadow(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 8, glowColor);
        RenderUtils.Render2D.drawRoundedRect(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(buttonPanelX, buttonPanelY, buttonPanelWidth, buttonPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));

        float addHoverProgress = hoveredFirstAn;
        if (hoveredFirst) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), addHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 135f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Add Alt", (mc.getMainWindow().scaledWidth() / 2f) - 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float randomHoverProgress = hoveredThirdAn;
        if (hoveredThird) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), randomHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) - 35f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Random Nick", (mc.getMainWindow().scaledWidth() / 2f), panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float backHoverProgress = hoveredSecondAn;
        if (hoveredSecond) {
            RenderUtils.Render2D.drawShadow((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 10, glowColor);
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress),
                    ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), backHoverProgress)
            ));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, textColor);
        } else {
            RenderUtils.Render2D.drawRoundedRect((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline((mc.getMainWindow().scaledWidth() / 2f) + 65f, panelY + 160f, 70, 25, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Back", (mc.getMainWindow().scaledWidth() / 2f) + 100f, panelY + 170.5f, new Color(150, 150, 150, 255).getRGB());
        }

        float altX = (IMinecraft.mc.getMainWindow().scaledWidth() / 2f) - 150f;
        float iter = scrollAn;
        float size = 0;
        SmartScissor.push();
        SmartScissor.setFromComponentCoordinates((mc.getMainWindow().scaledWidth() / 2f) - 150f, panelY + 70f, 300, 70);

        for (int i = 0; i < accounts.size(); i++) {
            Account account = accounts.get(i);
            float acY = panelY + 70f + (iter * 40f);
            boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) altX, (int) acY, 230, 30);
            boolean isSelected = account.accountName.equalsIgnoreCase(IMinecraft.mc.session.getUsername());
            float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);
            float accountSelectProgress = AnimationMath.lerp(0, 1, isSelected ? 1 : 0);

            if (isHovered) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountHoverProgress)
                ));
            } else if (isSelected) {
                RenderUtils.Render2D.drawShadow(altX, acY, 300, 30, 10, glowColor);
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress),
                        ColorUtils.interpolateColor(new Color(34, 34, 34, 179).getRGB(), ColorUtils.setAlpha(firstColor2, 135), accountSelectProgress)
                ));
            } else {
                RenderUtils.Render2D.drawRoundedRect(altX, acY, 300, 30, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(altX, acY, 300, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            }

            float headX = altX + 5f;
            float headY = acY + (30f - 25f) / 2f;
            StencilUtils.initStencilToWrite();
            RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
            StencilUtils.readStencilBuffer(1);
            mc.getTextureManager().bindTexture(account.skin);
            AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
            StencilUtils.uninitStencilBuffer();

            float nickX = headX + 25f + 5f;
            float nickY = acY + (30f - Fonts.newcode[16].getFontHeight()) / 2f + 4f;
            Fonts.newcode[16].drawString(matrixStack, account.accountName, nickX, nickY, isHovered || isSelected ? textColor : new Color(150, 150, 150, 255).getRGB());

            boolean isEditHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 240f), (int) (acY + 5f), 20, 20);
            float editHoverProgress = AnimationMath.lerp(0, 1, isEditHovered ? 1 : 0);
            int editBaseColor = new Color(34, 139, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 240f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 240f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, editBaseColor, editHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "q", altX + 250f, acY + 15f, isEditHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            boolean isDeleteHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (altX + 270f), (int) (acY + 5f), 20, 20);
            float deleteHoverProgress = AnimationMath.lerp(0, 1, isDeleteHovered ? 1 : 0);
            int deleteBaseColor = new Color(139, 34, 34, 179).getRGB();
            RenderUtils.Render2D.drawRoundedRect(altX + 270f, acY + 5f, 20, 20, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(altX + 270f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress),
                    ColorUtils.interpolateColor(secondaryColor, deleteBaseColor, deleteHoverProgress)
            ));
            Fonts.iconn[14].drawCenteredString(matrixStack, "p", altX + 280f, acY + 15f, isDeleteHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

            iter++;
            size++;
        }

        scroll = MathHelper.clamp(scroll, size > 1 ? -size + 1 : 0, 0);

        SmartScissor.unset();
        SmartScissor.pop();

        float recycleButtonX = (mc.getMainWindow().scaledWidth() / 2f) + 130f;
        float recycleButtonY = panelY + 5f;
        boolean isRecycleHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) recycleButtonX, (int) recycleButtonY, 20, 20);
        float recycleHoverProgress = AnimationMath.lerp(0, 1, isRecycleHovered ? 1 : 0);
        RenderUtils.Render2D.drawRoundedRect(recycleButtonX, recycleButtonY, 20, 20, 5f, primaryColor);
        RenderUtils.Render2D.drawRoundOutline(recycleButtonX, recycleButtonY, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress),
                ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), recycleHoverProgress)
        ));
        Fonts.iconn[21].drawCenteredString(matrixStack, "a", recycleButtonX + 10f, recycleButtonY + 9f, isRecycleHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

        if (showDeletedPanel) {
            float deletedPanelX = (mc.getMainWindow().scaledWidth() / 2f) + 190f;
            float deletedPanelY = panelY;
            float deletedPanelWidth = 180f;
            float deletedPanelHeight = 200f;

            RenderUtils.Render2D.drawShadow(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 15, glowColor);
            RenderUtils.Render2D.drawRoundedRect(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, primaryColor);
            RenderUtils.Render2D.drawRoundOutline(deletedPanelX, deletedPanelY, deletedPanelWidth, deletedPanelHeight, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
            Fonts.newcode[16].drawCenteredString(matrixStack, "Deleted Accounts", deletedPanelX + deletedPanelWidth / 2f, deletedPanelY + 8f, textColor);

            SmartScissor.push();
            SmartScissor.setFromComponentCoordinates(deletedPanelX, deletedPanelY + 30f, deletedPanelWidth, 150);
            iter = 0;
            for (int i = 0; i < Manager.deletedAccounts.size(); i++) {
                AltManager.DeletedAccount account = Manager.deletedAccounts.get(i);
                float acY = deletedPanelY + 30f + (iter * 40f);
                float centeredRectX = deletedPanelX + (deletedPanelWidth - 150f) / 2f;
                boolean isHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) centeredRectX, (int) acY, 150, 30);
                float accountHoverProgress = AnimationMath.lerp(0, 1, isHovered ? 1 : 0);

                if (isHovered) {
                    RenderUtils.Render2D.drawShadow(centeredRectX, acY, 150, 30, 10, glowColor);
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress),
                            ColorUtils.interpolateColor(secondaryColor, ColorUtils.setAlpha(new Color(50, 150, 50, 179).getRGB(), 135), accountHoverProgress)
                    ));
                } else {
                    RenderUtils.Render2D.drawRoundedRect(centeredRectX, acY, 150, 30, 5f, primaryColor);
                    RenderUtils.Render2D.drawRoundOutline(centeredRectX, acY, 150, 30, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(secondaryColor, secondaryColor, secondaryColor, secondaryColor));
                }

                float headX = centeredRectX + 5f;
                float headY = acY + (30f - 25f) / 2f;
                StencilUtils.initStencilToWrite();
                RenderUtils.Render2D.drawRoundedRect(headX, headY, 25, 25, 3f, Color.BLACK.getRGB());
                StencilUtils.readStencilBuffer(1);
                mc.getTextureManager().bindTexture(account.skin);
                AbstractGui.drawScaledCustomSizeModalRect(headX, headY, 8F, 8F, 8F, 8F, 25, 25, 64, 64);
                StencilUtils.uninitStencilBuffer();

                float nickX = headX + 25f + 5f;
                float nickY = acY + (30f - Fonts.newcode[14].getFontHeight()) / 2f + 4f;
                Fonts.newcode[14].drawString(matrixStack, account.accountName, nickX, nickY, isHovered ? textColor : new Color(150, 150, 150, 255).getRGB());

                boolean isRestoreHovered = isMouseOverButton(adjustedMouseX, adjustedMouseY, (int) (centeredRectX + 120f), (int) (acY + 5f), 20, 20);
                float restoreHoverProgress = AnimationMath.lerp(0, 1, isRestoreHovered ? 1 : 0);
                int restoreBaseColor = new Color(34, 139, 34, 179).getRGB();
                RenderUtils.Render2D.drawRoundedRect(centeredRectX + 120f, acY + 5f, 20, 20, 5f, primaryColor);
                RenderUtils.Render2D.drawRoundOutline(centeredRectX + 120f, acY + 5f, 20, 20, 5f, 0f, ColorUtils.rgba(25, 26, 33, 0), new Vector4i(
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress),
                        ColorUtils.interpolateColor(secondaryColor, restoreBaseColor, restoreHoverProgress)
                ));
                Fonts.iconn[14].drawCenteredString(matrixStack, "b", centeredRectX + 130f, acY + 15f, isRestoreHovered ? textColor : new Color(150, 150, 150, 200).getRGB());

                iter++;
            }
            SmartScissor.unset();
            SmartScissor.pop();
        }

        IMinecraft.mc.gameRenderer.setupOverlayRendering();
    }
}
ну так сложно типо шрифт закинуть
 
Скрытое содержимое
package nova.dlc.control.config;

import net.minecraft.client.Minecraft;
import net.minecraft.util.Session;

import java.io.*;
import java.nio.file.Files;

public class LastAccountConfig {

public static final File file = new File("C:\\NovaDLC\\game\\NovaDLC\\lastaccount.json");

public void init() throws Exception {
if (!file.exists()) {
System.out.println("Файл с последним аккаунтом не был найден! Создаю пустой файл..");
file.createNewFile();
} else {
readAlts();
}
}

public void updateFile() {
try {
Files.write(file.toPath(), Minecraft.getInstance().session.getUsername().getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}

private void readAlts() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(file.getAbsolutePath()))));
String line;
while ((line = reader.readLine()) != null) {
Minecraft.getInstance().session = new Session(line, "", "", "mojang");
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
 
Назад
Сверху Снизу