MainMenu

SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.

CODE -

Код:
Expand Collapse Copy
public class MainMenuScreen extends Screen implements IMinecraft {

    public static final RenderSkyboxCube PANORAMA_RESOURCES = new RenderSkyboxCube(new ResourceLocation("textures/gui/title/background/panorama"));
    private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = new ResourceLocation("textures/gui/title/background/panorama_overlay.png");
    private static final ResourceLocation ACCESSIBILITY_TEXTURES = new ResourceLocation("textures/gui/accessibility.png");
    private final boolean showTitleWronglySpelled;
    private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("textures/gui/title/minecraft.png");
    private static final ResourceLocation MINECRAFT_TITLE_EDITION = new ResourceLocation("textures/gui/title/edition.png");
    private int widthCopyright;
    private int widthCopyrightRest;
    private Screen realmsNotification;
    private boolean hasCheckedForRealmsNotification;
    [USER=1265501]@nullable[/USER]
    private String splashText;
    private final RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES);
    private final boolean showFadeInAnimation;
    private long firstRenderTime;


    public MainMenuScreen() {
        this(false);
    }


    [USER=1367676]@override[/USER]
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        if (ClientUtils.unHook) {
            if (this.splashText == null) {
                this.splashText = this.minecraft.getSplashes().getSplashText();
            }

            this.widthCopyright = this.font.getStringWidth("Copyright Mojang AB. Do not distribute!");
            this.widthCopyrightRest = this.width - this.widthCopyright - 2;
            int j = this.height / 4 + 48;
            Button button;
            this.addSingleplayerMultiplayerButtons(j, 24);

            if (Reflector.ModListScreen_Constructor.exists()) {
                button = ReflectorForge.makeButtonMods(this, j, 24);
                this.addButton(button);
            }

            this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_lambda$init$0_1_) -> this.minecraft.displayGuiScreen(new LanguageScreen(this, this.minecraft.gameSettings, this.minecraft.getLanguageManager())), new TranslationTextComponent("narrator.button.language")));
            this.addButton(new Button(this.width / 2 - 100, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.options"), (p_lambda$init$1_1_) -> this.minecraft.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
            this.addButton(new Button(this.width / 2 + 2, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.quit"), (p_lambda$init$2_1_) -> this.minecraft.shutdown()));
            this.addButton(new ImageButton(this.width / 2 + 104, j + 72 + 12, 20, 20, 0, 0, 20, ACCESSIBILITY_TEXTURES, 32, 64, (p_lambda$init$3_1_) -> this.minecraft.displayGuiScreen(new AccessibilityScreen(this, this.minecraft.gameSettings)), new TranslationTextComponent("narrator.button.accessibility")));
            this.minecraft.setConnectedToRealms(false);

            if (this.minecraft.gameSettings.realmsNotifications && !this.hasCheckedForRealmsNotification) {
                RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
                this.realmsNotification = realmsbridgescreen.func_239555_b_(this);
                this.hasCheckedForRealmsNotification = true;
            }

            if (this.areRealmsNotificationsEnabled()) {
                this.realmsNotification.init(this.minecraft, this.width, this.height);
            }

            return;
        }

        int buttonWidth = 140;
        int buttonHeight = 25;
        int offset = buttonHeight + 5;
        int centerY = mw.scaledHeight() / 2 - 50;

        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY, buttonWidth, buttonHeight, new StringTextComponent("Singleplayer"), p_onPress_1_ -> mc.displayGuiScreen(new WorldSelectionScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset, buttonWidth, buttonHeight, new StringTextComponent("Multiplayer"), p_onPress_1_ -> mc.displayGuiScreen(new MultiplayerScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 2, buttonWidth, buttonHeight, new StringTextComponent("Alt Manager"), p_onPress_1_ -> mc.displayGuiScreen(Manager.ALT)));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 3, buttonWidth, buttonHeight, new StringTextComponent("Settings"), p_onPress_1_ -> mc.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 4, buttonWidth, buttonHeight, new StringTextComponent("Exit"), p_onPress_1_ -> mc.shutdownMinecraftApplet()));
    }

    private boolean areRealmsNotificationsEnabled() {
        return this.minecraft.gameSettings.realmsNotifications && this.realmsNotification != null;
    }

    private void addSingleplayerMultiplayerButtons(int yIn, int rowHeightIn) {
        this.addButton(new Button(this.width / 2 - 100, yIn, 200, 20, new TranslationTextComponent("menu.singleplayer"), (p_lambda$addSingleplayerMultiplayerButtons$4_1_) -> this.minecraft.displayGuiScreen(new WorldSelectionScreen(this))));
        boolean flag = this.minecraft.isMultiplayerEnabled();
        Button.ITooltip button$itooltip = flag ? Button.field_238486_s_ : (p_lambda$addSingleplayerMultiplayerButtons$5_1_, p_lambda$addSingleplayerMultiplayerButtons$5_2_, p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_) ->
        {
            if (!p_lambda$addSingleplayerMultiplayerButtons$5_1_.active) {
                this.renderTooltip(p_lambda$addSingleplayerMultiplayerButtons$5_2_, this.minecraft.fontRenderer.trimStringToWidth(new TranslationTextComponent("title.multiplayer.disabled"), Math.max(this.width / 2 - 43, 170)), p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_);
            }
        };
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 1, 200, 20, new TranslationTextComponent("menu.multiplayer"), (p_lambda$addSingleplayerMultiplayerButtons$6_1_) ->
        {
            Screen screen = this.minecraft.gameSettings.skipMultiplayerWarning ? new MultiplayerScreen(this) : new MultiplayerWarningScreen(this);
            this.minecraft.displayGuiScreen(screen);
        }, button$itooltip)).active = flag;
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 2, 200, 20, new TranslationTextComponent("menu.online"), (p_lambda$addSingleplayerMultiplayerButtons$7_1_) -> this.switchToRealms(), button$itooltip)).active = flag;
        if (Reflector.ModListScreen_Constructor.exists() && this.buttons.size() > 0) {
            Widget widget = this.buttons.get(this.buttons.size() - 1);
            widget.x = this.width / 2 + 2;
            widget.setWidth(98);
        }
    }

    private void switchToRealms() {
        RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
        realmsbridgescreen.func_231394_a_(this);
    }

    public MainMenuScreen(boolean fadeIn) {
        super(new TranslationTextComponent("narrator.screen.title"));
        this.showFadeInAnimation = fadeIn;
        this.showTitleWronglySpelled = (double) (new Random()).nextFloat() < 1.0E-4D;
    }

    public void tick() {
        if (this.areRealmsNotificationsEnabled()) {
            this.realmsNotification.tick();
        }
    }

    public static CompletableFuture<Void> loadAsync(TextureManager texMngr, Executor backgroundExecutor) {
        return CompletableFuture.allOf(texMngr.loadAsync(MINECRAFT_TITLE_TEXTURES, backgroundExecutor), texMngr.loadAsync(MINECRAFT_TITLE_EDITION, backgroundExecutor), texMngr.loadAsync(PANORAMA_OVERLAY_TEXTURES, backgroundExecutor), PANORAMA_RESOURCES.loadAsync(texMngr, backgroundExecutor));
    }

    public boolean isPauseScreen() {
        return false;
    }

    public boolean shouldCloseOnEsc() {
        return false;

    }



    private final BetterText info = new BetterText(List.of(" ", "Welcome, " + ClientUtils.me.getName()), 4500);
    private final BetterText like = new BetterText(List.of(" ", "Сделано с любовью, Acidka!"), 4500);
    private final Animation hover1 = new DecelerateAnimation(150, 3);
    private final Animation hover2 = new DecelerateAnimation(150, 3);
    private final Animation hover3 = new DecelerateAnimation(150, 3);

    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        if (ClientUtils.unHook) {
            if (this.firstRenderTime == 0L && this.showFadeInAnimation) {
                this.firstRenderTime = Util.milliTime();
                }



            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            RenderSystem.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int j = this.width / 2 - 137;
            this.minecraft.getTextureManager().bindTexture(PANORAMA_OVERLAY_TEXTURES);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
            RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.showFadeInAnimation ? (float) MathHelper.ceil(MathHelper.clamp(f, 0.0F, 1.0F)) : 1.0F);
            blit(matrixStack, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128);
            float f1 = this.showFadeInAnimation ? MathHelper.clamp(f - 1.0F, 0.0F, 1.0F) : 1.0F;
            int l = MathHelper.ceil(f1 * 255.0F) << 24;

            if ((l & -67108864) != 0) {
                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_TEXTURES);
                RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);

                if (this.showTitleWronglySpelled) {
                    this.blitBlackOutline(j, 30, (p_lambda$render$10_2_, p_lambda$render$10_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$10_2_ + 0, p_lambda$render$10_3_, 0, 0, 99, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99, p_lambda$render$10_3_, 129, 0, 27, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26, p_lambda$render$10_3_, 126, 0, 3, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26 + 3, p_lambda$render$10_3_, 99, 0, 26, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 155, p_lambda$render$10_3_, 0, 45, 155, 44);
                    });
                } else {
                    this.blitBlackOutline(j, 30, (p_lambda$render$11_2_, p_lambda$render$11_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$11_2_ + 0, p_lambda$render$11_3_, 0, 0, 155, 44);
                        this.blit(matrixStack, p_lambda$render$11_2_ + 155, p_lambda$render$11_3_, 0, 45, 155, 44);
                    });
                }

                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_EDITION);
                blit(matrixStack, j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);

                if (Reflector.ForgeHooksClient_renderMainMenu.exists()) {
                    Reflector.callVoid(Reflector.ForgeHooksClient_renderMainMenu, this, matrixStack, this.font, this.width, this.height, l);
                }

                if (this.splashText != null) {
                    RenderSystem.pushMatrix();
                    RenderSystem.translatef((float) (this.width / 2 + 90), 70.0F, 0.0F);
                    RenderSystem.rotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                    float f2 = 1.8F - MathHelper.abs(MathHelper.sin((float) (Util.milliTime() % 1000L) / 1000.0F * ((float) Math.PI * 2F)) * 0.1F);
                    f2 = f2 * 100.0F / (float) (this.font.getStringWidth(this.splashText) + 32);
                    RenderSystem.scalef(f2, f2, f2);
                    drawCenteredString(matrixStack, this.font, this.splashText, 0, -8, 16776960 | l);
                    RenderSystem.popMatrix();
                }

                String s = "Minecraft " + SharedConstants.getVersion().getName();

                if (this.minecraft.isDemo()) {
                    s = s + " Demo";
                } else {
                    s = s + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType());
                }

                if (this.minecraft.isModdedClient()) {
                    s = s + I18n.format("menu.modded");
                }

                if (Reflector.BrandingControl.exists()) {
                    if (Reflector.BrandingControl_forEachLine.exists()) {
                        BiConsumer<Integer, String> biconsumer = (p_lambda$render$12_3_, p_lambda$render$12_4_) -> drawString(matrixStack, this.font, p_lambda$render$12_4_, 2, this.height - (10 + p_lambda$render$12_3_ * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachLine, true, true, biconsumer);
                    }

                    if (Reflector.BrandingControl_forEachAboveCopyrightLine.exists()) {
                        BiConsumer<Integer, String> biconsumer1 = (p_lambda$render$13_3_, p_lambda$render$13_4_) -> drawString(matrixStack, this.font, p_lambda$render$13_4_, this.width - this.font.getStringWidth(p_lambda$render$13_4_), this.height - (10 + (p_lambda$render$13_3_ + 1) * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachAboveCopyrightLine, biconsumer1);
                    }
                } else {
                    drawString(matrixStack, this.font, s, 2, this.height - 10, 16777215 | l);
                }

                drawString(matrixStack, this.font, "Copyright Mojang AB. Do not distribute!", this.widthCopyrightRest, this.height - 10, 16777215 | l);

                if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) {
                    fill(matrixStack, this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, 16777215 | l);
                }

                for (Widget widget : this.buttons) {
                    widget.setAlpha(f1);
                }

                if (this.areRealmsNotificationsEnabled() && f1 >= 1.0F) {
                    this.realmsNotification.render(matrixStack, mouseX, mouseY, partialTicks);
                }

                super.render(matrixStack, mouseX, mouseY, partialTicks);
            }

            return;
        }

        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/i.png"), 0, 0, scaledWidth, scaledHeight, -1);

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f, centerY + 110, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered3 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f + 415, centerY + 220, 16, 16);
        hover3.setDirection(hovered3 ? Direction.FORWARDS : Direction.BACKWARDS);

        GaussianBlur.applyBlur(() -> RenderUtils.Render2D.drawRound(centerX - 277 / 2f, centerY - 275.5f / 2f, 277, 275.5f, 10, -1), 40, 2);
        RenderUtils.Render2D.drawRound(centerX - 262 / 2f, centerY - 235 / 2f, 262, 245,25, ColorUtils.rgba(69, 23, 255,65));
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/vk.png"), centerX + 444, (float) (centerY + 220 - hover1.getOutput()), 16, 16, -1);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/discord.png"), centerX - 16 / 2f + 415, (float) (centerY + 220 - hover3.getOutput()), 16, 16, -1);

        Fonts.fontBold[32].drawCenteredString(matrixStack, info.output, centerX, centerY - 90, -1);
        Fonts.font[24].drawCenteredString(matrixStack, like.output, centerX-390, centerY+240, -1);
        RenderUtils.Render2D.drawRound(centerX + 390, centerY  +204, 90, 45,20, ColorUtils.rgba(69, 23, 255,65));

        renderSnow(matrixStack);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        mc.gameRenderer.setupOverlayRendering();
    }

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

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f +415, centerY + 220, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        if (hovered1) {
            Util.getOSType().openURI("https://vk.com/wissendclient");
        } иначе если (hovered2) {
            Util.getOSType().openURI("https://discord.gg/wissend");
        }

        вернуть super.mouseClicked(mouseX, mouseY, button);
    }

    public void onClose() {
        если (это.realmsNotification != null) {
            this.realmsNotification.onClose();
        }
    }
    класс снежинка {
        публичный float x;
        публичный float y;
        размер публичного плавания;
        публичный плавающий альфа;
    }

    int_snow_count = 59;

    public List<снежинка> sfs = new ArrayList<снежинка>();

    создано логическое значение = false;
    частный окончательный TimerUtils bolvan = новый TimerUtils();

    protected void renderSnowflake(MatrixStack matrixStack, снежинка снежинка) {
        Fonts.font[new Random().nextInt(15, 22)].drawString(matrixStack, "?", снежинка.x, снежинка.y, ColorUtils.rgba(255, 255, 255, снежинка.альфа));
    }

    защищенный void createSnowflakeList() {
        если(!создано) {
            для (int i = 1; i <= snow_count; i++) {
                снежинка s = новая снежинка();
                sx = new Random().nextInt(140, 1900);
                sy = новый Random().nextInt(-192, 33);
                s.альфа = новый Random().nextInt(60, 255);
                s.размер = 1;
                sfs.добавить(ы);
                если (i == snow_count) { создано = true; }
            }
        }
    }

    интервал е = 1;

    защищенный void createSnowflakes(MatrixStack matrixStack) {
        если(!создано) { возврат; }

        длинный l = 10;
        if(bolvan.hasTimeElapsed(l)) {
            для (int i = 1; i <= sfs.size()-1; i++) {
                sfs.получить(i).x = sfs.получить(i).x - 1;
                sfs.получить(i).y = sfs.получить(i).y + 1;
                если (я <= sfs.размер()-1) { bolvan.сброс(); }
            }
        }

        для (int i = 0; i <= sfs.size()-1; i++) {
            renderSnowflake(matrixStack, sfs.get(i));
        }

        если (sfs.get(sfs.size()-8).y > 60*f) {
            создано = ложь;
            е++;
        }
        если (sfs. получить (sfs. размер (-8). у > 1050) {
            для (int i = 1; i <= snow_count; i++) { sfs.remove(i); f-=0.5; }
        }
    }

    public void renderSnow(MatrixStack matrixStack) {
        создатьСписокСнежинок();
        создатьСнежинки(matrixStack);
    }

    открытый статический класс CustomButton расширяет AbstractButton {

        public static final Button.ITooltip field_238486_s_ = (button, matrixStack, mouseX, mouseY) -> {};
        защищенная конечная кнопка.IPressable onPress;
        защищенная конечная кнопка.ITooltip onTooltip;


        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressAction) {
            this(x, y, ширина, высота, заголовок, pressAction, field_238486_s_);
        }

        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressAction, Button.ITooltip onTooltip) {
            super(x, y, ширина, высота, заголовок);
            this.onPress = pressAction;
            this.onTooltip = onTooltip;
        }

        public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
            RenderUtils.Render2D.drawRound(x, y, ширина, высота, 6, ColorUtils.rgba(69, 23, 255,75));
            Fonts.font[22].drawCenteredString(matrixStack, this.getMessage().getString(), x + ширина / 2f, y + высота / 2f - Fonts.font[22].getFontHeight() / 2f + 1.5f, -1);
        }


        public void onPress() {
            это.приНажатии.приНажатии(это);
        }
