Afficher un texte a l'écran quand je tient un item spécial



  • Bonjour,
    Je me demande depuis pas mal de temps si il est possible d'afficher du texte quand je tient un item spécial,
    comme je cherche a coder un item qui fonctionne avec de l'énergie électrique , il est important de savoir combien il lui reste de batterie !

    J'ai créé un overlay avec Mcreator(oui je sais c'est pas bien d'utiliser mcreator 😄 mais bon) , le code est totalement faux et en plus l' "overlay" s'affiche tout le temps  😞

    J'attends une réponse avec impatience !  😄
    0_1536507685456_McOverlayHelp.png

    Code Mcreator(tellement horrible que mes yeux me piquent  😄 ) :

    package mod.mcreator;
    
    import net.minecraftforge.event.terraingen.PopulateChunkEvent;
    import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    
    import net.minecraft.world.World;
    import net.minecraft.server.MinecraftServer;
    import net.minecraft.item.ItemStack;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.client.Minecraft;
    
    import java.util.Random;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.eventhandler.EventPriority;
    import cpw.mods.fml.common.event.FMLServerStartingEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.FMLCommonHandler;
    
    //import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.*;
    
    //import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.*;
    
    public class mcreator_testeOverlay {
    
    	public static class GUIRenderEventClass {
    		@SubscribeEvent(priority = EventPriority.NORMAL)
    		public void eventHandler(RenderGameOverlayEvent event) {
    
    			int posX = (event.resolution.getScaledWidth()) / 2;
    			int posY = (event.resolution.getScaledHeight()) / 2;
    
    			EntityPlayer entity = Minecraft.getMinecraft().thePlayer;
    			int i = (int) entity.posX;
    			int j = (int) entity.posY;
    			int k = (int) entity.posZ;
    			MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
    			World world = server.worldServers[0];
    
    			if (true) {
    
    				Minecraft.getMinecraft().fontRenderer.drawString("1000000 RF", posX + (-87), posY + (51), 0xffff00);
    
    			}
    
    		}
    	}
    
    	public mcreator_testeOverlay() {
    	}
    
    	public Object instance;
    
    	public void load() {
    		MinecraftForge.EVENT_BUS.register(new GUIRenderEventClass());
    	}
    
    	public void generateNether(World world, Random random, int chunkX, int chunkZ) {
    	}
    
    	public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
    	}
    
    	public int addFuel(ItemStack fuel) {
    		return 0;
    	}
    
    	public void serverLoad(FMLServerStartingEvent event) {
    	}
    
    	public void preInit(FMLPreInitializationEvent event) {
    	}
    
    	public void registerRenderers() {
    	}
    }
    


  • Afficher du texte à un endroit spécifique de l'hud, quand l'item est tenu en main, c'est bien ça ?
    Tu peux enregistrer l'event RenderGameOverlayEvent, et essayer quelque chose avec. Y'a déjà eu plusieurs topics dans le même genre sur le fofo, une petite recherche ne te fera pas de mal 😉


  • Administrateurs

    Salut,
    Gardes juste ça :

       @SubscribeEvent
       public void eventHandler(RenderGameOverlayEvent event)
       {
          int posX = (event.resolution.getScaledWidth()) / 2;
          int posY = (event.resolution.getScaledHeight()) / 2;
    
          EntityPlayer player = Minecraft.getMinecraft().thePlayer;
    
          if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem() == itemvoulu) {
    
             Minecraft.getMinecraft().fontRenderer.drawString("1000000 RF", posX + (-87), posY + (51), 0xffff00);
    
          }
    
       }
    }
    


  • Merci Beaucoup ,
    Je teste ça demain et je voit si sa fonctionne ou pas !



  • "player.getCurrentEquippedItem() == ItemMod.ElectroSword" Ca fonctionne pas  😞

       if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem() == ItemMod.ElectroSword)
    

  • Administrateurs

    Il y a une erreur où il se passe juste rien ?



  • player.getCurrentEquippedItem() == ItemMod.ElectroSword est souligné


  • Administrateurs

    et donc ça serait bien de donner l'erreur d'eclipse t'indique.



  • Incompatible operand types ItemStack and Item


  • Correcteurs

    Essaie
    player.getCurrentEquippedItem().getItem() == ItemMod.ElectroSword



  • Ca fonctionne ! Merci !



  • Alors tu peux indiquer que le sujet est résolu 😉


  • Administrateurs

    Il l'avait déjà fait.
    Plus besoin de mettre la balise maintenant, suffit de cliquer sur le bouton et le point rouge disparait.



  • Ah ok je savais que yavais plus la balise mais je pensais que quelque chose indiquait le fait que c'était résolu ^^ (et pas l'inverse quelque chose qui indique que c'est PAS résolu).
    Autant pour moi.


  • Administrateurs

    Le point rouge si non résolu, rien si on clique sur "marquer comme résolu" et point vert si on clique sur "marquer comme meilleur réponse" sur un post.
    Il doit avoir le bug dans le plugin pour le cas où ça devient rien, faudra que je modifie ça quand j'aurai plus de temps.