MFF

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

    [SEMI TUTO] Création de mon mob hostile: spawn, attaque etc.

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8.8
    110 Messages 9 Publieurs 20.9k 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      Je comprends pas, où est le problème ?

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

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

        Il n’attaque pas et ne bouge pas.
        De plus, je ne sais pas ce qu’il faut mettre pour un model costumisé après :
        public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
        {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
        }

        }

        Et enfin j’aimerai savoir si y’a pas un truc plus simple et plus rapide pour qu’ils puissent spawn dans tous les biomes sans avoir à recopier chaque biome ici:
        EntityRegistry.addSpawn(entityClass, 20, 1, 3, EnumCreatureType.MONSTER, biomeGenBase.); (=(entityClass, weightedProb, min, max, typeOfCreature, biomes) <– ce “biomes” là. Car pour qu’il puisse spawn dans un biome faut faire BiomeGenBase.forest, mais pour qu’il spawn sur la map entière il faudrait tous les écrire y’en a énormement ça prendrait du temps.

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

          Pour qu’il attaque et qu’il bouge, il lui faut une IA, tu l’as mise ?

          Si tu n’as pas d’animation au niveau des membres, tu n’as pas besoin de cette fonction.

          Il faut mettre tous les biomes à la suite : EntityRegistry.addSpawn(entityClass, 20, 1, 3, EnumCreatureType.MONSTER, biome1, biome2, etc)
          PS : ne mets pas TOUS les biomes sinon il va aussi spawner dans l’end et dans le nether

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Pour qu’il attaque et qu’il bouge, il lui faut une IA, tu l’as mise ?> c’est à dire?

            C’est pas ça?
            Protected void applyEntityAI()
            {
            this.tasks.addTask(4, new EntityAIAttackOnCollide(this, EntityIronGolem.class, 1.0D, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityIronGolem.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityChicken.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPig.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityRabbit.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityCow.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityHorse.class, true));
            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityOcelot.class, true));

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              @‘conquerorguepard’:

              (avec findGlobalUniqueEntityId et registerGlobalEntityID barrés je ne sais pas pourquoi)

              Car ce sont des méthodes obsolètes, donc qui ne devrait plus être utilisé.
              Pour les biomes, tu peux faire un tableau de tout les biomes et le réutiliser pour tous les entités, je ne crois pas qu’on peut faire mieux 😕

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

                Tu en as mis beaucoup trop, surtout que tu leur as donné la meme priorité (2) à chacun.

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                  D’accord.
                  Mais mon plus gros problème c’est que mon mob ne bouge pas et n’attaque pas 😕
                  Et c’est quoi les différences entre ambient creature monster.
                  Parce que mon mob est monster mais ne spawn que la nuit alors que je voudrais qu’il spawn le jour.

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

                    Il faut que tu mettes la fonction canSpawn sur true (la fonction est dans Entity Mob).

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                      C’est où que je la mets exactement cette fonction? Entity Handler ou EntityClass? Dans quel endroit exacte?
                      Et du coup on m’a toujours pas dit comment je dois faire pour qu’il puisse bouger :/…

                      Et c’est mieux comme ça?

                      this.tasks.addTask(4, new EntityAIAttackOnCollide(this, EntityIronGolem.class, 1.0D, true));
                              this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
                              this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, true));
                              this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityIronGolem.class, true));
                              this.targetTasks.addTask(4, new EntityAINearestAttackableTarget(this, EntityChicken.class, true));
                              this.targetTasks.addTask(5, new EntityAINearestAttackableTarget(this, EntityPig.class, true));
                              this.targetTasks.addTask(6, new EntityAINearestAttackableTarget(this, EntityRabbit.class, true));
                              this.targetTasks.addTask(7, new EntityAINearestAttackableTarget(this, EntityCow.class, true));
                              this.targetTasks.addTask(8, new EntityAINearestAttackableTarget(this, EntityHorse.class, true));
                              this.targetTasks.addTask(9, new EntityAINearestAttackableTarget(this, EntityOcelot.class, true));
                          }

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

                        Dans la classe de l’entité.
                        Comme je l’ai dit dans l’autre post, fais un nettoyage dans tes ai

                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                          Et du coup je fais comment pour qu’il attaque tous les mobs non hostiles?
                          Et ça ne résout pas les problèmes de déplacements 😕

                          1 réponse Dernière réponse Répondre Citer 0
                          • FolganskyF Hors-ligne
                            Folgansky Correcteurs
                            dernière édition par

                            Nomalement  EnumCreatureType.monster suffit à les rendre aggressifs.

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

                              Non il faut mettre les ai en rapport avec l’attaque (récupères celles des zombies et pour attaquer toutes les entitées, tu n’auras qu’à changer les sélécteurs.

                              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                C’est quoi les sélecteurs? Lesquels? Comment?
                                Et canspawn sur true sur quelle mise en forme et dans quelle variable?
                                Il me faut du détail c’est mon premier et je ne sais pas dans quel variable mettre vos commandes ni comment les formuler.
                                Sinon toutoune, je connais ça, mais je cherche à ce que les monstres attaquent aussi les autres mobs passifs

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

                                  Tu récupères les EntityAI du zombie, aux endroits où il y a new EntityAI[Quelque chose], dans le contructeur, il y a des noms d’entité pour certaines de ces entityAi, tu as juste à les modifier. (Je te dis ça de mémoire, je l’ai pas en face).
                                  Pour le “canSpawn”, dans la classe Entity, recherches la fonction qui s’appelle comme ça (ctrl+f pour rechercher) et copies-colles là dans ton entitée, en mettant bien “return true;”

                                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                    J’ai modifié la classe entity :

                                    package Entity;
                                    
                                    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.EntityIronGolem;
                                    import net.minecraft.entity.monster.EntityMob;
                                    import net.minecraft.entity.monster.EntityPigZombie;
                                    import net.minecraft.entity.passive.EntityChicken;
                                    import net.minecraft.entity.passive.EntityCow;
                                    import net.minecraft.entity.passive.EntityHorse;
                                    import net.minecraft.entity.passive.EntityOcelot;
                                    import net.minecraft.entity.passive.EntityPig;
                                    import net.minecraft.entity.passive.EntityRabbit;
                                    import net.minecraft.entity.passive.EntityVillager;
                                    import net.minecraft.entity.player.EntityPlayer;
                                    import net.minecraft.pathfinding.PathNavigateGround;
                                    import net.minecraft.world.World;
                                    
                                    public class Entityclass extends EntityMob
                                    {
                                        public Entityclass(World world)
                                        {
                                            super(world);
                                            ((PathNavigateGround)this.getNavigator()).setBreakDoors(true);
                                            this.tasks.addTask(0, new EntityAISwimming(this));
                                            this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
                                            this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D));
                                            this.tasks.addTask(7, new EntityAIWander(this, 1.0D));
                                            this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
                                            this.tasks.addTask(8, new EntityAILookIdle(this));
                                            this.setSize(2, 3);
                                            this.applyEntityAI();
                                        }
                                    
                                        public void applyEntityAttributes()
                                        {
                                            super.applyEntityAttributes();
                                            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(62D);
                                            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(9D);
                                            this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(2D);
                                            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D);
                                            this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(120D);
                                        }
                                    
                                        protected void applyEntityAI()
                                        {
                                            this.tasks.addTask(4, new EntityAIAttackOnCollide(this, EntityIronGolem.class, 1.0D, true));
                                            this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true, new Class[] {EntityPigZombie.class}));
                                            this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
                                            this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, true));
                                            this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityIronGolem.class, true));
                                            this.targetTasks.addTask(4, new EntityAINearestAttackableTarget(this, EntityChicken.class, true));
                                            this.targetTasks.addTask(5, new EntityAINearestAttackableTarget(this, EntityPig.class, true));
                                            this.targetTasks.addTask(6, new EntityAINearestAttackableTarget(this, EntityRabbit.class, true));
                                            this.targetTasks.addTask(7, new EntityAINearestAttackableTarget(this, EntityCow.class, true));
                                            this.targetTasks.addTask(8, new EntityAINearestAttackableTarget(this, EntityHorse.class, true));
                                            this.targetTasks.addTask(9, new EntityAINearestAttackableTarget(this, EntityOcelot.class, true));
                                        }
                                    

                                    Et maintenant il me fait ça: (j’ai voulu mettre une vidéo ça a pas marché. En gros mon mob avance à une très grande vitesse et fait des tours de moins d’une seconde autour de moi. Par contre il n’attaque que moi. Il va tellement vite qu’on dirait qu’il se tp. Des idées? Et sinon j’ai essayé de chercher canspawn, ça n’a rien trouvé, comme le montre le screen. De toutes façons, j’ai mis tous mes fichiers en première page, donc vous trouverez si quelque chose manque :))
                                    Vous savez pourquoi?

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

                                      Pour le fait qu’il aille très vite, il faut que tu modifies sa vitesse (le movementSpeed) (tu as mis 1.0D et les mobs de Minecraft sont tous à moins de 1.0D, par exemple le zombie a “0.23000000417232513D”).
                                      Pour le canspawn, effectivement je me suis trompé de nom :(, je regarde ça tout de suite.

                                      EDIT : C’est bon en fait la fonction c’est getCanSpawnHere, mais elle vérifies aussi les boites de collision donc il vaut mieux pas la remplacer (ça va juste te compliquer la vie) donc tu as juste à mettre cette fonction pour l’empêcher de vérifier le niveau de lumière :

                                      
                                      @Override //Permet de dire que tu remplace une fonction de la superclass (le extends …)
                                      protected boolean isValidLightLevel()
                                      {
                                      return true;
                                      }
                                      

                                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                        Edit: Tout est bon. J’ai baisser sa vitesse, et j’ai fait en sorte qu’il n’y ai que this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true)); dans Protected void. Il ne manque que quatre choses, dont deux très importantes:
                                        1.L’autoriser à pouvoir spawn le jour, et à ce qu’il ne disparaisse pas lorsqu’on s’éloigne trop.
                                        2.Le faire attaquer tous les mobs autres que lui.

                                        Moins important: 3.Trouver comment lui rajouter un son. Je vais réfléchir moi même sur cela pour le moment.
                                        4.Lui rajouter une animation de marche, ça je pense que je vais avoir du mal…

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

                                          Effectivement c’est byzarre…
                                          Pour le fait qu’il attaque byzarrement, remplace ça :

                                          
                                          1.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityPlayer.**class**, **true**));
                                          2.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityVillager.**class**, **true**));
                                          3.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityIronGolem.**class**, **true**));
                                          4.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityChicken.**class**, **true**));
                                          5.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityPig.**class**, **true**));
                                          6.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityRabbit.**class**, **true**));
                                          7.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityCow.**class**, **true**));
                                          8.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityHorse.**class**, **true**));
                                          9.          **this**.targetTasks.addTask(2, **new** EntityAINearestAttackableTarget(**this**, EntityOcelot.**class**, **true**));
                                          
                                          

                                          par ça :

                                          
                                          [font=monospace****this**][font=monospace.][font=monospacetargetTasks][font=monospace.][font=monospaceaddTask][font=monospace(][font=monospace2][font=monospace,][font=monospace ][font=monospace**new**][font=monospace ][font=monospaceEntityAINearestAttackableTarget][font=monospace(][font=monospace**this**][font=monospace,][font=monospace ][font=monospaceEntityPlayer][font=monospace.][font=monospace**class**][font=monospace,][font=monospace ][font=monospace**true**][font=monospace));]**
                                          [font=monospace**this**][font=monospace.][font=monospacetargetTasks][font=monospace.][font=monospaceaddTask][font=monospace(3][font=monospace,][font=monospace ][font=monospace**new**][font=monospace ][font=monospaceEntityAINearestAttackableTarget][font=monospace(][font=monospace**this**][font=monospace,][font=monospace ][font=monospaceEntityCreature][font=monospace.][font=monospace**class**][font=monospace,][font=monospace ][font=monospace**true**][font=monospace));]
                                          

                                          ça aura le même effet et au moins ils n’entreront pas en conflit.

                                          Pour le spawn, j’aurais pensé que ça aurait marché, je vais continuer à voir ça.

                                          Pour le son, il y a des fonctions comme getDeathSound(), getHurtSound() dans la classe EntityMob que tu peux reprendre.

                                          Pour l’animation de marche, regarde dans ModelBiped  (package net.minecraft.client.model) que les jambes sont animées.

                                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                            Et j’aimerai savoir comment faire pour qu’il saute aussi 🙂 svp
                                            Sinon merci déjà!

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB