Résolu Un zombie qui attaque un golem?
-
Bonjour à tous, voici le problème au quel je me heurte:
#Description(Description)
Je cherche à fair en sorte que quand le zombie voit un golem, il attaque ce dernier, puis que si le golem est tué par un zombie alors il se transforme en Golem Zombie#Mon soucis(Mon soucis)
J’ai mis dans un event pour les deux, mais cela ne semble pas marcher, voici le code:@ForgeSubscribe public void onDeath(LivingDeathEvent event) { if(event.entity instanceof EntityGolem) { if(DamageSource.causeMobDamage(event.entityLiving).getEntity() instanceof EntityZombie) { EntityGolemZombie EZG = new EntityGolemZombie(event.entity.worldObj); EZG.setPosition(event.entity.posX, event.entity.posY, event.entity.posZ); event.entity.worldObj.spawnEntityInWorld(EZG); } } } @ForgeSubscribe public void onSpawn(LivingSpawnEvent event) { if(event.entity instanceof EntityZombie) { EntityZombie zomb = (EntityZombie)event.entity; zomb.targetTasks.addTask(3, new EntityAINearestAttackableTarget(zomb, EntityGolem.class, 0, true)); } }
Merci de votre aide!
-
Est ce que le zombie attaque le golem ?
-
non c’est bien la le soucis
-
ajoute ça dans le code de l’event :
zomb.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityIronGolem.class, 1.0D, true));
zomb.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityIronGolem.class, 0, true));
J’ai fait des tests sur les entités, il faut avoir ces 2 boots de code ! -
J’ai donc ajouter la ligne, cela donne ce code:
@ForgeSubscribe public void onSpawn(LivingSpawnEvent event) { if (event.entityLiving instanceof EntityZombie) { EntityZombie zomb = (EntityZombie)event.entityLiving; zomb.tasks.addTask(2, new EntityAIAttackOnCollide(zomb, EntityIronGolem.class, 1.0D, true)); zomb.targetTasks.addTask(2, new EntityAINearestAttackableTarget(zomb, EntityIronGolem.class, 0, true)); } }
Et en effet cela marche, merci donc !
Maintenant je cherche pour que à sa mort le golem devienne un Golem ZombieEdit: J’ai trouvé, voici le code que j’aurai du utiliser:
@ForgeSubscribe public void onDeath(LivingDeathEvent event) { if (event.entityLiving instanceof EntityIronGolem) { if (event.source.getEntity() instanceof EntityZombie) { EntityGolemZombie EZG = new EntityGolemZombie(event.entity.worldObj); EZG.setPosition(event.entity.posX, event.entity.posY, event.entity.posZ); event.entity.worldObj.spawnEntityInWorld(EZG); } } }
-
De rien
-
@ForgeSubscribe public void onDeath(LivingDeathEvent event) { if (event.entity instanceof EntityGolem) { if (event.source.getEntity() instanceof EntityZombie) { EntityGolemZombie EZG = new EntityGolemZombie(event.entity.worldObj); EZG.setPosition(event.entity.posX, event.entity.posY, event.entity.posZ); event.entity.worldObj.spawnEntityInWorld(EZG); } } }
Comme ça non ?
-
yep, j’allais te demander pourquoi le if (DamageSource.causeMobDamage(event.entityLiving).getEntity() instanceof EntityZombie) alors qu’il y a plus cours
-
Merci à vous, bien que j’ai trouvé finalement avant que tu me donnes la réponse mais merci quand même à vous deux pour votre aide! ce sujet est donc résolu!
-
De rien (par contre, tu es sûr qu’un zombie va tuer un golem ? x))