Problème de spawn de mobs



  • Salut
    J'ai un problème : l'année dernière, j'avais créer des mobs et tout marchait bien. Mais quand j'ai mis à jour mon mod, mes mobs ont arrêtés de spawn. Ils marchent bien, car je les fais spawn avec l'oeuf, mais pas le spawn naturel.

    Voici le code que j'ai mis dans la classe principale :

    ​        EntityRegistry.registerGlobalEntityID(EntitySantaClaus.class, "SantaClaus", EntityRegistry.findGlobalUniqueEntityId());
    
            EntityRegistry.addSpawn(EntitySantaClaus.class, 750, 1, 1, EnumCreatureType.creature, BiomeGenBase.taiga, BiomeGenBase.taigaHills, BiomeGenBase.extremeHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.forest, BiomeGenBase.forestHills, BiomeGenBase.iceMountains, BiomeGenBase.icePlains, BiomeGenBase.plains, BiomeGenBase.swampland);        
            registerEntityEgg(EntitySantaClaus.class, 0xF20000, 0xFFFFFF);
    

    (j'ai 3 mobs qui ne spawn pas, mais je n'ai mis qu'un code car ces 3 mobs ont le même bug)

    ​package This_is_Christmas;
    
    import net.minecraft.entity.SharedMonsterAttributes;
    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.EntityAIOpenDoor;
    import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
    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.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.world.World;
    
    public class EntitySantaClaus extends EntityMob{
    
        public EntitySantaClaus(World par1World) {
            super(par1World);
            this.tasks.addTask(0, new EntityAISwimming(this));
            this.tasks.addTask(1, new EntityAIMoveTowardsRestriction(this, 1.0D));
            this.tasks.addTask(2, new EntityAIMoveThroughVillage(this, 1.0D, false));
            this.tasks.addTask(3, new EntityAIWander(this, 1.0D));
            this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
            this.tasks.addTask(5, new EntityAILookIdle(this));
            this.targetTasks.addTask(6, new EntityAIHurtByTarget(this, true));
            this.tasks.addTask(7, new EntityAIRestrictOpenDoor(this));
            this.tasks.addTask(8, new EntityAIOpenDoor(this, true));
        }
        public boolean isAIEnabled(){
            return true;
        }
        protected void applyEntityAttributes()
        {
            super.applyEntityAttributes();
            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.10D);
            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(28D);
        }
    
          public int getSantaClausType()
            {
                return this.dataWatcher.getWatchableObjectByte(13);
            }
    
         protected String getLivingSound()
            {
                return "mob.villager.idle";
            }
    
            /**
             * Returns the sound this mob makes when it is hurt.
             */
            protected String getHurtSound()
            {
                return "mob.villager.hit";
            }
    
            /**
             * Returns the sound this mob makes on death.
             */
            protected String getDeathSound()
            {
                return "mob.villager.death";
            }
    
            /**
             * Plays step sound at given x, y, z for the entity
             */
            protected void playStepSound(int par1, int par2, int par3, int par4)
            {
                this.playSound("mob.zombie.step", 0.15F, 1.0F);
            }
    
            /**
             * Returns the item ID for the item the mob drops on death.
             */
            protected Item getDropItem()
            {
                return This_is_Christmas.BarleySugar;
            }
    }
    

    Mais je ne comprend pas car je n'ai rien modifié par rapport à l'année dernière.

    Merci d'avance

    PS : j'ai trouvé un problème similaire au mien (http://www.minecraftforgefrance.fr/archive/index.php?thread-1371.html), j'ai donc essayer la réponse, mais ça n'a rien donné


  • Administrateurs

    750 c'est beaucoup trop comme probabilité. Et le max doit être supérieur au mini. (il me semble).



  • Salut
    Merci, mais ça ne spawn toujours pas. J'ai réduit la probabilité à 100, puis à 50 et j'ai mis le nombre de mobs par groupe à 2 au max, mais ça ne spawn toujours pas. Je vois vraiment pas où ça peut être.

    Merci d'avance

    PS : Au passage, j'utilise la version de Forge 1.7.10-10.13.0.1180 . Peut-être à cause de ça



  • Si tu veux je te passe ma ligne de code elle fonctionne essaye pour voir :

    là où tu définis tes items, blocs etc… (public static Block etc...)

    public static BiomeGenBase[] biomes = new BiomeGenBase[]{BiomeGenBase.plains, BiomeGenBase.extremeHills, BiomeGenBase.beach, BiomeGenBase.desert,
    
    BiomeGenBase.desertHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.forest, BiomeGenBase.forestHills, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.river,
    BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, BiomeGenBase.coldBeach, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.deepOcean,
    BiomeGenBase.extremeHillsPlus, BiomeGenBase.jungleEdge, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, BiomeGenBase.mesa, BiomeGenBase.mesaPlateau, BiomeGenBase.mesaPlateau_F, BiomeGenBase.roofedForest, BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, BiomeGenBase.stoneBeach};
    

    Remplace les biomes voulus. j'ai mis tout ça pour être sûr qu'il spawn

    Et pour le spawn :

    EntityRegistry.addSpawn(EntityMobKevin.class, 80, 2, 10, EnumCreatureType.monster, biomes);
    

    Remplace EntityMobKevin.class par EntityTonMob.class

    J'espère que ça va t'aider 🙂



  • J'ai essayer ce que tu m'a dit, mais rien du tout.
    Peut-être que c'est la version de Forge qui fait bug. Je vais essayer de recompiler et de tester avec une version plus récente de Forge, ça va peut-être marcher, même si je doute.

    En tout cas, je vois pas d'où ça peut venir



  • J'ai essayer avec la version la plus récente de Forge en solo, ça ne spawn pas.

    Je vois vraiment pas d'où ça peut venir. En plus, en 1.6, ça spawnait normalement.
    Si vous avez une idée, …

    PS : si vous avez besoin d'autres classes, n'hésitez pas à me demander



  • T'es sur t'es pas en peaceful?



  • Non, je suis en normal.



  • Tu as des erreurs dans la console ?



  • Non, aucune erreur.
    J'ai essayer de jour comme de nuit, rien



  • Tu as bien declarer tes mobs ? Ils spawnent avec un oeuf ? Et avec le /summon ?



  • Oui, avec l'oeuf et le /summon, ils spawnent bien.
    J'ai déclarer les mobs comme ça :

    ​        EntityRegistry.registerGlobalEntityID(EntitySantaClaus.class, "SantaClaus", EntityRegistry.findGlobalUniqueEntityId());
    
            EntityRegistry.addSpawn(EntitySantaClaus.class, 80, 2, 10, EnumCreatureType.creature, biomes);    
            registerEntityEgg(EntitySantaClaus.class, 0xF20000, 0xFFFFFF);
    


  • Tu as pas declaré ton entity dans le FML rajoute ca:

    ​​EntityRegistry.registerModEntity(EntitySantaClaus.class, "SantaClaus", 420, this.instance, 40, 1, true);
    


  • Ça marche, merci!

    Mais je ne comprend pas pourquoi c'est cette ligne manquante qui faisait que le mob ne spawn pas. Pourtant, il était quand même enregistré.



  • Oui mais il faut l'enregistrer deux fois, vas voir sur le tuto faire une entity basique et tu verras c'est marqué.. J'ai jamais fais de mob j'ai juste regardé le tuto et j'ai trouvé, regarde la prochaine fois.



  • Ok merci. C'est que en 1.6, il n'y avait pas cette ligne, et quand je l'ai mis à jour, il n'étais pas marqué dans le tuto de mise à jour et je n'ai pas pensé à regarder.
    En tout cas, merci



  • @'Axaurus':

    Ça marche, merci!

    Mais je ne comprend pas pourquoi c'est cette ligne manquante qui faisait que le mob ne spawn pas. Pourtant, il était quand même enregistré.

    Car cette ligne là enregiste l'id de ton mob

    EntityRegistry.registerGlobalEntityID(EntitySantaClaus.class, "SantaClaus", EntityRegistry.findGlobalUniqueEntityId());
    

    Mais ton mob lui n'était pas enregistré car il manquait cette ligne-là

    ​​EntityRegistry.registerModEntity(EntitySantaClaus.class, "SantaClaus", 420, this.instance, 40, 1, true);
    


  • Ok, je viens de comprendre.
    Merci