// НЕ САМОКОД, ТОЛЬКО ВСТАВКА
    }
}[/КОД]
[/ЦИТИРОВАТЬ]
Йоо, асидка, эт круто
 
говно ебаное
 
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.

CODE -

Код:
Expand Collapse Copy
public class MainMenuScreen extends Screen implements IMinecraft {

    public static final RenderSkyboxCube PANORAMA_RESOURCES = new RenderSkyboxCube(new ResourceLocation("textures/gui/title/background/panorama"));
    private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = new ResourceLocation("textures/gui/title/background/panorama_overlay.png");
    private static final ResourceLocation ACCESSIBILITY_TEXTURES = new ResourceLocation("textures/gui/accessibility.png");
    private final boolean showTitleWronglySpelled;
    private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("textures/gui/title/minecraft.png");
    private static final ResourceLocation MINECRAFT_TITLE_EDITION = new ResourceLocation("textures/gui/title/edition.png");
    private int widthCopyright;
    private int widthCopyrightRest;
    private Screen realmsNotification;
    private boolean hasCheckedForRealmsNotification;
    @Nullable
    private String splashText;
    private final RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES);
    private final boolean showFadeInAnimation;
    private long firstRenderTime;


    public MainMenuScreen() {
        this(false);
    }


    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        if (ClientUtils.unHook) {
            if (this.splashText == null) {
                this.splashText = this.minecraft.getSplashes().getSplashText();
            }

            this.widthCopyright = this.font.getStringWidth("Copyright Mojang AB. Do not distribute!");
            this.widthCopyrightRest = this.width - this.widthCopyright - 2;
            int j = this.height / 4 + 48;
            Button button;
            this.addSingleplayerMultiplayerButtons(j, 24);

            if (Reflector.ModListScreen_Constructor.exists()) {
                button = ReflectorForge.makeButtonMods(this, j, 24);
                this.addButton(button);
            }

            this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_lambda$init$0_1_) -> this.minecraft.displayGuiScreen(new LanguageScreen(this, this.minecraft.gameSettings, this.minecraft.getLanguageManager())), new TranslationTextComponent("narrator.button.language")));
            this.addButton(new Button(this.width / 2 - 100, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.options"), (p_lambda$init$1_1_) -> this.minecraft.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
            this.addButton(new Button(this.width / 2 + 2, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.quit"), (p_lambda$init$2_1_) -> this.minecraft.shutdown()));
            this.addButton(new ImageButton(this.width / 2 + 104, j + 72 + 12, 20, 20, 0, 0, 20, ACCESSIBILITY_TEXTURES, 32, 64, (p_lambda$init$3_1_) -> this.minecraft.displayGuiScreen(new AccessibilityScreen(this, this.minecraft.gameSettings)), new TranslationTextComponent("narrator.button.accessibility")));
            this.minecraft.setConnectedToRealms(false);

            if (this.minecraft.gameSettings.realmsNotifications && !this.hasCheckedForRealmsNotification) {
                RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
                this.realmsNotification = realmsbridgescreen.func_239555_b_(this);
                this.hasCheckedForRealmsNotification = true;
            }

            if (this.areRealmsNotificationsEnabled()) {
                this.realmsNotification.init(this.minecraft, this.width, this.height);
            }

            return;
        }

        int buttonWidth = 140;
        int buttonHeight = 25;
        int offset = buttonHeight + 5;
        int centerY = mw.scaledHeight() / 2 - 50;

        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY, buttonWidth, buttonHeight, new StringTextComponent("Singleplayer"), p_onPress_1_ -> mc.displayGuiScreen(new WorldSelectionScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset, buttonWidth, buttonHeight, new StringTextComponent("Multiplayer"), p_onPress_1_ -> mc.displayGuiScreen(new MultiplayerScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 2, buttonWidth, buttonHeight, new StringTextComponent("Alt Manager"), p_onPress_1_ -> mc.displayGuiScreen(Manager.ALT)));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 3, buttonWidth, buttonHeight, new StringTextComponent("Settings"), p_onPress_1_ -> mc.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 4, buttonWidth, buttonHeight, new StringTextComponent("Exit"), p_onPress_1_ -> mc.shutdownMinecraftApplet()));
    }

    private boolean areRealmsNotificationsEnabled() {
        return this.minecraft.gameSettings.realmsNotifications && this.realmsNotification != null;
    }

    private void addSingleplayerMultiplayerButtons(int yIn, int rowHeightIn) {
        this.addButton(new Button(this.width / 2 - 100, yIn, 200, 20, new TranslationTextComponent("menu.singleplayer"), (p_lambda$addSingleplayerMultiplayerButtons$4_1_) -> this.minecraft.displayGuiScreen(new WorldSelectionScreen(this))));
        boolean flag = this.minecraft.isMultiplayerEnabled();
        Button.ITooltip button$itooltip = flag ? Button.field_238486_s_ : (p_lambda$addSingleplayerMultiplayerButtons$5_1_, p_lambda$addSingleplayerMultiplayerButtons$5_2_, p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_) ->
        {
            if (!p_lambda$addSingleplayerMultiplayerButtons$5_1_.active) {
                this.renderTooltip(p_lambda$addSingleplayerMultiplayerButtons$5_2_, this.minecraft.fontRenderer.trimStringToWidth(new TranslationTextComponent("title.multiplayer.disabled"), Math.max(this.width / 2 - 43, 170)), p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_);
            }
        };
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 1, 200, 20, new TranslationTextComponent("menu.multiplayer"), (p_lambda$addSingleplayerMultiplayerButtons$6_1_) ->
        {
            Screen screen = this.minecraft.gameSettings.skipMultiplayerWarning ? new MultiplayerScreen(this) : new MultiplayerWarningScreen(this);
            this.minecraft.displayGuiScreen(screen);
        }, button$itooltip)).active = flag;
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 2, 200, 20, new TranslationTextComponent("menu.online"), (p_lambda$addSingleplayerMultiplayerButtons$7_1_) -> this.switchToRealms(), button$itooltip)).active = flag;
        if (Reflector.ModListScreen_Constructor.exists() && this.buttons.size() > 0) {
            Widget widget = this.buttons.get(this.buttons.size() - 1);
            widget.x = this.width / 2 + 2;
            widget.setWidth(98);
        }
    }

    private void switchToRealms() {
        RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
        realmsbridgescreen.func_231394_a_(this);
    }

    public MainMenuScreen(boolean fadeIn) {
        super(new TranslationTextComponent("narrator.screen.title"));
        this.showFadeInAnimation = fadeIn;
        this.showTitleWronglySpelled = (double) (new Random()).nextFloat() < 1.0E-4D;
    }

    public void tick() {
        if (this.areRealmsNotificationsEnabled()) {
            this.realmsNotification.tick();
        }
    }

    public static CompletableFuture<Void> loadAsync(TextureManager texMngr, Executor backgroundExecutor) {
        return CompletableFuture.allOf(texMngr.loadAsync(MINECRAFT_TITLE_TEXTURES, backgroundExecutor), texMngr.loadAsync(MINECRAFT_TITLE_EDITION, backgroundExecutor), texMngr.loadAsync(PANORAMA_OVERLAY_TEXTURES, backgroundExecutor), PANORAMA_RESOURCES.loadAsync(texMngr, backgroundExecutor));
    }

    public boolean isPauseScreen() {
        return false;
    }

    public boolean shouldCloseOnEsc() {
        return false;

    }



    private final BetterText info = new BetterText(List.of(" ", "Welcome, " + ClientUtils.me.getName()), 4500);
    private final BetterText like = new BetterText(List.of(" ", "Сделано с любовью, Acidka!"), 4500);
    private final Animation hover1 = new DecelerateAnimation(150, 3);
    private final Animation hover2 = new DecelerateAnimation(150, 3);
    private final Animation hover3 = new DecelerateAnimation(150, 3);

    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        if (ClientUtils.unHook) {
            if (this.firstRenderTime == 0L && this.showFadeInAnimation) {
                this.firstRenderTime = Util.milliTime();
                }



            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            RenderSystem.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int j = this.width / 2 - 137;
            this.minecraft.getTextureManager().bindTexture(PANORAMA_OVERLAY_TEXTURES);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
            RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.showFadeInAnimation ? (float) MathHelper.ceil(MathHelper.clamp(f, 0.0F, 1.0F)) : 1.0F);
            blit(matrixStack, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128);
            float f1 = this.showFadeInAnimation ? MathHelper.clamp(f - 1.0F, 0.0F, 1.0F) : 1.0F;
            int l = MathHelper.ceil(f1 * 255.0F) << 24;

            if ((l & -67108864) != 0) {
                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_TEXTURES);
                RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);

                if (this.showTitleWronglySpelled) {
                    this.blitBlackOutline(j, 30, (p_lambda$render$10_2_, p_lambda$render$10_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$10_2_ + 0, p_lambda$render$10_3_, 0, 0, 99, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99, p_lambda$render$10_3_, 129, 0, 27, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26, p_lambda$render$10_3_, 126, 0, 3, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26 + 3, p_lambda$render$10_3_, 99, 0, 26, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 155, p_lambda$render$10_3_, 0, 45, 155, 44);
                    });
                } else {
                    this.blitBlackOutline(j, 30, (p_lambda$render$11_2_, p_lambda$render$11_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$11_2_ + 0, p_lambda$render$11_3_, 0, 0, 155, 44);
                        this.blit(matrixStack, p_lambda$render$11_2_ + 155, p_lambda$render$11_3_, 0, 45, 155, 44);
                    });
                }

                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_EDITION);
                blit(matrixStack, j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);

                if (Reflector.ForgeHooksClient_renderMainMenu.exists()) {
                    Reflector.callVoid(Reflector.ForgeHooksClient_renderMainMenu, this, matrixStack, this.font, this.width, this.height, l);
                }

                if (this.splashText != null) {
                    RenderSystem.pushMatrix();
                    RenderSystem.translatef((float) (this.width / 2 + 90), 70.0F, 0.0F);
                    RenderSystem.rotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                    float f2 = 1.8F - MathHelper.abs(MathHelper.sin((float) (Util.milliTime() % 1000L) / 1000.0F * ((float) Math.PI * 2F)) * 0.1F);
                    f2 = f2 * 100.0F / (float) (this.font.getStringWidth(this.splashText) + 32);
                    RenderSystem.scalef(f2, f2, f2);
                    drawCenteredString(matrixStack, this.font, this.splashText, 0, -8, 16776960 | l);
                    RenderSystem.popMatrix();
                }

                String s = "Minecraft " + SharedConstants.getVersion().getName();

                if (this.minecraft.isDemo()) {
                    s = s + " Demo";
                } else {
                    s = s + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType());
                }

                if (this.minecraft.isModdedClient()) {
                    s = s + I18n.format("menu.modded");
                }

                if (Reflector.BrandingControl.exists()) {
                    if (Reflector.BrandingControl_forEachLine.exists()) {
                        BiConsumer<Integer, String> biconsumer = (p_lambda$render$12_3_, p_lambda$render$12_4_) -> drawString(matrixStack, this.font, p_lambda$render$12_4_, 2, this.height - (10 + p_lambda$render$12_3_ * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachLine, true, true, biconsumer);
                    }

                    if (Reflector.BrandingControl_forEachAboveCopyrightLine.exists()) {
                        BiConsumer<Integer, String> biconsumer1 = (p_lambda$render$13_3_, p_lambda$render$13_4_) -> drawString(matrixStack, this.font, p_lambda$render$13_4_, this.width - this.font.getStringWidth(p_lambda$render$13_4_), this.height - (10 + (p_lambda$render$13_3_ + 1) * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachAboveCopyrightLine, biconsumer1);
                    }
                } else {
                    drawString(matrixStack, this.font, s, 2, this.height - 10, 16777215 | l);
                }

                drawString(matrixStack, this.font, "Copyright Mojang AB. Do not distribute!", this.widthCopyrightRest, this.height - 10, 16777215 | l);

                if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) {
                    fill(matrixStack, this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, 16777215 | l);
                }

                for (Widget widget : this.buttons) {
                    widget.setAlpha(f1);
                }

                if (this.areRealmsNotificationsEnabled() && f1 >= 1.0F) {
                    this.realmsNotification.render(matrixStack, mouseX, mouseY, partialTicks);
                }

                super.render(matrixStack, mouseX, mouseY, partialTicks);
            }

            return;
        }

        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/i.png"), 0, 0, scaledWidth, scaledHeight, -1);

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f, centerY + 110, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered3 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f + 415, centerY + 220, 16, 16);
        hover3.setDirection(hovered3 ? Direction.FORWARDS : Direction.BACKWARDS);

        GaussianBlur.applyBlur(() -> RenderUtils.Render2D.drawRound(centerX - 277 / 2f, centerY - 275.5f / 2f, 277, 275.5f, 10, -1), 40, 2);
        RenderUtils.Render2D.drawRound(centerX - 262 / 2f, centerY - 235 / 2f, 262, 245,25, ColorUtils.rgba(69, 23, 255,65));
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/vk.png"), centerX + 444, (float) (centerY + 220 - hover1.getOutput()), 16, 16, -1);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/discord.png"), centerX - 16 / 2f + 415, (float) (centerY + 220 - hover3.getOutput()), 16, 16, -1);

        Fonts.fontBold[32].drawCenteredString(matrixStack, info.output, centerX, centerY - 90, -1);
        Fonts.font[24].drawCenteredString(matrixStack, like.output, centerX-390, centerY+240, -1);
        RenderUtils.Render2D.drawRound(centerX + 390, centerY  +204, 90, 45,20, ColorUtils.rgba(69, 23, 255,65));

        renderSnow(matrixStack);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        mc.gameRenderer.setupOverlayRendering();
    }

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

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f +415, centerY + 220, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        if (hovered1) {
            Util.getOSType().openURI("https://vk.com/wissendclient");
        } else if (hovered2) {
            Util.getOSType().openURI("https://discord.gg/wissend");
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    public void onClose() {
        if (this.realmsNotification != null) {
            this.realmsNotification.onClose();
        }
    }
    class snowflake {
        public float x;
        public float y;
        public float size;
        public float alpha;
    }

    int snowflake_count = 59;

    public List<snowflake> sfs = new ArrayList<snowflake>();

    boolean created = false;
    private final TimerUtils bolvan = new TimerUtils();

    protected void renderSnowflake(MatrixStack matrixStack, snowflake snowflake) {
        Fonts.font[new Random().nextInt(15, 22)].drawString(matrixStack, "?", snowflake.x, snowflake.y, ColorUtils.rgba(255, 255, 255, snowflake.alpha));
    }

    protected void createSnowflakeList() {
        if(!created) {
            for (int i = 1; i <= snowflake_count; i++) {
                snowflake s = new snowflake();
                s.x = new Random().nextInt(140, 1900);
                s.y = new Random().nextInt(-192, 33);
                s.alpha = new Random().nextInt(60, 255);
                s.size = 1;
                sfs.add(s);
                if (i == snowflake_count) { created = true; }
            }
        }
    }

    int f = 1;

    protected void createSnowflakes(MatrixStack matrixStack) {
        if(!created) { return; }

        long l = 10;
        if(bolvan.hasTimeElapsed(l)) {
            for (int i = 1; i <= sfs.size()-1; i++) {
                sfs.get(i).x = sfs.get(i).x - 1;
                sfs.get(i).y = sfs.get(i).y + 1;
                if(i <= sfs.size()-1) { bolvan.reset(); }
            }
        }

        for(int i = 0; i <= sfs.size()-1; i++){
            renderSnowflake(matrixStack, sfs.get(i));
        }

        if (sfs.get(sfs.size()-8).y > 60*f) {
            created = false;
            f++;
        }
        if(sfs.get(sfs.size()-8).y > 1050){
            for (int i = 1; i <= snowflake_count; i++) { sfs.remove(i); f-=0.5; }
        }
    }

    public void renderSnow(MatrixStack matrixStack) {
        createSnowflakeList();
        createSnowflakes(matrixStack);
    }

    public static class CustomButton extends AbstractButton {

        public static final Button.ITooltip field_238486_s_ = (button, matrixStack, mouseX, mouseY) -> {};
        protected final Button.IPressable onPress;
        protected final Button.ITooltip onTooltip;


        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction) {
            this(x, y, width, height, title, pressedAction, field_238486_s_);
        }

        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction, Button.ITooltip onTooltip) {
            super(x, y, width, height, title);
            this.onPress = pressedAction;
            this.onTooltip = onTooltip;
        }

        public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
            RenderUtils.Render2D.drawRound(x, y, width, height, 6, ColorUtils.rgba(69, 23, 255,75));
            Fonts.font[22].drawCenteredString(matrixStack, this.getMessage().getString(), x + width / 2f, y + height / 2f - Fonts.font[22].getFontHeight() / 2f + 1.5f, -1);
        }


        public void onPress() {
            this.onPress.onPress(this);
        }
// NOT SELFCODE ONLY PASTE
    }
}
выглядит не плохо, менюха на вкус. Как по мне дизайн как в читах были 1.12.2
выглядит не плохо, менюха на вкус. Как по мне дизайн как в читах были 1.12.2
если хочешь можем в дискорд пойти, скажу что чего недостаточно
 
Висенд меню
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сделаешь клик гуи за 22к?
 
Впринципе прикольно делай дальше советую сделать кнопки дс и тг или чё там была не помню поменьше и будет имба
 
могу дать утилки
да и ошибок много, нету случайно версии на 3.1 просто очень шикарно выглядит
или помоги вот дс: zybnopast
буду благодарен тому кто поможет я просто очень плох в плане менюшки поэтому гайды смотрю
 
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.

CODE -

Код:
Expand Collapse Copy
public class MainMenuScreen extends Screen implements IMinecraft {

    public static final RenderSkyboxCube PANORAMA_RESOURCES = new RenderSkyboxCube(new ResourceLocation("textures/gui/title/background/panorama"));
    private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = new ResourceLocation("textures/gui/title/background/panorama_overlay.png");
    private static final ResourceLocation ACCESSIBILITY_TEXTURES = new ResourceLocation("textures/gui/accessibility.png");
    private final boolean showTitleWronglySpelled;
    private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("textures/gui/title/minecraft.png");
    private static final ResourceLocation MINECRAFT_TITLE_EDITION = new ResourceLocation("textures/gui/title/edition.png");
    private int widthCopyright;
    private int widthCopyrightRest;
    private Screen realmsNotification;
    private boolean hasCheckedForRealmsNotification;
    @Nullable
    private String splashText;
    private final RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES);
    private final boolean showFadeInAnimation;
    private long firstRenderTime;


    public MainMenuScreen() {
        this(false);
    }


    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        if (ClientUtils.unHook) {
            if (this.splashText == null) {
                this.splashText = this.minecraft.getSplashes().getSplashText();
            }

            this.widthCopyright = this.font.getStringWidth("Copyright Mojang AB. Do not distribute!");
            this.widthCopyrightRest = this.width - this.widthCopyright - 2;
            int j = this.height / 4 + 48;
            Button button;
            this.addSingleplayerMultiplayerButtons(j, 24);

            if (Reflector.ModListScreen_Constructor.exists()) {
                button = ReflectorForge.makeButtonMods(this, j, 24);
                this.addButton(button);
            }

            this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_lambda$init$0_1_) -> this.minecraft.displayGuiScreen(new LanguageScreen(this, this.minecraft.gameSettings, this.minecraft.getLanguageManager())), new TranslationTextComponent("narrator.button.language")));
            this.addButton(new Button(this.width / 2 - 100, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.options"), (p_lambda$init$1_1_) -> this.minecraft.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
            this.addButton(new Button(this.width / 2 + 2, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.quit"), (p_lambda$init$2_1_) -> this.minecraft.shutdown()));
            this.addButton(new ImageButton(this.width / 2 + 104, j + 72 + 12, 20, 20, 0, 0, 20, ACCESSIBILITY_TEXTURES, 32, 64, (p_lambda$init$3_1_) -> this.minecraft.displayGuiScreen(new AccessibilityScreen(this, this.minecraft.gameSettings)), new TranslationTextComponent("narrator.button.accessibility")));
            this.minecraft.setConnectedToRealms(false);

            if (this.minecraft.gameSettings.realmsNotifications && !this.hasCheckedForRealmsNotification) {
                RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
                this.realmsNotification = realmsbridgescreen.func_239555_b_(this);
                this.hasCheckedForRealmsNotification = true;
            }

            if (this.areRealmsNotificationsEnabled()) {
                this.realmsNotification.init(this.minecraft, this.width, this.height);
            }

            return;
        }

        int buttonWidth = 140;
        int buttonHeight = 25;
        int offset = buttonHeight + 5;
        int centerY = mw.scaledHeight() / 2 - 50;

        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY, buttonWidth, buttonHeight, new StringTextComponent("Singleplayer"), p_onPress_1_ -> mc.displayGuiScreen(new WorldSelectionScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset, buttonWidth, buttonHeight, new StringTextComponent("Multiplayer"), p_onPress_1_ -> mc.displayGuiScreen(new MultiplayerScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 2, buttonWidth, buttonHeight, new StringTextComponent("Alt Manager"), p_onPress_1_ -> mc.displayGuiScreen(Manager.ALT)));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 3, buttonWidth, buttonHeight, new StringTextComponent("Settings"), p_onPress_1_ -> mc.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 4, buttonWidth, buttonHeight, new StringTextComponent("Exit"), p_onPress_1_ -> mc.shutdownMinecraftApplet()));
    }

    private boolean areRealmsNotificationsEnabled() {
        return this.minecraft.gameSettings.realmsNotifications && this.realmsNotification != null;
    }

    private void addSingleplayerMultiplayerButtons(int yIn, int rowHeightIn) {
        this.addButton(new Button(this.width / 2 - 100, yIn, 200, 20, new TranslationTextComponent("menu.singleplayer"), (p_lambda$addSingleplayerMultiplayerButtons$4_1_) -> this.minecraft.displayGuiScreen(new WorldSelectionScreen(this))));
        boolean flag = this.minecraft.isMultiplayerEnabled();
        Button.ITooltip button$itooltip = flag ? Button.field_238486_s_ : (p_lambda$addSingleplayerMultiplayerButtons$5_1_, p_lambda$addSingleplayerMultiplayerButtons$5_2_, p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_) ->
        {
            if (!p_lambda$addSingleplayerMultiplayerButtons$5_1_.active) {
                this.renderTooltip(p_lambda$addSingleplayerMultiplayerButtons$5_2_, this.minecraft.fontRenderer.trimStringToWidth(new TranslationTextComponent("title.multiplayer.disabled"), Math.max(this.width / 2 - 43, 170)), p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_);
            }
        };
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 1, 200, 20, new TranslationTextComponent("menu.multiplayer"), (p_lambda$addSingleplayerMultiplayerButtons$6_1_) ->
        {
            Screen screen = this.minecraft.gameSettings.skipMultiplayerWarning ? new MultiplayerScreen(this) : new MultiplayerWarningScreen(this);
            this.minecraft.displayGuiScreen(screen);
        }, button$itooltip)).active = flag;
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 2, 200, 20, new TranslationTextComponent("menu.online"), (p_lambda$addSingleplayerMultiplayerButtons$7_1_) -> this.switchToRealms(), button$itooltip)).active = flag;
        if (Reflector.ModListScreen_Constructor.exists() && this.buttons.size() > 0) {
            Widget widget = this.buttons.get(this.buttons.size() - 1);
            widget.x = this.width / 2 + 2;
            widget.setWidth(98);
        }
    }

    private void switchToRealms() {
        RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
        realmsbridgescreen.func_231394_a_(this);
    }

    public MainMenuScreen(boolean fadeIn) {
        super(new TranslationTextComponent("narrator.screen.title"));
        this.showFadeInAnimation = fadeIn;
        this.showTitleWronglySpelled = (double) (new Random()).nextFloat() < 1.0E-4D;
    }

    public void tick() {
        if (this.areRealmsNotificationsEnabled()) {
            this.realmsNotification.tick();
        }
    }

    public static CompletableFuture<Void> loadAsync(TextureManager texMngr, Executor backgroundExecutor) {
        return CompletableFuture.allOf(texMngr.loadAsync(MINECRAFT_TITLE_TEXTURES, backgroundExecutor), texMngr.loadAsync(MINECRAFT_TITLE_EDITION, backgroundExecutor), texMngr.loadAsync(PANORAMA_OVERLAY_TEXTURES, backgroundExecutor), PANORAMA_RESOURCES.loadAsync(texMngr, backgroundExecutor));
    }

    public boolean isPauseScreen() {
        return false;
    }

    public boolean shouldCloseOnEsc() {
        return false;

    }



    private final BetterText info = new BetterText(List.of(" ", "Welcome, " + ClientUtils.me.getName()), 4500);
    private final BetterText like = new BetterText(List.of(" ", "Сделано с любовью, Acidka!"), 4500);
    private final Animation hover1 = new DecelerateAnimation(150, 3);
    private final Animation hover2 = new DecelerateAnimation(150, 3);
    private final Animation hover3 = new DecelerateAnimation(150, 3);

    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        if (ClientUtils.unHook) {
            if (this.firstRenderTime == 0L && this.showFadeInAnimation) {
                this.firstRenderTime = Util.milliTime();
                }



            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            RenderSystem.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int j = this.width / 2 - 137;
            this.minecraft.getTextureManager().bindTexture(PANORAMA_OVERLAY_TEXTURES);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
            RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.showFadeInAnimation ? (float) MathHelper.ceil(MathHelper.clamp(f, 0.0F, 1.0F)) : 1.0F);
            blit(matrixStack, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128);
            float f1 = this.showFadeInAnimation ? MathHelper.clamp(f - 1.0F, 0.0F, 1.0F) : 1.0F;
            int l = MathHelper.ceil(f1 * 255.0F) << 24;

            if ((l & -67108864) != 0) {
                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_TEXTURES);
                RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);

                if (this.showTitleWronglySpelled) {
                    this.blitBlackOutline(j, 30, (p_lambda$render$10_2_, p_lambda$render$10_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$10_2_ + 0, p_lambda$render$10_3_, 0, 0, 99, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99, p_lambda$render$10_3_, 129, 0, 27, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26, p_lambda$render$10_3_, 126, 0, 3, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26 + 3, p_lambda$render$10_3_, 99, 0, 26, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 155, p_lambda$render$10_3_, 0, 45, 155, 44);
                    });
                } else {
                    this.blitBlackOutline(j, 30, (p_lambda$render$11_2_, p_lambda$render$11_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$11_2_ + 0, p_lambda$render$11_3_, 0, 0, 155, 44);
                        this.blit(matrixStack, p_lambda$render$11_2_ + 155, p_lambda$render$11_3_, 0, 45, 155, 44);
                    });
                }

                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_EDITION);
                blit(matrixStack, j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);

                if (Reflector.ForgeHooksClient_renderMainMenu.exists()) {
                    Reflector.callVoid(Reflector.ForgeHooksClient_renderMainMenu, this, matrixStack, this.font, this.width, this.height, l);
                }

                if (this.splashText != null) {
                    RenderSystem.pushMatrix();
                    RenderSystem.translatef((float) (this.width / 2 + 90), 70.0F, 0.0F);
                    RenderSystem.rotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                    float f2 = 1.8F - MathHelper.abs(MathHelper.sin((float) (Util.milliTime() % 1000L) / 1000.0F * ((float) Math.PI * 2F)) * 0.1F);
                    f2 = f2 * 100.0F / (float) (this.font.getStringWidth(this.splashText) + 32);
                    RenderSystem.scalef(f2, f2, f2);
                    drawCenteredString(matrixStack, this.font, this.splashText, 0, -8, 16776960 | l);
                    RenderSystem.popMatrix();
                }

                String s = "Minecraft " + SharedConstants.getVersion().getName();

                if (this.minecraft.isDemo()) {
                    s = s + " Demo";
                } else {
                    s = s + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType());
                }

                if (this.minecraft.isModdedClient()) {
                    s = s + I18n.format("menu.modded");
                }

                if (Reflector.BrandingControl.exists()) {
                    if (Reflector.BrandingControl_forEachLine.exists()) {
                        BiConsumer<Integer, String> biconsumer = (p_lambda$render$12_3_, p_lambda$render$12_4_) -> drawString(matrixStack, this.font, p_lambda$render$12_4_, 2, this.height - (10 + p_lambda$render$12_3_ * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachLine, true, true, biconsumer);
                    }

                    if (Reflector.BrandingControl_forEachAboveCopyrightLine.exists()) {
                        BiConsumer<Integer, String> biconsumer1 = (p_lambda$render$13_3_, p_lambda$render$13_4_) -> drawString(matrixStack, this.font, p_lambda$render$13_4_, this.width - this.font.getStringWidth(p_lambda$render$13_4_), this.height - (10 + (p_lambda$render$13_3_ + 1) * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachAboveCopyrightLine, biconsumer1);
                    }
                } else {
                    drawString(matrixStack, this.font, s, 2, this.height - 10, 16777215 | l);
                }

                drawString(matrixStack, this.font, "Copyright Mojang AB. Do not distribute!", this.widthCopyrightRest, this.height - 10, 16777215 | l);

                if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) {
                    fill(matrixStack, this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, 16777215 | l);
                }

                for (Widget widget : this.buttons) {
                    widget.setAlpha(f1);
                }

                if (this.areRealmsNotificationsEnabled() && f1 >= 1.0F) {
                    this.realmsNotification.render(matrixStack, mouseX, mouseY, partialTicks);
                }

                super.render(matrixStack, mouseX, mouseY, partialTicks);
            }

            return;
        }

        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/i.png"), 0, 0, scaledWidth, scaledHeight, -1);

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f, centerY + 110, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered3 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f + 415, centerY + 220, 16, 16);
        hover3.setDirection(hovered3 ? Direction.FORWARDS : Direction.BACKWARDS);

        GaussianBlur.applyBlur(() -> RenderUtils.Render2D.drawRound(centerX - 277 / 2f, centerY - 275.5f / 2f, 277, 275.5f, 10, -1), 40, 2);
        RenderUtils.Render2D.drawRound(centerX - 262 / 2f, centerY - 235 / 2f, 262, 245,25, ColorUtils.rgba(69, 23, 255,65));
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/vk.png"), centerX + 444, (float) (centerY + 220 - hover1.getOutput()), 16, 16, -1);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/discord.png"), centerX - 16 / 2f + 415, (float) (centerY + 220 - hover3.getOutput()), 16, 16, -1);

        Fonts.fontBold[32].drawCenteredString(matrixStack, info.output, centerX, centerY - 90, -1);
        Fonts.font[24].drawCenteredString(matrixStack, like.output, centerX-390, centerY+240, -1);
        RenderUtils.Render2D.drawRound(centerX + 390, centerY  +204, 90, 45,20, ColorUtils.rgba(69, 23, 255,65));

        renderSnow(matrixStack);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        mc.gameRenderer.setupOverlayRendering();
    }

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

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f +415, centerY + 220, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        if (hovered1) {
            Util.getOSType().openURI("https://vk.com/wissendclient");
        } else if (hovered2) {
            Util.getOSType().openURI("https://discord.gg/wissend");
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    public void onClose() {
        if (this.realmsNotification != null) {
            this.realmsNotification.onClose();
        }
    }
    class snowflake {
        public float x;
        public float y;
        public float size;
        public float alpha;
    }

    int snowflake_count = 59;

    public List<snowflake> sfs = new ArrayList<snowflake>();

    boolean created = false;
    private final TimerUtils bolvan = new TimerUtils();

    protected void renderSnowflake(MatrixStack matrixStack, snowflake snowflake) {
        Fonts.font[new Random().nextInt(15, 22)].drawString(matrixStack, "?", snowflake.x, snowflake.y, ColorUtils.rgba(255, 255, 255, snowflake.alpha));
    }

    protected void createSnowflakeList() {
        if(!created) {
            for (int i = 1; i <= snowflake_count; i++) {
                snowflake s = new snowflake();
                s.x = new Random().nextInt(140, 1900);
                s.y = new Random().nextInt(-192, 33);
                s.alpha = new Random().nextInt(60, 255);
                s.size = 1;
                sfs.add(s);
                if (i == snowflake_count) { created = true; }
            }
        }
    }

    int f = 1;

    protected void createSnowflakes(MatrixStack matrixStack) {
        if(!created) { return; }

        long l = 10;
        if(bolvan.hasTimeElapsed(l)) {
            for (int i = 1; i <= sfs.size()-1; i++) {
                sfs.get(i).x = sfs.get(i).x - 1;
                sfs.get(i).y = sfs.get(i).y + 1;
                if(i <= sfs.size()-1) { bolvan.reset(); }
            }
        }

        for(int i = 0; i <= sfs.size()-1; i++){
            renderSnowflake(matrixStack, sfs.get(i));
        }

        if (sfs.get(sfs.size()-8).y > 60*f) {
            created = false;
            f++;
        }
        if(sfs.get(sfs.size()-8).y > 1050){
            for (int i = 1; i <= snowflake_count; i++) { sfs.remove(i); f-=0.5; }
        }
    }

    public void renderSnow(MatrixStack matrixStack) {
        createSnowflakeList();
        createSnowflakes(matrixStack);
    }

    public static class CustomButton extends AbstractButton {

        public static final Button.ITooltip field_238486_s_ = (button, matrixStack, mouseX, mouseY) -> {};
        protected final Button.IPressable onPress;
        protected final Button.ITooltip onTooltip;


        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction) {
            this(x, y, width, height, title, pressedAction, field_238486_s_);
        }

        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction, Button.ITooltip onTooltip) {
            super(x, y, width, height, title);
            this.onPress = pressedAction;
            this.onTooltip = onTooltip;
        }

        public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
            RenderUtils.Render2D.drawRound(x, y, width, height, 6, ColorUtils.rgba(69, 23, 255,75));
            Fonts.font[22].drawCenteredString(matrixStack, this.getMessage().getString(), x + width / 2f, y + height / 2f - Fonts.font[22].getFontHeight() / 2f + 1.5f, -1);
        }


        public void onPress() {
            this.onPress.onPress(this);
        }
// NOT SELFCODE ONLY PASTE
    }
}
если с цветами и кнопками еще чутка поиграться то будет здраво
 
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.

CODE -

Код:
Expand Collapse Copy
public class MainMenuScreen extends Screen implements IMinecraft {

    public static final RenderSkyboxCube PANORAMA_RESOURCES = new RenderSkyboxCube(new ResourceLocation("textures/gui/title/background/panorama"));
    private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = new ResourceLocation("textures/gui/title/background/panorama_overlay.png");
    private static final ResourceLocation ACCESSIBILITY_TEXTURES = new ResourceLocation("textures/gui/accessibility.png");
    private final boolean showTitleWronglySpelled;
    private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("textures/gui/title/minecraft.png");
    private static final ResourceLocation MINECRAFT_TITLE_EDITION = new ResourceLocation("textures/gui/title/edition.png");
    private int widthCopyright;
    private int widthCopyrightRest;
    private Screen realmsNotification;
    private boolean hasCheckedForRealmsNotification;
    @Nullable
    private String splashText;
    private final RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES);
    private final boolean showFadeInAnimation;
    private long firstRenderTime;


    public MainMenuScreen() {
        this(false);
    }


    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        if (ClientUtils.unHook) {
            if (this.splashText == null) {
                this.splashText = this.minecraft.getSplashes().getSplashText();
            }

            this.widthCopyright = this.font.getStringWidth("Copyright Mojang AB. Do not distribute!");
            this.widthCopyrightRest = this.width - this.widthCopyright - 2;
            int j = this.height / 4 + 48;
            Button button;
            this.addSingleplayerMultiplayerButtons(j, 24);

            if (Reflector.ModListScreen_Constructor.exists()) {
                button = ReflectorForge.makeButtonMods(this, j, 24);
                this.addButton(button);
            }

            this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_lambda$init$0_1_) -> this.minecraft.displayGuiScreen(new LanguageScreen(this, this.minecraft.gameSettings, this.minecraft.getLanguageManager())), new TranslationTextComponent("narrator.button.language")));
            this.addButton(new Button(this.width / 2 - 100, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.options"), (p_lambda$init$1_1_) -> this.minecraft.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
            this.addButton(new Button(this.width / 2 + 2, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.quit"), (p_lambda$init$2_1_) -> this.minecraft.shutdown()));
            this.addButton(new ImageButton(this.width / 2 + 104, j + 72 + 12, 20, 20, 0, 0, 20, ACCESSIBILITY_TEXTURES, 32, 64, (p_lambda$init$3_1_) -> this.minecraft.displayGuiScreen(new AccessibilityScreen(this, this.minecraft.gameSettings)), new TranslationTextComponent("narrator.button.accessibility")));
            this.minecraft.setConnectedToRealms(false);

            if (this.minecraft.gameSettings.realmsNotifications && !this.hasCheckedForRealmsNotification) {
                RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
                this.realmsNotification = realmsbridgescreen.func_239555_b_(this);
                this.hasCheckedForRealmsNotification = true;
            }

            if (this.areRealmsNotificationsEnabled()) {
                this.realmsNotification.init(this.minecraft, this.width, this.height);
            }

            return;
        }

        int buttonWidth = 140;
        int buttonHeight = 25;
        int offset = buttonHeight + 5;
        int centerY = mw.scaledHeight() / 2 - 50;

        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY, buttonWidth, buttonHeight, new StringTextComponent("Singleplayer"), p_onPress_1_ -> mc.displayGuiScreen(new WorldSelectionScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset, buttonWidth, buttonHeight, new StringTextComponent("Multiplayer"), p_onPress_1_ -> mc.displayGuiScreen(new MultiplayerScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 2, buttonWidth, buttonHeight, new StringTextComponent("Alt Manager"), p_onPress_1_ -> mc.displayGuiScreen(Manager.ALT)));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 3, buttonWidth, buttonHeight, new StringTextComponent("Settings"), p_onPress_1_ -> mc.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 4, buttonWidth, buttonHeight, new StringTextComponent("Exit"), p_onPress_1_ -> mc.shutdownMinecraftApplet()));
    }

    private boolean areRealmsNotificationsEnabled() {
        return this.minecraft.gameSettings.realmsNotifications && this.realmsNotification != null;
    }

    private void addSingleplayerMultiplayerButtons(int yIn, int rowHeightIn) {
        this.addButton(new Button(this.width / 2 - 100, yIn, 200, 20, new TranslationTextComponent("menu.singleplayer"), (p_lambda$addSingleplayerMultiplayerButtons$4_1_) -> this.minecraft.displayGuiScreen(new WorldSelectionScreen(this))));
        boolean flag = this.minecraft.isMultiplayerEnabled();
        Button.ITooltip button$itooltip = flag ? Button.field_238486_s_ : (p_lambda$addSingleplayerMultiplayerButtons$5_1_, p_lambda$addSingleplayerMultiplayerButtons$5_2_, p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_) ->
        {
            if (!p_lambda$addSingleplayerMultiplayerButtons$5_1_.active) {
                this.renderTooltip(p_lambda$addSingleplayerMultiplayerButtons$5_2_, this.minecraft.fontRenderer.trimStringToWidth(new TranslationTextComponent("title.multiplayer.disabled"), Math.max(this.width / 2 - 43, 170)), p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_);
            }
        };
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 1, 200, 20, new TranslationTextComponent("menu.multiplayer"), (p_lambda$addSingleplayerMultiplayerButtons$6_1_) ->
        {
            Screen screen = this.minecraft.gameSettings.skipMultiplayerWarning ? new MultiplayerScreen(this) : new MultiplayerWarningScreen(this);
            this.minecraft.displayGuiScreen(screen);
        }, button$itooltip)).active = flag;
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 2, 200, 20, new TranslationTextComponent("menu.online"), (p_lambda$addSingleplayerMultiplayerButtons$7_1_) -> this.switchToRealms(), button$itooltip)).active = flag;
        if (Reflector.ModListScreen_Constructor.exists() && this.buttons.size() > 0) {
            Widget widget = this.buttons.get(this.buttons.size() - 1);
            widget.x = this.width / 2 + 2;
            widget.setWidth(98);
        }
    }

    private void switchToRealms() {
        RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
        realmsbridgescreen.func_231394_a_(this);
    }

    public MainMenuScreen(boolean fadeIn) {
        super(new TranslationTextComponent("narrator.screen.title"));
        this.showFadeInAnimation = fadeIn;
        this.showTitleWronglySpelled = (double) (new Random()).nextFloat() < 1.0E-4D;
    }

    public void tick() {
        if (this.areRealmsNotificationsEnabled()) {
            this.realmsNotification.tick();
        }
    }

    public static CompletableFuture<Void> loadAsync(TextureManager texMngr, Executor backgroundExecutor) {
        return CompletableFuture.allOf(texMngr.loadAsync(MINECRAFT_TITLE_TEXTURES, backgroundExecutor), texMngr.loadAsync(MINECRAFT_TITLE_EDITION, backgroundExecutor), texMngr.loadAsync(PANORAMA_OVERLAY_TEXTURES, backgroundExecutor), PANORAMA_RESOURCES.loadAsync(texMngr, backgroundExecutor));
    }

    public boolean isPauseScreen() {
        return false;
    }

    public boolean shouldCloseOnEsc() {
        return false;

    }



    private final BetterText info = new BetterText(List.of(" ", "Welcome, " + ClientUtils.me.getName()), 4500);
    private final BetterText like = new BetterText(List.of(" ", "Сделано с любовью, Acidka!"), 4500);
    private final Animation hover1 = new DecelerateAnimation(150, 3);
    private final Animation hover2 = new DecelerateAnimation(150, 3);
    private final Animation hover3 = new DecelerateAnimation(150, 3);

    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        if (ClientUtils.unHook) {
            if (this.firstRenderTime == 0L && this.showFadeInAnimation) {
                this.firstRenderTime = Util.milliTime();
                }



            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            RenderSystem.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int j = this.width / 2 - 137;
            this.minecraft.getTextureManager().bindTexture(PANORAMA_OVERLAY_TEXTURES);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
            RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.showFadeInAnimation ? (float) MathHelper.ceil(MathHelper.clamp(f, 0.0F, 1.0F)) : 1.0F);
            blit(matrixStack, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128);
            float f1 = this.showFadeInAnimation ? MathHelper.clamp(f - 1.0F, 0.0F, 1.0F) : 1.0F;
            int l = MathHelper.ceil(f1 * 255.0F) << 24;

            if ((l & -67108864) != 0) {
                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_TEXTURES);
                RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);

                if (this.showTitleWronglySpelled) {
                    this.blitBlackOutline(j, 30, (p_lambda$render$10_2_, p_lambda$render$10_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$10_2_ + 0, p_lambda$render$10_3_, 0, 0, 99, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99, p_lambda$render$10_3_, 129, 0, 27, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26, p_lambda$render$10_3_, 126, 0, 3, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26 + 3, p_lambda$render$10_3_, 99, 0, 26, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 155, p_lambda$render$10_3_, 0, 45, 155, 44);
                    });
                } else {
                    this.blitBlackOutline(j, 30, (p_lambda$render$11_2_, p_lambda$render$11_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$11_2_ + 0, p_lambda$render$11_3_, 0, 0, 155, 44);
                        this.blit(matrixStack, p_lambda$render$11_2_ + 155, p_lambda$render$11_3_, 0, 45, 155, 44);
                    });
                }

                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_EDITION);
                blit(matrixStack, j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);

                if (Reflector.ForgeHooksClient_renderMainMenu.exists()) {
                    Reflector.callVoid(Reflector.ForgeHooksClient_renderMainMenu, this, matrixStack, this.font, this.width, this.height, l);
                }

                if (this.splashText != null) {
                    RenderSystem.pushMatrix();
                    RenderSystem.translatef((float) (this.width / 2 + 90), 70.0F, 0.0F);
                    RenderSystem.rotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                    float f2 = 1.8F - MathHelper.abs(MathHelper.sin((float) (Util.milliTime() % 1000L) / 1000.0F * ((float) Math.PI * 2F)) * 0.1F);
                    f2 = f2 * 100.0F / (float) (this.font.getStringWidth(this.splashText) + 32);
                    RenderSystem.scalef(f2, f2, f2);
                    drawCenteredString(matrixStack, this.font, this.splashText, 0, -8, 16776960 | l);
                    RenderSystem.popMatrix();
                }

                String s = "Minecraft " + SharedConstants.getVersion().getName();

                if (this.minecraft.isDemo()) {
                    s = s + " Demo";
                } else {
                    s = s + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType());
                }

                if (this.minecraft.isModdedClient()) {
                    s = s + I18n.format("menu.modded");
                }

                if (Reflector.BrandingControl.exists()) {
                    if (Reflector.BrandingControl_forEachLine.exists()) {
                        BiConsumer<Integer, String> biconsumer = (p_lambda$render$12_3_, p_lambda$render$12_4_) -> drawString(matrixStack, this.font, p_lambda$render$12_4_, 2, this.height - (10 + p_lambda$render$12_3_ * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachLine, true, true, biconsumer);
                    }

                    if (Reflector.BrandingControl_forEachAboveCopyrightLine.exists()) {
                        BiConsumer<Integer, String> biconsumer1 = (p_lambda$render$13_3_, p_lambda$render$13_4_) -> drawString(matrixStack, this.font, p_lambda$render$13_4_, this.width - this.font.getStringWidth(p_lambda$render$13_4_), this.height - (10 + (p_lambda$render$13_3_ + 1) * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachAboveCopyrightLine, biconsumer1);
                    }
                } else {
                    drawString(matrixStack, this.font, s, 2, this.height - 10, 16777215 | l);
                }

                drawString(matrixStack, this.font, "Copyright Mojang AB. Do not distribute!", this.widthCopyrightRest, this.height - 10, 16777215 | l);

                if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) {
                    fill(matrixStack, this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, 16777215 | l);
                }

                for (Widget widget : this.buttons) {
                    widget.setAlpha(f1);
                }

                if (this.areRealmsNotificationsEnabled() && f1 >= 1.0F) {
                    this.realmsNotification.render(matrixStack, mouseX, mouseY, partialTicks);
                }

                super.render(matrixStack, mouseX, mouseY, partialTicks);
            }

            return;
        }

        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/i.png"), 0, 0, scaledWidth, scaledHeight, -1);

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f, centerY + 110, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered3 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f + 415, centerY + 220, 16, 16);
        hover3.setDirection(hovered3 ? Direction.FORWARDS : Direction.BACKWARDS);

        GaussianBlur.applyBlur(() -> RenderUtils.Render2D.drawRound(centerX - 277 / 2f, centerY - 275.5f / 2f, 277, 275.5f, 10, -1), 40, 2);
        RenderUtils.Render2D.drawRound(centerX - 262 / 2f, centerY - 235 / 2f, 262, 245,25, ColorUtils.rgba(69, 23, 255,65));
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/vk.png"), centerX + 444, (float) (centerY + 220 - hover1.getOutput()), 16, 16, -1);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/discord.png"), centerX - 16 / 2f + 415, (float) (centerY + 220 - hover3.getOutput()), 16, 16, -1);

        Fonts.fontBold[32].drawCenteredString(matrixStack, info.output, centerX, centerY - 90, -1);
        Fonts.font[24].drawCenteredString(matrixStack, like.output, centerX-390, centerY+240, -1);
        RenderUtils.Render2D.drawRound(centerX + 390, centerY  +204, 90, 45,20, ColorUtils.rgba(69, 23, 255,65));

        renderSnow(matrixStack);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        mc.gameRenderer.setupOverlayRendering();
    }

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

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f +415, centerY + 220, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        if (hovered1) {
            Util.getOSType().openURI("https://vk.com/wissendclient");
        } else if (hovered2) {
            Util.getOSType().openURI("https://discord.gg/wissend");
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    public void onClose() {
        if (this.realmsNotification != null) {
            this.realmsNotification.onClose();
        }
    }
    class snowflake {
        public float x;
        public float y;
        public float size;
        public float alpha;
    }

    int snowflake_count = 59;

    public List<snowflake> sfs = new ArrayList<snowflake>();

    boolean created = false;
    private final TimerUtils bolvan = new TimerUtils();

    protected void renderSnowflake(MatrixStack matrixStack, snowflake snowflake) {
        Fonts.font[new Random().nextInt(15, 22)].drawString(matrixStack, "?", snowflake.x, snowflake.y, ColorUtils.rgba(255, 255, 255, snowflake.alpha));
    }

    protected void createSnowflakeList() {
        if(!created) {
            for (int i = 1; i <= snowflake_count; i++) {
                snowflake s = new snowflake();
                s.x = new Random().nextInt(140, 1900);
                s.y = new Random().nextInt(-192, 33);
                s.alpha = new Random().nextInt(60, 255);
                s.size = 1;
                sfs.add(s);
                if (i == snowflake_count) { created = true; }
            }
        }
    }

    int f = 1;

    protected void createSnowflakes(MatrixStack matrixStack) {
        if(!created) { return; }

        long l = 10;
        if(bolvan.hasTimeElapsed(l)) {
            for (int i = 1; i <= sfs.size()-1; i++) {
                sfs.get(i).x = sfs.get(i).x - 1;
                sfs.get(i).y = sfs.get(i).y + 1;
                if(i <= sfs.size()-1) { bolvan.reset(); }
            }
        }

        for(int i = 0; i <= sfs.size()-1; i++){
            renderSnowflake(matrixStack, sfs.get(i));
        }

        if (sfs.get(sfs.size()-8).y > 60*f) {
            created = false;
            f++;
        }
        if(sfs.get(sfs.size()-8).y > 1050){
            for (int i = 1; i <= snowflake_count; i++) { sfs.remove(i); f-=0.5; }
        }
    }

    public void renderSnow(MatrixStack matrixStack) {
        createSnowflakeList();
        createSnowflakes(matrixStack);
    }

    public static class CustomButton extends AbstractButton {

        public static final Button.ITooltip field_238486_s_ = (button, matrixStack, mouseX, mouseY) -> {};
        protected final Button.IPressable onPress;
        protected final Button.ITooltip onTooltip;


        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction) {
            this(x, y, width, height, title, pressedAction, field_238486_s_);
        }

        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction, Button.ITooltip onTooltip) {
            super(x, y, width, height, title);
            this.onPress = pressedAction;
            this.onTooltip = onTooltip;
        }

        public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
            RenderUtils.Render2D.drawRound(x, y, width, height, 6, ColorUtils.rgba(69, 23, 255,75));
            Fonts.font[22].drawCenteredString(matrixStack, this.getMessage().getString(), x + width / 2f, y + height / 2f - Fonts.font[22].getFontHeight() / 2f + 1.5f, -1);
        }


        public void onPress() {
            this.onPress.onPress(this);
        }
