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);
            
         
            
     
        }
    }
    
    

  • Correcteurs

    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


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    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) ?


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    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 ?


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    Bah, cherche dans les entités vanilla pour savoir comment faire et ensuite, fais des essais par toi-même.


  • Moddeurs confirmés Rédacteurs Administrateurs

    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 🙂


  • Moddeurs confirmés Rédacteurs Administrateurs

    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
    }
    

Log in to reply