• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu AddSpawn(mix, max)

    1.8.x
    1.8.9
    2
    6
    1266
    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.
    • Dylem
      Dylem dernière édition par

      Puisque les anglophones ne semblent pas avoir la solution, je poste aussi ici.

      Il y a donc cette fonction dans EntityRegistry:

      public static void addSpawn(Class entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase… biomes)
          {
              for (BiomeGenBase biome : biomes)
              {
                  List <spawnlistentry>spawns = biome.getSpawnableList(typeOfCreature);
      
                  for (SpawnListEntry entry : spawns)
                  {
                      //Adjusting an existing spawn entry
                      if (entry.entityClass == entityClass)
                      {
                          entry.itemWeight = weightedProb;
                          entry.minGroupCount = min;
                          entry.maxGroupCount = max;
                          break;
                      }
                  }
      
                  spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max));
              }
          }
      

      Je l’ai donc utilisé pour spawn mon EntitySchiff :

      EntityRegistry.addSpawn(EntitySchiff.class, 30, 3, 4, EnumCreatureType.MONSTER, BiomeGenBase.hell);
      

      Les entités spawn, cependant plutôt seules ou par groupe de deux, alors qu’elles devraient toujours spawn en groupe de 3 ou 4 😕

      Le code de l’entité :

         package mod.dylems.bloodplus.entity;
      
         import net.minecraft.entity.monster.EntityPigZombie;
         import net.minecraft.init.Items;
         import net.minecraft.item.ItemStack;
         import net.minecraft.world.DifficultyInstance;
         import net.minecraft.world.World;
      
         public class EntitySchiff extends EntityPigZombie {
      
             public EntitySchiff(World worldIn) {
                 super(worldIn);
                 this.isImmuneToFire = true;
             }
      
             @Override
             public boolean isChild() {
                 return false;
             }
      
             @Override
             public int getMaxSpawnedInChunk()
             {
                 return 4;
             }
      
             @Override
             protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) {
                 int i = this.rand.nextInt(1 + p_70628_2_);
      
                 for (int n = 0; n < i; ++n)
                 {
                     this.dropItem(Items.book, 1);
                 }
             }
      
             @Override
             protected void addRandomDrop() {
                 this.dropItem(Items.book, 1);
             }
      
             @Override
             protected void setEquipmentBasedOnDifficulty(DifficultyInstance difficulty) {
                 this.setCurrentItemOrArmor(0, new ItemStack(Items.diamond_sword));
             }
      
             @Override
             protected String getLivingSound()
             {
                 return null;
             }
      
             @Override
             protected String getHurtSound() {
                 return "mob.villager.hit";
             }
      
             @Override
             protected String getDeathSound() {
                 return "mob.villager.death";
             }
         }
      

      edit : topic anglophone : http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2625390-addspawn-minimum-maximum</spawnlistentry>

      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

        Salut,
        C’est en effet assez étrange.
        Je viens de regarder du côté du biome hell, il y a ça :

        this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityGhast.class, 50, 4, 4));
        this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityPigZombie.class, 100, 4, 4));
        this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityMagmaCube.class, 1, 4, 4));
        

        Visiblement les ghast sont sensé spawner par groupe de 4, pourtant en général il n’y en a qu’un seul. C’est surement car getMaxSpawnedInChunk retourne 1 dans le cas du ghast.

        Mais chez toi il y a 4, donc ça devrait fonctionner. Essayes de retirer la fonction getMaxSpawnedInChunk pour voir ?

        1 réponse Dernière réponse Répondre Citer 0
        • Dylem
          Dylem dernière édition par

          @‘robin4002’:

          Salut,
          C’est en effet assez étrange.
          Je viens de regarder du côté du biome hell, il y a ça :

                 this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityGhast.class, 50, 4, 4));
                 this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityPigZombie.class, 100, 4, 4));
                 this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityMagmaCube.class, 1, 4, 4));
          

          Visiblement les ghast sont sensé spawner par groupe de 4, pourtant en général il n’y en a qu’un seul. C’est surement car getMaxSpawnedInChunk retourne 1 dans le cas du ghast.

          Mais chez toi il y a 4, donc ça devrait fonctionner. Essayes de retirer la fonction getMaxSpawnedInChunk pour voir ?

          Salut, il me semble que la valeur de getMaxSpawnedInChunk est 4 de base, héritée d’EntityCreature. J’ai essayé de l’enlever et même de la mettre à 32, mais je tombais toujours sur des solitaires. Encore plus bizarre,
          j’ai mis la valeur du minimum à 4 :

          EntityRegistry.addSpawn(EntitySchiff.class, 30, 4, 4, EnumCreatureType.MONSTER, BiomeGenBase.hell);
          

          Et ils spawnent bien en groupe de 4 ! Alors je me suis dit :

          • soit c’est le problème de forge
          • soit les groupes doivent être de 4 minimum

          J’ai donc modifié les valeurs à 4, 5 et j’ai croisé un solitaire et des groupes de 2 !
          J’ai ensuite essayé avec 5, 5 et je n’ai croisé que des groupes de 5 !

          Conclusion : Les deux valeurs doivent être égales sinon ça ne fonctionne pas… Ou peut-être qu’il y a moyen de contourner cela ?

          EDIT : J’ai aussi essayé à 3, 3 et ça ne fonctionne pas… Le minimum semble être 4…

          Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

          1 réponse Dernière réponse Répondre Citer 0
          • Dylem
            Dylem dernière édition par

            Bon je fais un autre post, parce que ça remet en cause mon précédent post… En fait j’ai croisé un solitaire avec les paramètres à 4, 4 donc ça ne fonctionne pas… 😕 Peut-être que les autres n’arrivent pas à spawn pour x ou y raison ?

            Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

              ça doit surement être ça.
              Après maintenant pourquoi le min max est planté, surement un problème de minecraft, cette fonction de forge ne fait que utiliser la fonction add des biomes devant du code de Mojang.

              1 réponse Dernière réponse Répondre Citer 0
              • Dylem
                Dylem dernière édition par

                Merci pour l’aide en tout cas, j’ai trouvé un moyen de contourner le problème.

                Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB