Créer un mob qui attaque les autres entités que le joueur :
Dans ce tutoriel nous allons apprendre à créer un mob qui en attaque d’autres ! (Et non pas seulement le joueur !)
Pour commencer il vous faut la base de votre mob (rendez-vous ici).
Une fois ceci fait, ajoutez la méthode suivante dans votre class :
| public void updateEntityActionState() |
| { |
| super.updateEntityActionState(); |
| } |
Comme vous vous en douterez, ce n’est pas fini !
Pour que le mob sache ce qu’il doit faire, il lui faut des indications, donc une LISTE !
List list = worldObj.getEntitiesWithinAABB(EntityCreature.class, AxisAlignedBB.getAABBPool().getAABB(posX, posY, posZ, posX + 1, posY + 1, posZ + 1).expand(16D, 4D, 16D));
Lexique :
List list : On déclare une liste.
worldObj.getEntitiesWithinAABB(EntityCreature.class, AxisAlignedBB.getAABBPool().getAABB(posX, posY, posZ, posX + 1, posY + 1, posZ + 1).expand(16D, 4D, 16D)); : On initialise notre List !
EntityCreature.class : À REMPLACER ! (Sauf si vous voulez que votre mob attaque toutes les créatures du jeu.)
AxisAlignedBB.getAABBPool().getAABB(posX, posY, posZ, posX + 1, posY + 1, posZ + 1).expand(16D, 4D, 16D) : Permet de détecter la boîte de collision de l’ennemi du mob et surtout, à quel distance il peut le détecter !
Une fois notre liste faite, OU PRESQUE ! Nous allons ajouter une boucle for :
| for(int i = 0; i<list.size(); i++){ |
| |
| } |
Explication du contenu de la boucle for :
En premier nous avons la déclaration d’un Integer qui nous sera vital, il vous suffit de regarder la suite de la boucle for pour savoir pourquoi !
Et ENFIN, dans cette boucle for, c’est là que tout va se jouer !
Dans votre boucle for, ajoutez cette ligne qui sera très importante, puisqu’elle va se référencer au List !
Entity entity = (Entity)list.get(i);
(/!\NE PAS CHANGER “Entity” PAR UNE AUTRE CLASS(Mais vous pouvez changer le .class !!!) /!\)
Ensuite, nous allons faire (ce qu’on appel) un “List Empty Check”.
Dans votre boucle for :
Et maintenant la visse finale, le setTarget !
(À mettre dans votre “List Empty Check”)
this.setTarget(entity);
Et voilou ! Normalement, votre méthode devrait ressembler à ça :
| public void updateEntityActionState() |
| { |
| List list = worldObj.getEntitiesWithinAABB(EntityCreature.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++) |
| { |
| Entity entity = (Entity)list.get(i); |
| if(!list.isEmpty()) |
| { |
| if(!(entity instanceof EntityPlayer)) |
| { |
| this.setTarget(entity); |
| } |
| } |
| } |
| super.updateEntityActionState(); |
| } |
De même pour ce tutoriel, je ne peux pas vous donner un exemple en screen car il n’y a pas de changement physique sur le mob. 
Quoi qu’il en soit, j’espère que ce tutoriel vous aura plu, n’hésitez pas à mettre un petit + à ma réputation si c’est le cas ! 