1.8 Rendu des pseudos des joueurs dans un rayon de bloc



  • Bonjour,

    Je cherches à faire que on puisse voir les pseudos des joueurs que dans un rayon de trois bloc.

    En gros faut que le joueur se colle au second joueur pour qu'il puisse voir son pseudo (visible dans un rayon de bloc autour des joueurs).

    J'ai fais ça:

    
     @SideOnly(Side.CLIENT)
       @SubscribeEvent
       public void onRenderLabel(RenderLivingEvent.Specials.Pre event)
       {
        EntityPlayer player = (EntityPlayer)event.entity;
    
        if(event.entity instanceof EntityPlayer)
        {
        if(player.getPosition().distanceSq(player.posX, player.posY, player.posZ) <= 3)
        {
        event.setCanceled(false);
        }
        else
        {
        event.setCanceled(true);
        }
    
        }
       }
    
    

    J'ai pas essayer en multi mais je penses que ça ne marchera pas.

    Car à mon avis l'event ne s'update pas et mon code n'est pas vraiment juste aussi je penses.

    Du coup j'aimerais s'avoir comment auto update cet event et si mon code et juste ou non !

    Merci !


  • Moddeurs confirmés Rédacteurs Administrateurs

    @'floriangabet':

    
     @SideOnly(Side.CLIENT)
       @SubscribeEvent
       public void onRenderLabel(RenderLivingEvent.Specials.Pre event)
       {
        EntityPlayer player = (EntityPlayer)event.entity; // <- il faut cast après le instanceof, sinon ça va faire un ClassCastException si l'entité n'est pas un joueur
       
        if(event.entity instanceof EntityPlayer)
        {
        if(player.getPosition().distanceSq(player.posX, player.posY, player.posZ) <= 3) // cette condition sera toujours vrai
        {
        event.setCanceled(false);
        }
        else //<- inutile, suffit d'inverser la condition en haut
        {
        event.setCanceled(true);
        }
       
        }
       }
    
    

    @'floriangabet':

    Car à mon avis l'event ne s'update pas et mon code n'est pas vraiment juste aussi je penses.

    Si, l'event est appelé à chaque tick.
    Et oui, ton code n'est pas bon.

    Voila comment il faudrait faire :

    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void onRenderLabel(RenderLivingEvent.Specials.Pre event)
    {
    if(event.entity instanceof EntityPlayer)
    {
    EntityPlayer player = (EntityPlayer)event.entity;
    if(Minecraft.getMinecraft().thePlayer.getPosition().distanceSq(player.posX, player.posY, player.posZ) > 3)
    {
    event.setCanceled(true);
    }
    }
    }
    


  • D'accord ok merci 😄


Log in to reply