Вопрос Как создавать анимированный (gif) backmenu - minecraft 1.16.5

Начинающий
Статус
Оффлайн
Регистрация
18 Дек 2022
Сообщения
41
Реакции[?]
1
Поинты[?]
0
baza - expensive

Как создавать анимированный (gif) backmenu (MainMenuScreen) - minecraft 1.16.5

как отрендерить саму gif, или можно её разбить на кадры и отрендерить кадры?
p.s - прочекал много видосов по java понимаю что как, но не имею знаний в minecraft api(топиш какой метод(его значеие) класс, и понятия кода внутри этого класса и тд).
очень интересно как работает рендеринг и как овладеть преимуществами написания render coding

код:

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

            float f = this.showFadeInAnimation ? (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F : 1.0F;
            GlStateManager.disableDepthTest();
            fill(matrixStack, 0, 0, this.width, this.height, -1);
            this.panorama.render(partialTicks, MathHelper.clamp(f, 0.0F, 1.0F));
            int i = 274;
            int j = this.width / 2 - 137;
            int k = 30;
            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;
        }

        float widthPerc = (float) mc.getMainWindow().scaledWidth() / 960;
        float heigthPerc = (float) mc.getMainWindow().scaledHeight() / 505;
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtil.Render2D.drawImage(new ResourceLocation("pizda/images/backmenu.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);


        super.render(matrixStack, mouseX, mouseY, partialTicks);
        RenderUtil.Render2D.drawImage(new ResourceLocation("pizda/images/expensive.png"), (mc.getMainWindow().scaledWidth() / 2f) - (317.5f / 2) * widthPerc, mc.getMainWindow().scaledHeight() / 2f - 125,317.5f * widthPerc,50.5f * heigthPerc, -1);

        Fonts.msLight[11].drawString(matrixStack,"all rights reserved 2024.",mc.getMainWindow().scaledWidth() / 2f - Fonts.msLight[11].getWidth("all rights reserved 2024.") / 2f, (mc.getMainWindow().scaledHeight()) / 1.1f, ColorUtil.rgba(200,200,200,100));
        BloomHelper.draw(15, 2, false);
        mc.gameRenderer.setupOverlayRendering();

    }
вот это как я понимаю основа которая рендерит чисто картинку - image:


Java:
float widthPerc = (float) mc.getMainWindow().scaledWidth() / 960;
        float heigthPerc = (float) mc.getMainWindow().scaledHeight() / 505;
        Vec2i fixed = ScaleMath.getMouse((int) mouseX, (int) mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        mc.gameRenderer.setupOverlayRendering(2);
        RenderUtil.Render2D.drawImage(new ResourceLocation("pizda/images/backmenu.png"), 0, 0, mc.getMainWindow().scaledWidth(), mc.getMainWindow().scaledHeight(), -1);


        super.render(matrixStack, mouseX, mouseY, partialTicks);
        RenderUtil.Render2D.drawImage(new ResourceLocation("pizda/images/expensive.png"), (mc.getMainWindow().scaledWidth() / 2f) - (317.5f / 2) * widthPerc, mc.getMainWindow().scaledHeight() / 2f - 125,317.5f * widthPerc,50.5f * heigthPerc, -1);

        Fonts.msLight[11].drawString(matrixStack,"all rights reserved 2024.",mc.getMainWindow().scaledWidth() / 2f - Fonts.msLight[11].getWidth("all rights reserved 2024.") / 2f, (mc.getMainWindow().scaledHeight()) / 1.1f, ColorUtil.rgba(200,200,200,100));
        BloomHelper.draw(15, 2, false);
        mc.gameRenderer.setupOverlayRendering();

    }
как отрендерить gif?
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
18 Июн 2022
Сообщения
275
Реакции[?]
12
Поинты[?]
3K
Ты вопрос задать хотел или исходник выложить? Если исходник то ты ошибся с разделом
 
Начинающий
Статус
Оффлайн
Регистрация
18 Дек 2022
Сообщения
41
Реакции[?]
1
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
20 Дек 2023
Сообщения
33
Реакции[?]
0
Поинты[?]
0
если я тебя правильно понял, то ты хочешь накинуть гифку на бэкграунд маинменю, я с рендером вообще не умею работать от слова совсем, но когда только начинал разбираться чекал сурсы многих паст, и там было дохуище паст которые выводили именно гифку на бэкграунд, можешь полазить на юг и найти сурсы, в которых такое будет, и посмотреть как что работает, и сделать себе
 
Сверху Снизу