[1.7.10] Créer une deuxième Barre D'Armure



  • Bonjour,
    Je vous contact aujourd'hui, parce que je ne sais pas comment ajouter une seconde Barre d'Armure (au-dessus de la première). elle permettrait d'afficher les points d'Armures de mes armures moddées.
    Si vous connaissez Paladium, c'est le même principe.

    Merci d'avance de votre aide et de votre lecture !

    FayDown,



  • Si tu veux que tes armures moddées soient plus puissante que le diamant et que ce soit géré correctement je te conseille d'utiliser l'interface ISpecialArmor. Celle-ci te permet de créer des armures plus puissantes que le diamant, et d'avoir un gestion très précise des dégâts et durabilité des armures.
    Cela t'évite de devoir t’embêter à créer des barres d'armures, car je pense que c'est plus compliqué.



  • @blixow14 Donc avec ISpecialArmor, une deuxième barre de points d'armures apparaitra ?


  • Administrateurs

    Bonsoir,

    Non il n'y a pas de deuxième ligne d'armure nativement.
    Il faut la dessiner soit même avec l'évent RenderGameOverlayEvent.



  • This post is deleted!


  • @robin4002 Salut, j'ai tester comme de faire sa :

    if(event.type == RenderGameOverlayEvent.ElementType.ARMOR)
            {
                Minecraft mc = Minecraft.getMinecraft();
                event.setCanceled(true);
                
                float ard = mc.thePlayer.getTotalArmorValue();
                String armore = EnumChatFormatting.AQUA + "Armure TEST" + EnumChatFormatting.BLUE + ard;
                this.drawString(mc.fontRenderer, armore, 230, 290, 16777215);
            }
    

    Et la barre de nourriture est devenue Bleu enfin regarde le résultat.
    Mais à la place du String armor j'aimerais ajouter la texture de la barre d'armure pour la rajouter
    D'ailleurs voici le résultat que j'ai réussi à obtenir 🙂
    Résultat


  • Administrateurs

    Il faut réinitialiser la couleur après le draw avec un GL11.glColor3f(1.0F, 1.0F, 1.0F); sinon la dernière couleur utilisée reste.



  • @robin4002 Ok, mais je ne comprends pas où écrir ce que tu m'as dis de rajouter, et comment je peux faire pour récupérer la texture de l'armure pour rajouter ma deuxième Barre ? Ou alors comment ajouter une texture nouvelle (exemple : Bouclier, qui se remplit au fur et à mesure que l'armure est puissante) mais je préfère quand meme la première idée 🙂

                this.drawString(mc.fontRenderer, armore, 230, 290, 16777215);
                GL11.glColor3f(1.0F, 1.0F, 1.0F); //Ici ?
    
    

  • Administrateurs

    Oui ici pour le color3f

    Pour ajouter une texture il faut bind la ressource location contenant la texture et utiliser les fonctions de draw de la classe gui.



  • @robin4002 J'ai pas compris comment il fallait faire ...
    Tu as surement bien expliqué mais je débute donc j'ai pas compris ce que tu as dis, tu pourrais-m'expliqué ?


  • Administrateurs

    Je n'ai plus de workspace 1.7 sur mon pc depuis bien longtemps et je ne connais plus par coeur le nom de fonction donc je ne vais pas pouvoir te donner de code d'exemple.

    Regardes dans la classe GuiIngame de Minecraft, localises où le rendu de l'armure est fait, c'est le même principe que tu dois réaliser.



  • @robin4002 Ok mais je trouve pas le nom que cela porte, il me semble que c'est actionsbar mais je suis pas sûr.

    if (!this.mc.playerController.enableEverythingIsScrewedUpMode())
            {
                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                this.mc.getTextureManager().bindTexture(widgetsTexPath);
                InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory;
                this.zLevel = -90.0F;
                this.drawTexturedModalRect(k / 2 - 91, l - 22, 0, 0, 182, 22);
                this.drawTexturedModalRect(k / 2 - 91 - 1 + inventoryplayer.currentItem * 20, l - 22 - 1, 0, 22, 24, 22);
                this.mc.getTextureManager().bindTexture(icons);
                GL11.glEnable(GL11.GL_BLEND);
                OpenGlHelper.glBlendFunc(775, 769, 1, 0);
                this.drawTexturedModalRect(k / 2 - 7, l / 2 - 7, 0, 0, 16, 16);
                OpenGlHelper.glBlendFunc(770, 771, 1, 0);
                this.mc.mcProfiler.startSection("bossHealth");
                this.renderBossHealth();
                this.mc.mcProfiler.endSection();
    
                if (this.mc.playerController.shouldDrawHUD())
                {
                    this.func_110327_a(k, l);
                }
    
                this.mc.mcProfiler.startSection("actionBar");
                GL11.glEnable(GL12.GL_RESCALE_NORMAL);
                RenderHelper.enableGUIStandardItemLighting();
    
                for (i1 = 0; i1 < 9; ++i1)
                {
                    j1 = k / 2 - 90 + i1 * 20 + 2;
                    k1 = l - 16 - 3;
                    this.renderInventorySlot(i1, j1, k1, p_73830_1_);
                }
    
                RenderHelper.disableStandardItemLighting();
                GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                this.mc.mcProfiler.endSection();
                GL11.glDisable(GL11.GL_BLEND);
            }
    
            int l4;
    
            if (this.mc.thePlayer.getSleepTimer() > 0)
            {
                this.mc.mcProfiler.startSection("sleep");
                GL11.glDisable(GL11.GL_DEPTH_TEST);
                GL11.glDisable(GL11.GL_ALPHA_TEST);
                l4 = this.mc.thePlayer.getSleepTimer();
                float f2 = (float)l4 / 100.0F;
    
                if (f2 > 1.0F)
                {
                    f2 = 1.0F - (float)(l4 - 100) / 10.0F;
                }
    
                j1 = (int)(220.0F * f2) << 24 | 1052704;
                drawRect(0, 0, k, l, j1);
                GL11.glEnable(GL11.GL_ALPHA_TEST);
                GL11.glEnable(GL11.GL_DEPTH_TEST);
                this.mc.mcProfiler.endSection();
            }
    
            l4 = 16777215;
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            i1 = k / 2 - 91;
            int l1;
            int i2;
            int j2;
            int k2;
            float f3;
            short short1;
    
            if (this.mc.thePlayer.isRidingHorse())
            {
                this.mc.mcProfiler.startSection("jumpBar");
                this.mc.getTextureManager().bindTexture(Gui.icons);
                f3 = this.mc.thePlayer.getHorseJumpPower();
                short1 = 182;
                l1 = (int)(f3 * (float)(short1 + 1));
                i2 = l - 32 + 3;
                this.drawTexturedModalRect(i1, i2, 0, 84, short1, 5);
    
                if (l1 > 0)
                {
                    this.drawTexturedModalRect(i1, i2, 0, 89, l1, 5);
                }
    
                this.mc.mcProfiler.endSection();
            }
            else if (this.mc.playerController.gameIsSurvivalOrAdventure())
            {
                this.mc.mcProfiler.startSection("expBar");
                this.mc.getTextureManager().bindTexture(Gui.icons);
                j1 = this.mc.thePlayer.xpBarCap();
    
                if (j1 > 0)
                {
                    short1 = 182;
                    l1 = (int)(this.mc.thePlayer.experience * (float)(short1 + 1));
                    i2 = l - 32 + 3;
                    this.drawTexturedModalRect(i1, i2, 0, 64, short1, 5);
    
                    if (l1 > 0)
                    {
                        this.drawTexturedModalRect(i1, i2, 0, 69, l1, 5);
                    }
                }
    
                this.mc.mcProfiler.endSection();
    
                if (this.mc.thePlayer.experienceLevel > 0)
                {
                    this.mc.mcProfiler.startSection("expLevel");
                    boolean flag2 = false;
                    l1 = flag2 ? 16777215 : 8453920;
                    String s3 = "" + this.mc.thePlayer.experienceLevel;
                    j2 = (k - fontrenderer.getStringWidth(s3)) / 2;
                    k2 = l - 31 - 4;
                    boolean flag1 = false;
                    fontrenderer.drawString(s3, j2 + 1, k2, 0);
                    fontrenderer.drawString(s3, j2 - 1, k2, 0);
                    fontrenderer.drawString(s3, j2, k2 + 1, 0);
                    fontrenderer.drawString(s3, j2, k2 - 1, 0);
                    fontrenderer.drawString(s3, j2, k2, l1);
                    this.mc.mcProfiler.endSection();
                }
            }
    
            String s2;
    
            if (this.mc.gameSettings.heldItemTooltips)
            {
                this.mc.mcProfiler.startSection("toolHighlight");
    
                if (this.remainingHighlightTicks > 0 && this.highlightingItemStack != null)
                {
                    s2 = this.highlightingItemStack.getDisplayName();
                    k1 = (k - fontrenderer.getStringWidth(s2)) / 2;
                    l1 = l - 59;
    
                    if (!this.mc.playerController.shouldDrawHUD())
                    {
                        l1 += 14;
                    }
    
                    i2 = (int)((float)this.remainingHighlightTicks * 256.0F / 10.0F);
    
                    if (i2 > 255)
                    {
                        i2 = 255;
                    }
    
                    if (i2 > 0)
                    {
                        GL11.glPushMatrix();
                        GL11.glEnable(GL11.GL_BLEND);
                        OpenGlHelper.glBlendFunc(770, 771, 1, 0);
                        fontrenderer.drawStringWithShadow(s2, k1, l1, 16777215 + (i2 << 24));
                        GL11.glDisable(GL11.GL_BLEND);
                        GL11.glPopMatrix();
                    }
                }
    
                this.mc.mcProfiler.endSection();
            }
    


  • @robin4002 Dailleurs il faut que je lui donne la priorité dans le proxy client normalement non ?


  • Administrateurs

    Je n'ai pas l'impression que l'armure soit dans la partie que tu as envoyée.
    On voit par contre la barre d'xp, la barre des items et le rendu de la vie des bosses.

    Je ne vois pas de quelle priorité tu parles.


Log in to reply