// NOT SELFCODE ONLY PASTE
    }
}
подумал перенести на 3.1 ренеймерам?
 
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.

CODE -

Код:
Expand Collapse Copy
public class MainMenuScreen extends Screen implements IMinecraft {

    public static final RenderSkyboxCube PANORAMA_RESOURCES = new RenderSkyboxCube(new ResourceLocation("textures/gui/title/background/panorama"));
    private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = new ResourceLocation("textures/gui/title/background/panorama_overlay.png");
    private static final ResourceLocation ACCESSIBILITY_TEXTURES = new ResourceLocation("textures/gui/accessibility.png");
    private final boolean showTitleWronglySpelled;
    private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("textures/gui/title/minecraft.png");
    private static final ResourceLocation MINECRAFT_TITLE_EDITION = new ResourceLocation("textures/gui/title/edition.png");
    private int widthCopyright;
    private int widthCopyrightRest;
    private Screen realmsNotification;
    private boolean hasCheckedForRealmsNotification;
    @Nullable
    private String splashText;
    private final RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES);
    private final boolean showFadeInAnimation;
    private long firstRenderTime;


    public MainMenuScreen() {
        this(false);
    }


    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        if (ClientUtils.unHook) {
            if (this.splashText == null) {
                this.splashText = this.minecraft.getSplashes().getSplashText();
            }

            this.widthCopyright = this.font.getStringWidth("Copyright Mojang AB. Do not distribute!");
            this.widthCopyrightRest = this.width - this.widthCopyright - 2;
            int j = this.height / 4 + 48;
            Button button;
            this.addSingleplayerMultiplayerButtons(j, 24);

            if (Reflector.ModListScreen_Constructor.exists()) {
                button = ReflectorForge.makeButtonMods(this, j, 24);
                this.addButton(button);
            }

            this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_lambda$init$0_1_) -> this.minecraft.displayGuiScreen(new LanguageScreen(this, this.minecraft.gameSettings, this.minecraft.getLanguageManager())), new TranslationTextComponent("narrator.button.language")));
            this.addButton(new Button(this.width / 2 - 100, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.options"), (p_lambda$init$1_1_) -> this.minecraft.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
            this.addButton(new Button(this.width / 2 + 2, j + 72 + 12, 98, 20, new TranslationTextComponent("menu.quit"), (p_lambda$init$2_1_) -> this.minecraft.shutdown()));
            this.addButton(new ImageButton(this.width / 2 + 104, j + 72 + 12, 20, 20, 0, 0, 20, ACCESSIBILITY_TEXTURES, 32, 64, (p_lambda$init$3_1_) -> this.minecraft.displayGuiScreen(new AccessibilityScreen(this, this.minecraft.gameSettings)), new TranslationTextComponent("narrator.button.accessibility")));
            this.minecraft.setConnectedToRealms(false);

            if (this.minecraft.gameSettings.realmsNotifications && !this.hasCheckedForRealmsNotification) {
                RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
                this.realmsNotification = realmsbridgescreen.func_239555_b_(this);
                this.hasCheckedForRealmsNotification = true;
            }

            if (this.areRealmsNotificationsEnabled()) {
                this.realmsNotification.init(this.minecraft, this.width, this.height);
            }

            return;
        }

        int buttonWidth = 140;
        int buttonHeight = 25;
        int offset = buttonHeight + 5;
        int centerY = mw.scaledHeight() / 2 - 50;

        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY, buttonWidth, buttonHeight, new StringTextComponent("Singleplayer"), p_onPress_1_ -> mc.displayGuiScreen(new WorldSelectionScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset, buttonWidth, buttonHeight, new StringTextComponent("Multiplayer"), p_onPress_1_ -> mc.displayGuiScreen(new MultiplayerScreen(this))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 2, buttonWidth, buttonHeight, new StringTextComponent("Alt Manager"), p_onPress_1_ -> mc.displayGuiScreen(Manager.ALT)));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 3, buttonWidth, buttonHeight, new StringTextComponent("Settings"), p_onPress_1_ -> mc.displayGuiScreen(new OptionsScreen(this, this.minecraft.gameSettings))));
        this.addButton(new CustomButton((mw.scaledWidth() - buttonWidth) / 2, centerY + offset * 4, buttonWidth, buttonHeight, new StringTextComponent("Exit"), p_onPress_1_ -> mc.shutdownMinecraftApplet()));
    }

    private boolean areRealmsNotificationsEnabled() {
        return this.minecraft.gameSettings.realmsNotifications && this.realmsNotification != null;
    }

    private void addSingleplayerMultiplayerButtons(int yIn, int rowHeightIn) {
        this.addButton(new Button(this.width / 2 - 100, yIn, 200, 20, new TranslationTextComponent("menu.singleplayer"), (p_lambda$addSingleplayerMultiplayerButtons$4_1_) -> this.minecraft.displayGuiScreen(new WorldSelectionScreen(this))));
        boolean flag = this.minecraft.isMultiplayerEnabled();
        Button.ITooltip button$itooltip = flag ? Button.field_238486_s_ : (p_lambda$addSingleplayerMultiplayerButtons$5_1_, p_lambda$addSingleplayerMultiplayerButtons$5_2_, p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_) ->
        {
            if (!p_lambda$addSingleplayerMultiplayerButtons$5_1_.active) {
                this.renderTooltip(p_lambda$addSingleplayerMultiplayerButtons$5_2_, this.minecraft.fontRenderer.trimStringToWidth(new TranslationTextComponent("title.multiplayer.disabled"), Math.max(this.width / 2 - 43, 170)), p_lambda$addSingleplayerMultiplayerButtons$5_3_, p_lambda$addSingleplayerMultiplayerButtons$5_4_);
            }
        };
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 1, 200, 20, new TranslationTextComponent("menu.multiplayer"), (p_lambda$addSingleplayerMultiplayerButtons$6_1_) ->
        {
            Screen screen = this.minecraft.gameSettings.skipMultiplayerWarning ? new MultiplayerScreen(this) : new MultiplayerWarningScreen(this);
            this.minecraft.displayGuiScreen(screen);
        }, button$itooltip)).active = flag;
        this.addButton(new Button(this.width / 2 - 100, yIn + rowHeightIn * 2, 200, 20, new TranslationTextComponent("menu.online"), (p_lambda$addSingleplayerMultiplayerButtons$7_1_) -> this.switchToRealms(), button$itooltip)).active = flag;
        if (Reflector.ModListScreen_Constructor.exists() && this.buttons.size() > 0) {
            Widget widget = this.buttons.get(this.buttons.size() - 1);
            widget.x = this.width / 2 + 2;
            widget.setWidth(98);
        }
    }

    private void switchToRealms() {
        RealmsBridgeScreen realmsbridgescreen = new RealmsBridgeScreen();
        realmsbridgescreen.func_231394_a_(this);
    }

    public MainMenuScreen(boolean fadeIn) {
        super(new TranslationTextComponent("narrator.screen.title"));
        this.showFadeInAnimation = fadeIn;
        this.showTitleWronglySpelled = (double) (new Random()).nextFloat() < 1.0E-4D;
    }

    public void tick() {
        if (this.areRealmsNotificationsEnabled()) {
            this.realmsNotification.tick();
        }
    }

    public static CompletableFuture<Void> loadAsync(TextureManager texMngr, Executor backgroundExecutor) {
        return CompletableFuture.allOf(texMngr.loadAsync(MINECRAFT_TITLE_TEXTURES, backgroundExecutor), texMngr.loadAsync(MINECRAFT_TITLE_EDITION, backgroundExecutor), texMngr.loadAsync(PANORAMA_OVERLAY_TEXTURES, backgroundExecutor), PANORAMA_RESOURCES.loadAsync(texMngr, backgroundExecutor));
    }

    public boolean isPauseScreen() {
        return false;
    }

    public boolean shouldCloseOnEsc() {
        return false;

    }



    private final BetterText info = new BetterText(List.of(" ", "Welcome, " + ClientUtils.me.getName()), 4500);
    private final BetterText like = new BetterText(List.of(" ", "Сделано с любовью, Acidka!"), 4500);
    private final Animation hover1 = new DecelerateAnimation(150, 3);
    private final Animation hover2 = new DecelerateAnimation(150, 3);
    private final Animation hover3 = new DecelerateAnimation(150, 3);

    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        if (ClientUtils.unHook) {
            if (this.firstRenderTime == 0L && this.showFadeInAnimation) {
                this.firstRenderTime = Util.milliTime();
                }



            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            RenderSystem.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int j = this.width / 2 - 137;
            this.minecraft.getTextureManager().bindTexture(PANORAMA_OVERLAY_TEXTURES);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
            RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.showFadeInAnimation ? (float) MathHelper.ceil(MathHelper.clamp(f, 0.0F, 1.0F)) : 1.0F);
            blit(matrixStack, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128);
            float f1 = this.showFadeInAnimation ? MathHelper.clamp(f - 1.0F, 0.0F, 1.0F) : 1.0F;
            int l = MathHelper.ceil(f1 * 255.0F) << 24;

            if ((l & -67108864) != 0) {
                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_TEXTURES);
                RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);

                if (this.showTitleWronglySpelled) {
                    this.blitBlackOutline(j, 30, (p_lambda$render$10_2_, p_lambda$render$10_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$10_2_ + 0, p_lambda$render$10_3_, 0, 0, 99, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99, p_lambda$render$10_3_, 129, 0, 27, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26, p_lambda$render$10_3_, 126, 0, 3, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 99 + 26 + 3, p_lambda$render$10_3_, 99, 0, 26, 44);
                        this.blit(matrixStack, p_lambda$render$10_2_ + 155, p_lambda$render$10_3_, 0, 45, 155, 44);
                    });
                } else {
                    this.blitBlackOutline(j, 30, (p_lambda$render$11_2_, p_lambda$render$11_3_) ->
                    {
                        this.blit(matrixStack, p_lambda$render$11_2_ + 0, p_lambda$render$11_3_, 0, 0, 155, 44);
                        this.blit(matrixStack, p_lambda$render$11_2_ + 155, p_lambda$render$11_3_, 0, 45, 155, 44);
                    });
                }

                this.minecraft.getTextureManager().bindTexture(MINECRAFT_TITLE_EDITION);
                blit(matrixStack, j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);

                if (Reflector.ForgeHooksClient_renderMainMenu.exists()) {
                    Reflector.callVoid(Reflector.ForgeHooksClient_renderMainMenu, this, matrixStack, this.font, this.width, this.height, l);
                }

                if (this.splashText != null) {
                    RenderSystem.pushMatrix();
                    RenderSystem.translatef((float) (this.width / 2 + 90), 70.0F, 0.0F);
                    RenderSystem.rotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                    float f2 = 1.8F - MathHelper.abs(MathHelper.sin((float) (Util.milliTime() % 1000L) / 1000.0F * ((float) Math.PI * 2F)) * 0.1F);
                    f2 = f2 * 100.0F / (float) (this.font.getStringWidth(this.splashText) + 32);
                    RenderSystem.scalef(f2, f2, f2);
                    drawCenteredString(matrixStack, this.font, this.splashText, 0, -8, 16776960 | l);
                    RenderSystem.popMatrix();
                }

                String s = "Minecraft " + SharedConstants.getVersion().getName();

                if (this.minecraft.isDemo()) {
                    s = s + " Demo";
                } else {
                    s = s + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType());
                }

                if (this.minecraft.isModdedClient()) {
                    s = s + I18n.format("menu.modded");
                }

                if (Reflector.BrandingControl.exists()) {
                    if (Reflector.BrandingControl_forEachLine.exists()) {
                        BiConsumer<Integer, String> biconsumer = (p_lambda$render$12_3_, p_lambda$render$12_4_) -> drawString(matrixStack, this.font, p_lambda$render$12_4_, 2, this.height - (10 + p_lambda$render$12_3_ * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachLine, true, true, biconsumer);
                    }

                    if (Reflector.BrandingControl_forEachAboveCopyrightLine.exists()) {
                        BiConsumer<Integer, String> biconsumer1 = (p_lambda$render$13_3_, p_lambda$render$13_4_) -> drawString(matrixStack, this.font, p_lambda$render$13_4_, this.width - this.font.getStringWidth(p_lambda$render$13_4_), this.height - (10 + (p_lambda$render$13_3_ + 1) * (9 + 1)), 16777215 | l);
                        Reflector.call(Reflector.BrandingControl_forEachAboveCopyrightLine, biconsumer1);
                    }
                } else {
                    drawString(matrixStack, this.font, s, 2, this.height - 10, 16777215 | l);
                }

                drawString(matrixStack, this.font, "Copyright Mojang AB. Do not distribute!", this.widthCopyrightRest, this.height - 10, 16777215 | l);

                if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) {
                    fill(matrixStack, this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, 16777215 | l);
                }

                for (Widget widget : this.buttons) {
                    widget.setAlpha(f1);
                }

                if (this.areRealmsNotificationsEnabled() && f1 >= 1.0F) {
                    this.realmsNotification.render(matrixStack, mouseX, mouseY, partialTicks);
                }

                super.render(matrixStack, mouseX, mouseY, partialTicks);
            }

            return;
        }

        Vec2i fixed = ScaleMath.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/i.png"), 0, 0, scaledWidth, scaledHeight, -1);

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f, centerY + 110, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered3 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f + 415, centerY + 220, 16, 16);
        hover3.setDirection(hovered3 ? Direction.FORWARDS : Direction.BACKWARDS);

        GaussianBlur.applyBlur(() -> RenderUtils.Render2D.drawRound(centerX - 277 / 2f, centerY - 275.5f / 2f, 277, 275.5f, 10, -1), 40, 2);
        RenderUtils.Render2D.drawRound(centerX - 262 / 2f, centerY - 235 / 2f, 262, 245,25, ColorUtils.rgba(69, 23, 255,65));
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/vk.png"), centerX + 444, (float) (centerY + 220 - hover1.getOutput()), 16, 16, -1);
        RenderUtils.Render2D.drawImage(new ResourceLocation("wissend/images/mainmenu/discord.png"), centerX - 16 / 2f + 415, (float) (centerY + 220 - hover3.getOutput()), 16, 16, -1);

        Fonts.fontBold[32].drawCenteredString(matrixStack, info.output, centerX, centerY - 90, -1);
        Fonts.font[24].drawCenteredString(matrixStack, like.output, centerX-390, centerY+240, -1);
        RenderUtils.Render2D.drawRound(centerX + 390, centerY  +204, 90, 45,20, ColorUtils.rgba(69, 23, 255,65));

        renderSnow(matrixStack);
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        mc.gameRenderer.setupOverlayRendering();
    }

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

        int scaledWidth = mw.scaledWidth();
        int scaledHeight = mw.scaledHeight();

        float centerX = scaledWidth / 2f;
        float centerY = scaledHeight / 2f;

        boolean hovered1 = RenderUtils.isInRegion(mouseX, mouseY, centerX + 444, centerY + 220, 16, 16);
        hover1.setDirection(hovered1 ? Direction.FORWARDS : Direction.BACKWARDS);

        boolean hovered2 = RenderUtils.isInRegion(mouseX, mouseY, centerX - 16 / 2f +415, centerY + 220, 16, 16);
        hover2.setDirection(hovered2 ? Direction.FORWARDS : Direction.BACKWARDS);

        if (hovered1) {
            Util.getOSType().openURI("https://vk.com/wissendclient");
        } else if (hovered2) {
            Util.getOSType().openURI("https://discord.gg/wissend");
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    public void onClose() {
        if (this.realmsNotification != null) {
            this.realmsNotification.onClose();
        }
    }
    class snowflake {
        public float x;
        public float y;
        public float size;
        public float alpha;
    }

    int snowflake_count = 59;

    public List<snowflake> sfs = new ArrayList<snowflake>();

    boolean created = false;
    private final TimerUtils bolvan = new TimerUtils();

    protected void renderSnowflake(MatrixStack matrixStack, snowflake snowflake) {
        Fonts.font[new Random().nextInt(15, 22)].drawString(matrixStack, "?", snowflake.x, snowflake.y, ColorUtils.rgba(255, 255, 255, snowflake.alpha));
    }

    protected void createSnowflakeList() {
        if(!created) {
            for (int i = 1; i <= snowflake_count; i++) {
                snowflake s = new snowflake();
                s.x = new Random().nextInt(140, 1900);
                s.y = new Random().nextInt(-192, 33);
                s.alpha = new Random().nextInt(60, 255);
                s.size = 1;
                sfs.add(s);
                if (i == snowflake_count) { created = true; }
            }
        }
    }

    int f = 1;

    protected void createSnowflakes(MatrixStack matrixStack) {
        if(!created) { return; }

        long l = 10;
        if(bolvan.hasTimeElapsed(l)) {
            for (int i = 1; i <= sfs.size()-1; i++) {
                sfs.get(i).x = sfs.get(i).x - 1;
                sfs.get(i).y = sfs.get(i).y + 1;
                if(i <= sfs.size()-1) { bolvan.reset(); }
            }
        }

        for(int i = 0; i <= sfs.size()-1; i++){
            renderSnowflake(matrixStack, sfs.get(i));
        }

        if (sfs.get(sfs.size()-8).y > 60*f) {
            created = false;
            f++;
        }
        if(sfs.get(sfs.size()-8).y > 1050){
            for (int i = 1; i <= snowflake_count; i++) { sfs.remove(i); f-=0.5; }
        }
    }

    public void renderSnow(MatrixStack matrixStack) {
        createSnowflakeList();
        createSnowflakes(matrixStack);
    }

    public static class CustomButton extends AbstractButton {

        public static final Button.ITooltip field_238486_s_ = (button, matrixStack, mouseX, mouseY) -> {};
        protected final Button.IPressable onPress;
        protected final Button.ITooltip onTooltip;


        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction) {
            this(x, y, width, height, title, pressedAction, field_238486_s_);
        }

        public CustomButton(int x, int y, int width, int height, ITextComponent title, Button.IPressable pressedAction, Button.ITooltip onTooltip) {
            super(x, y, width, height, title);
            this.onPress = pressedAction;
            this.onTooltip = onTooltip;
        }

        public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
            RenderUtils.Render2D.drawRound(x, y, width, height, 6, ColorUtils.rgba(69, 23, 255,75));
            Fonts.font[22].drawCenteredString(matrixStack, this.getMessage().getString(), x + width / 2f, y + height / 2f - Fonts.font[22].getFontHeight() / 2f + 1.5f, -1);
        }


        public void onPress() {
            this.onPress.onPress(this);
        }
// NOT SELFCODE ONLY PASTE
    }
}
Какое же дерьмо,и еще нам предьявлял за 1.21 базу хахааххвхв :roflanEbalo:

Если норм: напоминает nursultan 3.33 (фон и кнопки были так же сделаны) + текст который у тебя меняет текст,не очень,так и слева снизу «с любовью…» дерьмо как по мне
 
Назад
Сверху Снизу