MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Mob qui attaque que si on l'attaque

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.2
    24 Messages 7 Publieurs 6.8k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • D Hors-ligne
      Degraduck
      dernière édition par

      D’accord je test cela de suite, n’ayant jamais travaillé avec les Ia je risque d’avoir du mal

      1 réponse Dernière réponse Répondre Citer 0
      • D Hors-ligne
        Degraduck
        dernière édition par

        Est ceci qui faut que je copie: ```java
        public boolean attackEntityFrom(DamageSource par1DamageSource, float par2)
        {
        if (!super.attackEntityFrom(par1DamageSource, par2))
        {
        return false;
        }
        else
        {
        EntityLivingBase var3 = this.getAttackTarget();

        if (var3 == null && this.getEntityToAttack() instanceof EntityLivingBase)
        {
        var3 = (EntityLivingBase)this.getEntityToAttack();
        }

        if (var3 == null && par1DamageSource.getEntity() instanceof EntityLivingBase)
        {
        var3 = (EntityLivingBase)par1DamageSource.getEntity();
        }

        if (var3 != null && this.worldObj.difficultySetting == EnumDifficulty.HARD && (double)this.rand.nextFloat() < this.getEntityAttribute(field_110186_bp).getAttributeValue())
        {
        int var4 = MathHelper.floor_double(this.posX);
        int var5 = MathHelper.floor_double(this.posY);
        int var6 = MathHelper.floor_double(this.posZ);
        EntityZombie var7 = new EntityZombie(this.worldObj);

        for (int var8 = 0; var8 < 50; ++var8)
        {
        int var9 = var4 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);
        int var10 = var5 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);
        int var11 = var6 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);

        if (World.doesBlockHaveSolidTopSurface(this.worldObj, var9, var10 - 1, var11) && this.worldObj.getBlockLightValue(var9, var10, var11) < 10)
        {
        var7.setPosition((double)var9, (double)var10, (double)var11);

        if (this.worldObj.checkNoEntityCollision(var7.boundingBox) && this.worldObj.getCollidingBoundingBoxes(var7, var7.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(var7.boundingBox))
        {
        this.worldObj.spawnEntityInWorld(var7);
        var7.setAttackTarget(var3);
        var7.onSpawnWithEgg((IEntityLivingData)null);
        this.getEntityAttribute(field_110186_bp).applyModifier(new AttributeModifier(“Zombie reinforcement caller charge”, -0.05000000074505806D, 0));
        var7.getEntityAttribute(field_110186_bp).applyModifier(new AttributeModifier(“Zombie reinforcement callee charge”, -0.05000000074505806D, 0));
        break;
        }
        }
        }
        }

        return true;
        }
        }

        1 réponse Dernière réponse Répondre Citer 0
        • Bowser338B Hors-ligne
          Bowser338
          dernière édition par

          tu a essayé sa ?

          /**
              * Called when the entity is attacked.
              */
             public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_)
             {
                 if (this.isEntityInvulnerable())
                 {
                     return false;
                 }
                 else
                 {
                     Entity entity = p_70097_1_.getEntity();
          
                     if (entity instanceof EntityPlayer)
                     {
                         List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(32.0D, 32.0D, 32.0D));
          
                         for (int i = 0; i < list.size(); ++i)
                         {
                             Entity entity1 = (Entity)list.get(i);
          
                             if (entity1 instanceof EntityPigZombie)
                             {
                                 EntityPigZombie entitypigzombie = (EntityPigZombie)entity1;
                                 entitypigzombie.becomeAngryAt(entity);
                             }
                         }
          
                         this.becomeAngryAt(entity);
                     }
          
                     return super.attackEntityFrom(p_70097_1_, p_70097_2_);
                 }
             }
          
             /**
              * Causes this PigZombie to become angry at the supplied Entity (which will be a player).
              */
             private void becomeAngryAt(Entity p_70835_1_)
             {
                 this.entityToAttack = p_70835_1_;
                 this.angerLevel = 400 + this.rand.nextInt(400);
                 this.randomSoundDelay = this.rand.nextInt(40);
             }
          

          je pense qu’il faut juste que tu enleve la partie ou tout les autres entity PigZombie passent en mode Angry si t’en tape un

          Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

          1 réponse Dernière réponse Répondre Citer 0
          • D Hors-ligne
            Degraduck
            dernière édition par

            public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_)
            {
            if (this.isEntityInvulnerable())
            {
            return false;
            }
            else
            {
            Entity entity = p_70097_1_.getEntity();
            
            if (entity instanceof EntityPlayer)
            {
            List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(32.0D, 32.0D, 32.0D));
            
            for (int i = 0; i < list.size(); ++i)
            }
            
            }
            
            return super.attackEntityFrom(p_70097_1_, p_70097_2_);
            }
            
            ``` Comme ceci?
            1 réponse Dernière réponse Répondre Citer 0
            • Bowser338B Hors-ligne
              Bowser338
              dernière édition par

              Nan enleve juste la boucle for et son contenu tout le reste tu le garde et fait des test

              Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

              1 réponse Dernière réponse Répondre Citer 0
              • D Hors-ligne
                Degraduck
                dernière édition par

                /**
                * Called when the entity is attacked.
                */
                public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_)
                {
                if (this.isEntityInvulnerable())
                {
                return false;
                }
                else
                {
                Entity entity = p_70097_1_.getEntity();
                
                if (entity instanceof EntityPlayer)
                {
                List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(32.0D, 32.0D, 32.0D));
                
                this.becomeAngryAt(entity);
                }
                
                return super.attackEntityFrom(p_70097_1_, p_70097_2_);
                }
                }
                
                /**
                * Causes this PigZombie to become angry at the supplied Entity (which will be a player).
                */
                private void becomeAngryAt(Entity p_70835_1_)
                {
                this.entityToAttack = p_70835_1_;
                this.angerLevel = 400 + this.rand.nextInt(400);
                this.randomSoundDelay = this.rand.nextInt(40);
                }
                ``` J'ai essayé ceci sans succès, je verrais demain ta réponse car je vais au lit, bonne soirée.
                1 réponse Dernière réponse Répondre Citer 0
                • AmaA Hors-ligne
                  Ama
                  dernière édition par

                  Il te faut utiliser les fonctions isAngry, SetAngry …. Que tu pourra trouver dans EntityZombiePigMen

                  Si je t'ai filé un coup de main n'oublie pas le + / -
                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                  1 réponse Dernière réponse Répondre Citer 0
                  • RedRelayR Hors-ligne
                    RedRelay Moddeurs confirmés
                    dernière édition par

                    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.

                    –------------------------------------------------------------------------------------
                    Si tu trouves mon intervention pertinente, n'hésite pas a m…

                    1 réponse Dernière réponse Répondre Citer 0
                    • D Hors-ligne
                      Degraduck
                      dernière édition par

                      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.
                      1 réponse Dernière réponse Répondre Citer 0
                      • D Hors-ligne
                        Degraduck
                        dernière édition par

                        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_);
                        }
                        
                        }
                        
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • RedRelayR Hors-ligne
                          RedRelay Moddeurs confirmés
                          dernière édition par

                          var1, var2, var3, var4 … omg

                          –------------------------------------------------------------------------------------
                          Si tu trouves mon intervention pertinente, n'hésite pas a m…

                          1 réponse Dernière réponse Répondre Citer 0
                          • D Hors-ligne
                            Degraduck
                            dernière édition par

                            Oui tu penses que je devrais supprimer une partie de mon code?

                            1 réponse Dernière réponse Répondre Citer 0
                            • RedRelayR Hors-ligne
                              RedRelay Moddeurs confirmés
                              dernière édition par

                              Ç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…

                              –------------------------------------------------------------------------------------
                              Si tu trouves mon intervention pertinente, n'hésite pas a m…

                              1 réponse Dernière réponse Répondre Citer 0
                              • D Hors-ligne
                                Degraduck
                                dernière édition par

                                Pas faut, mais c’est du code que j’avais copié dans le code de base du jeu donc j’ai pas renommé.

                                1 réponse Dernière réponse Répondre Citer 0
                                • AmaA Hors-ligne
                                  Ama
                                  dernière édition par

                                  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

                                  Si je t'ai filé un coup de main n'oublie pas le + / -
                                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • D Hors-ligne
                                    Degraduck
                                    dernière édition par

                                    D’accord c’est gentil de ta part.

                                    EDIT:
                                    J’ai chercher un peu

                                    je 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.
                                    
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • DeletedD Hors-ligne
                                      Deleted
                                      dernière édition par

                                      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

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • 1
                                      • 2
                                      • 2 / 2
                                      • Premier message
                                        Dernier message
                                      Design by Woryk
                                      ContactMentions Légales

                                      MINECRAFT FORGE FRANCE © 2024

                                      Powered by NodeBB