Non résolu Mob qui disparait
-
Bonjour, je voudrais faire en sorte que mon mob disparraisse (2sec) quand il attaque un joueur. comment faire
package com.extremium.mod.entity; import java.util.Random; import com.extremium.mod.Extremium; import com.extremium.mod.init.BlockMod; import com.extremium.mod.init.ItemMod; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.entity.Entity; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMoveThroughVillage; import net.minecraft.entity.ai.EntityAIMoveTowardsRestriction; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.ForgeModContainer; public class EntityGaster extends EntityMob { public EntityGaster(World world) { super(world); this.getNavigator().setBreakDoors(true); this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 5.0D, false)); this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 64.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, 0, false)); this.setSize(0.6F, 1.8F); } protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(80.0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(24.0D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(91.0D); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(650.0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0.1); } public Item getItemDropped(int metadata, Random random, int fortune) { return null; } public Item getDropItem() { return Item.getItemFromBlock(BlockMod.pillar); } }
-
Disparaître ou rendre invisible?
Si c’est faire disparaître j’aurais une approche de bourrin, je sais pas si c’est une bonne façon de faire mais tu peux faire un event qui kill ton mob puis en fait apparaître un nouveau 2secs plus tard avec les mêmes stats que le mob précédent au moment de la frappe.
-
non, le rendre invisible
merci -
Tu as 2 solutions possibles :
- Solution “complexe”, il suffit de ne pas lui faire de rendu quand il attaque un joueur.
- Solution simple, il suffit de lui donner l’effet d’invisiblité.
-
je choisit la simple xD
quel est levent a mettre (du genre onitemrightclick) ? -
Dans ton cas, il n’y a pas d’event à gérer, tout se fait dans la classe de ton entité.
-
oui mais comment faire ?
-
Bah, cherche dans les entités vanilla pour savoir comment faire et ensuite, fais des essais par toi-même.
-
Bonsoir,
Il me semble que la méthode
setInvisible
est disponible dans toutes les entités vivantes -
ok mais la je veut juste savoir comment faire pour que quand le mob tape, il a leffet d’invisibilité
merci -
Alors je ne sais pas si elle existait déjà en 1.7.10 (surement que oui, ou sous un autre nom), mais il y a la méthode
attackEntityFrom
dans la classe EntityLivingBase en 1.12.2 :@Override public boolean attackEntityFrom(DamageSource source, float amount) { super.attackEntityFrom(source, amount); // ton action ici }