3 oct. 2014, 19:40

Salut !
Pour commencer :
@‘zery59’:

    public void updateEntityActionState()

    {
        super.updateEntityActionState();
        List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getAABBPool().getAABB(posX, posY, posZ, posX + 1, posY + 1, posZ + 1).expand(16D, 4D, 16D));
        for(int i = 0; i<list.size(); i++)<br="">        {
            Entity entity = (Entity)list.get(i);
            if(!list.isEmpty())
            {
                this.setTarget(entity);
                
                if(!(entity instanceof EntityChicken))
                {
                this.setTarget(entity);
                }
                
                if(!(entity instanceof EntityCow))
                {
                this.setTarget(entity);
                }
                
                if(!(entity instanceof EntityPig))
                {
                this.setTarget(entity);
                }
            }
        }
    }
```</list.size();>

Déjà là, tu as mis Entity.class tout en haut, c’est déconseillé… C’est une des principales raisons pour laquelle le mob s’attaque lui même.
La 2nde; est que si tu veux pas que ton mob s’attaque, ou attaque les autres monstre du même type que ton mob (en gros : que tous les MOBS_A ne s’attaquent pas entre eux) est de tout simplement faire une condition :


                if(!(entity instanceof EntityTonMob))
                {
                this.setTarget(entity);
                }

@‘zery59’:

PS : le getAABBPool() est barré dans mon code

Euh… Si tu es en 1.7.10, ce tuto est réservé uniquement pour la 1.7.2. Mais je peux te dire ce qui change en 1.7.10, il y a juste à faire AxisAlignedBB.getAxisAlignedBB(etc…) (ou un truc comme ça…)

Ensuite,
@‘zery59’:


            if(!list.isEmpty())
            {
                this.setTarget(entity);
                
                if(!(entity instanceof EntityChicken))
                {
                this.setTarget(entity);
                }
                
                if(!(entity instanceof EntityCow))
                {
                this.setTarget(entity);
                }
                
                if(!(entity instanceof EntityPig))
                {
                this.setTarget(entity);
                }
            }
}

Alors là, très gros fail…
Si tu veux que ton mob n’attaque pas les animaux, tu as juste à faire :


                if(!(entity instanceof EntityAnimal))
                {
                this.setTarget(entity);
                }

Et hop, problème reglé.
Mais ce n’est pas tout, tu as déjà mis un setTarget tout seul, juste après le if(!list.isEmpty())… Or, tu l’avais déjà mis dans plusieurs conditions (toutes inutiles, vu que je t’ai indiqué une solution simple et optimisé ci-dessus)

Essaye de corriger un peu le tout en suivant ce que je viens de te dire, si cela ne fonctionne pas, expliques-moi concrètement ce que tu cherches à faire, et je m’occuperais de te faire ça.