1.7.2 Interaction avec une laisse



  • Bonjour !

    J'ai une entity et j'aimerais pouvoir l'attaché aux autres entity.
    Exemple : on prend un cheval, on lui met une laisse, et on met l'autre bout de la laisse sur mon entity.
    Voilà, si quelqu'un a la solution, ça m'aiderais bien ^^'



  • Essaye de voir dans les code de la barrière 😉



  • Je t'avoue que ça m'aide pas des masses ^^'

    J'ai fait ça :

    if (!this.worldObj.isRemote)
    {
    if(!ItemLead.func_150909_a(par1EntityPlayer, this.worldObj, this.chunkCoordX, this.chunkCoordY, this.chunkCoordZ)) // Fonction tirée des fences
    {
    par1EntityPlayer.mountEntity(this);
    }
    }
    

    mais je me retrouve à monter mon entity au lieu d'y attacher les poneys 😞



  • Bah, normal … j'veux dire ... Tu dis juste au player de monter l'entité ciblée ._.

    Cherche comment la laisse s'attache lors du premier click droit



  • Pour attacher elle renvois cette fonction (pas les mêmes noms d'arguments mais c'est ça):

    ItemLead.func_150909_a(EntityPlayer, worldObj, X, Y, Z)
    

    Si ça renvois true c'est que ça attache (d'où le !Itemlead.func dans mon code)



  • Mais, pourquoi tu veux faire en sorte que si y'a pas de laisse, tu monte ton entité ?



  • Disons que c'est juste un détail qui change pas le problème ^^'
    En fait j'avais pas vu que les position XYZ étaient posX, posY et posZ. Mais ça me créais un nœud dans le vide, donc j'ai recopié la fonction qui créer le nœud et j'ai remplacé la création du nœud par mon entity et ça marche ^^ pour ça que ça interesserais :

    /**
    * First layer of player interaction
    */
    public boolean interactFirst(EntityPlayer par1EntityPlayer)
    {
    if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != par1EntityPlayer)
    {
    return true;
    }
    else
    {
    if (!this.worldObj.isRemote)
    {
    if(!leash(par1EntityPlayer))
    {
    par1EntityPlayer.mountEntity(this);
    }
    }
    
    return true;
    }
    }
    
    protected boolean leash(EntityPlayer p_150909_0_)
    {
    World p_150909_1_ = this.worldObj;
    int p_150909_2_ = (int)this.posX;
    int p_150909_3_ = (int)this.posY;
    int p_150909_4_ = (int)this.posZ;
    
    EntityLeashKnot entityleashknot = EntityLeashKnot.getKnotForBlock(p_150909_1_, p_150909_2_, p_150909_3_, p_150909_4_);
    boolean flag = false;
    double d0 = 7.0D;
    List list = p_150909_1_.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getAABBPool().getAABB((double)p_150909_2_ - d0, (double)p_150909_3_ - d0, (double)p_150909_4_ - d0, (double)p_150909_2_ + d0, (double)p_150909_3_ + d0, (double)p_150909_4_ + d0));
    
    if (list != null)
    {
    Iterator iterator = list.iterator();
    
    while (iterator.hasNext())
    {
    EntityLiving entityliving = (EntityLiving)iterator.next();
    
    if (entityliving.getLeashed() && entityliving.getLeashedToEntity() == p_150909_0_)
    {
    entityliving.setLeashedToEntity(this, true);
    flag = true;
    }
    }
    }
    
    return flag;
    }
    

Log in to reply