Masquer le pseudo au dessus de la tête



  • Bonjour !

    Voilà mon problème, et tout est dans le titre !

    Je cherche à masquer le pseudo au dessus de la tête des joueurs sans modifier le vanilla, il faut que je passe par une event je suppose mais lequel pour masquer le pseudo !

    Voilà si quelqu'un à la réponse ! Je prends !

    Merci de votre aide !

    -ZeAmateis-


  • Administrateurs

    Sais-tu as quel endroit le rendu du nom du joueur est fait ? Car j'ai cherché, je n'ai pas trouvé.



  • RenderLivingEntity dans RenderLabel un truc comme ça


    ICI:

    /**
    * Draws the debug or playername text above a living
    */
    protected void renderLivingLabel(EntityLivingBase par1EntityLivingBase, String par2Str, double par3, double par5, double par7, int par9)
    {
    


  • Tu as vu mon dernier message Robin ?


  • Administrateurs

    Non je ne l'avait pas vu, je viens de regarder.
    renderLivingLabel est appelé juste au dessus, dans la méthode func_96449_a. Qui est elle même appelé dans la fonction passSpecialRender.
    Et en fait, c'est la fonction passSpecialRender qui rend le pseudo.
    La bonne nouvelle, c'est que juste au début de la fonction passSpecialRender, il y a ça :

    if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Pre(par1EntityLivingBase, this))) return;
    

    Donc il suffit de cancel cette événement pour qu'il ne lise pas le code.

    Ce qui donne :

    package fr.minecraftforgefrance.nolabel;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraftforge.client.event.RenderLivingEvent;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.event.ForgeSubscribe;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    @Mod(modid = "nolabel", name = "No Label", version = "1.0.0")
    
    public class NoLabelMod
    {
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    MinecraftForge.EVENT_BUS.register(this);
    }
    
    @ForgeSubscribe
    @SideOnly(Side.CLIENT)
    public void onRenderLabel(RenderLivingEvent.Specials.Pre event)
    {
    if(event.entity instanceof EntityPlayer)
    {
    event.setCanceled(true);
    }
    }
    }
    

    C'est un événement client, donc à faire en client seulement.



  • Je teste tout ça !


    Nickel ça marche !


Log in to reply