Mob qui attaque que si on l'attaque
-
Il te faut utiliser les fonctions isAngry, SetAngry …. Que tu pourra trouver dans EntityZombiePigMen
-
Vire cette ligne :
%(#000000)[[size=xx-small]List]%(#000000)[[size=xx-small] list ]%(#666600)[[size=xx-small]=] %(#7f0055)[[size=xx-small]**this**]%(#666600)[[size=xx-small].]%(#000000)[[size=xx-small]worldObj]%(#666600)[[size=xx-small].]%(#000000)[[size=xx-small]getEntitiesWithinAABBExcludingEntity]%(#666600)[[size=xx-small](]%(#7f0055)[[size=xx-small]**this**]%(#666600)[[size=xx-small],] %(#7f0055)[[size=xx-small]**this**]%(#666600)[[size=xx-small].]%(#000000)[[size=xx-small]boundingBox]%(#666600)[[size=xx-small].]%(#000000)[[size=xx-small]expand]%(#666600)[[size=xx-small](]%(#646464)[[size=xx-small]32.0D]%(#666600)[[size=xx-small],] %(#646464)[[size=xx-small]32.0D]%(#666600)[[size=xx-small],] %(#646464)[[size=xx-small]32.0D]%(#666600)[[size=xx-small]));]Elle ne te sert plus a rien a part faire des calculs inutiles
Personnellement j’ai déjà essayé d’utiliser les AI, mais je ne suis pas arrivé a quelque chose de concluant.
Il faut que je me penche un peu plus la dessus. -
J’ai viré cette ligne ```java
List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(32.0D, 32.0D, 32.0D));après plusieurs tests ce n'est toujours pas concluant, je vais fouiller ce soir en rentrant du travail. -
Après de nombreuses recherches je bloques encore ici, voici la classe de mon mob:
package com.degraduck.mobdofus.common; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityBouftou extends EntityMob { private int angerLevel; private int randomSoundDelay; public EntityBouftou(World par1World) { super(par1World); // TODO Auto-generated constructor stub } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1); } public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) { if (this.isEntityInvulnerable()) { return false; } else { Entity var3 = par1DamageSource.getEntity(); if (var3 instanceof EntityPlayer) { List var4 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(32.0D, 32.0D, 32.0D)); for (int var5 = 0; var5 < var4.size(); ++var5) { Entity var6 = (Entity)var4.get(var5); if (var6 instanceof EntityBouftou) { EntityBouftou var7 = (EntityBouftou)var6; var7.becomeAngryAt(var3); } } this.becomeAngryAt(var3); } return super.attackEntityFrom(par1DamageSource, par2); } } private void becomeAngryAt(Entity par1Entity) { this.entityToAttack = par1Entity; this.angerLevel = 400 + this.rand.nextInt(400); this.randomSoundDelay = this.rand.nextInt(40); } protected void dropFewItems(boolean par1, int par2) { int var3 = this.rand.nextInt(2 + par2); int var4; for (var4 = 0; var4 < var3; ++var4) { this.func_145779_a(Mobdofus.morceaudekamas, 1); } var3 = this.rand.nextInt(2 + par2); for (var4 = 0; var4 < var3; ++var4) { this.func_145779_a(Mobdofus.lainebouftou, 1); } } public EntityItem func_145779_a(Item p_145779_1_, int p_145779_2_) { return this.func_145778_a(p_145779_1_, p_145779_2_, 0.0F); } public EntityItem func_145778_a(Item p_145778_1_, int p_145778_2_, float p_145778_3_) { return this.entityDropItem(new ItemStack(p_145778_1_, p_145778_2_, 0), p_145778_3_); } } -
var1, var2, var3, var4 … omg
-
Oui tu penses que je devrais supprimer une partie de mon code?
-
Ça j’en sais rien, par contre donner un nom explicite a tes variables serait une bonne chose

Sinon pourquoi ne pas faire des Class1, Class2, func1, func2 etc… -
Pas faut, mais c’est du code que j’avais copié dans le code de base du jeu donc j’ai pas renommé.
-
Quand j’rentrerais du boulot j’essaierai de faire la classe complète avec deux trois trucs en mois histoire que tu vois où ca foire
Envoyé depuis mon Android edition by sfr STARADDICT avec Tapatalk
-
D’accord c’est gentil de ta part.
EDIT:
J’ai chercher un peuje penses qu’il faudrait que je fasse quelque chose du genre
private boolean agressive; public boolean isAgressive() { return agressive; } public void setAgressive(boolean agressive) { this.agressive = agressive; } avec un if (si le mob est pas attaqué le mod aggressif est sur false) else(si on le tape il passe sur le mod aggressif true) Mainenant reste a trouver le code pour faire cela. -
Je sais que le topic est vieux mais sa pourra toujours aider quelqu’un
Sers toi plutôt de la méthode attackentityfrom et la dedans tu pourras faire tes conditions sers toi aussi au passage des tag et la variable attackingplayer (si elle s appelle comme sa) devrait beaucoup t aider je pense