[1.11.x] Modification de l'overlay minecraft
#1
Question 
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  Clin d'oeil 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 code : 
Code :
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 : 

[Image: 1515700273-capture.png]

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
Répondre
#2
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
Répondre
#3
(13-01-2018, 04:45)SpyMan a écrit : 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.
Répondre
#4
(13-01-2018, 04:45)SpyMan a écrit : 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é.
Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

[Image: btn_donate_SM.gif]

Les dons serviront à m'acheter les composants pour monter un ordinateur.

Je suis un membre apprécié et joueur, j'ai déjà obtenu 15 points de réputation.
Répondre
#5
(13-01-2018, 10:53)Superloup10 a écrit : 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. Clin d'oeil
Et si tu me crois pas, tu peux tester.
Répondre
#6
[HS]Tu es bientôt à 1024 messages[/HS]
Exact, je me suis un peu trop enflammé.
Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

[Image: btn_donate_SM.gif]

Les dons serviront à m'acheter les composants pour monter un ordinateur.

Je suis un membre apprécié et joueur, j'ai déjà obtenu 15 points de réputation.
Répondre
#7
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
Répondre
#8
Oui, c'est possible, il te suffit juste de cancel l'affichage de la barre de faim et de la remplacer par une autre
Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

[Image: btn_donate_SM.gif]

Les dons serviront à m'acheter les composants pour monter un ordinateur.

Je suis un membre apprécié et joueur, j'ai déjà obtenu 15 points de réputation.
Répondre
#9
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  Surpris
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)