Modification de l'overlay minecraft



  • Bonjour, j'essaye depuis hier de trouver une solution au problème suivant: j'ai un code de modification d'overlay que ne marche que pour la santé que j'ai pris sur ce site merci  😉 et donc je voudrais l'adapté pour la nourriture.

    ***Expliquation ***:
    Le mod est censée transformer la barre de vie ainsi que de nourriture en image qui serons tout disposée a droite de l’écran. Voila ce que le code doit faire.

    Le c****ode :

    package fr.github.koadev;
    
    import java.awt.Color;
    
    import org.lwjgl.opengl.GL11;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.Gui;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    import net.minecraftforge.fml.relauncher.Side;
    
    @Mod(name = References.NAME, modid = References.MODID, version = References.VERSION)
    
    @EventBusSubscriber(modid = References.MODID, value = {Side.CLIENT})
    public class GameOverlayHandler
    {
       private static final ResourceLocation emptyLife = new ResourceLocation(References.MODID, "textures/gui/emptylife.png");
       private static final ResourceLocation fullLife = new ResourceLocation(References.MODID, "textures/gui/fulllife.png");
    
       public static final Minecraft MC = Minecraft.getMinecraft();
    
       @SubscribeEvent
       public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event)
       {
           if(event.getType().equals(ElementType.HEALTH))
               event.setCanceled(true);
       }
    
       @SubscribeEvent
       public static void renderGameOverlayPost(RenderGameOverlayEvent.Post event)
       {
           if(event.getType().equals(ElementType.ALL))
           {
               GL11.glColor4f(1, 1, 1, 1);
               GL11.glEnable(GL11.GL_BLEND);
               GL11.glBlendFunc(770, 771);
               int width = event.getResolution().getScaledWidth();
    
               if(!MC.player.capabilities.disableDamage)
                   drawHealth(event.getResolution(), MC.player);
    
               String s = MC.getConnection().getPlayerInfoMap().size() + "/" + MC.getConnection().currentServerMaxPlayers + " joueurs";
               Gui.drawRect(width - 5 - MC.fontRendererObj.getStringWidth(s), 2, width - 2, 4 + MC.fontRendererObj.FONT_HEIGHT, Integer.MIN_VALUE);
               MC.fontRendererObj.drawString(s, width - 3 - MC.fontRendererObj.getStringWidth(s), 4, Color.WHITE.getRGB());
           }
       }
    
       private static void drawHealth(ScaledResolution res, EntityPlayer player)
       {
           MC.getTextureManager().bindTexture(emptyLife);
           Gui.drawScaledCustomSizeModalRect(res.getScaledWidth() - 70, res.getScaledHeight() - 76, 0, 0, 64, 64, 64, 64, 64, 64);
    
           int percent = (int)(player.getHealth() * 64 / player.getMaxHealth());
           if(percent > 0)
           {
               MC.getTextureManager().bindTexture(fullLife);
               Gui.drawScaledCustomSizeModalRect(res.getScaledWidth() - 70, res.getScaledHeight() - 76 + (64 - percent), 0, 64 - percent, 64, percent, 64, percent, 64, 64);
           }
       }
    }
    

    Une petit image :

    Mon problemme : Je voudrais faire la même chose pour la nourriture mais je ne sait pas comment faire donc si vous pourriez m'aider je vous en re-merci.

    Cordialement KoaDev



  • if(event.getType().equals(ElementType.ALL))

    ta juste a changer le "ALL" en autre chose ou je sais quoi regarde ce que ton ide te propose
    cela defini le quel element tu va rendre a la place de celui de mc

    mettre ca en static –> public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event) c'est USELESS



  • @'SpyMan':

    if(event.getType().equals(ElementType.ALL))

    ta juste a changer le "ALL" en autre chose ou je sais quoi regarde ce que ton ide te propose
    cela defini le quel element tu va rendre a la place de celui de mc

    mettre ca en static –> public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event) c'est USELESS

    Oui alors j'ai déjà fait sa pour le déactiver la bar de nourriture mais moi je voudrais redessiner et déplacer la bar de faim comme j'ai fait pour la vie.


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    @SpyMan:

    mettre ca en static –> public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event) c'est USELESS

    Non, ce n'est pas useless, sans le static, il va y avoir un crash.
    Et si tu ne me crois pas, soit tu relis le code, soit tu devrais faire attention à l'actualité.


  • Moddeurs confirmés Rédacteurs

    @Superloup10:

    Non, ce n'est pas useless, sans le static, il va y avoir un crash.

    Non, ça ne va pas crash, ça va seulement plus fonctionner car forge ne va pas "enregistrer" la méthode comme une méthode d'event à appeler. 😉
    Et si tu me crois pas, tu peux tester.


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    [HS]Tu es bientôt à 1024 messages[/HS]
    Exact, je me suis un peu trop enflammé.



  • Juste Les gars/filles est-ce-qu c'est possible de supprimer la bar de faim et de la remplacer en image comme j'ai fait pour la vie ?
    et si oui c'est possible vous pourriez me dire comment faire.

    Cordialement


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    Oui, c'est possible, il te suffit juste de cancel l'affichage de la barre de faim et de la remplacer par une autre



  • SuperLoup je le savait sa mais c'est le code pour pouvoir afficher l'image de la nourriture comme l'image de la vie et que sa fasse en sorte que sa descende  😮


Log in to reply