MFF

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

    Génération

    Planifier Épinglé Verrouillé Déplacé Résolu 1.9.x et 1.10.x
    1.10.x
    16 Messages 4 Publieurs 2.3k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Salut,
      Tu as une fonction en double dont une avec les mauvais arguments, il y a une variable qui doit être remplacé par un getter et tu as un point là où tu devrais avoir une virgule. Code corrigé :

      package fr.topycraft.ModPackTopyCraft.worldgeneration;
      
      import net.minecraft.block.Block;
      import net.minecraft.init.Blocks;
      import net.minecraft.world.World;
      import net.minecraft.world.chunk.IChunkGenerator;
      import net.minecraft.world.chunk.IChunkProvider;
      import net.minecraft.world.gen.feature.WorldGenMinable;
      import java.util.Random;
      import fr.topycraft.ModPackTopyCraft.blocks.ModPackTopyCraftBlocks;
      
      public class WorldGeneration implements net.minecraftforge.fml.common.IWorldGenerator
      {
      @Override
      public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
      {
      switch(world.provider.getDimensionId())
      {
      case -1:
      generateNether(world, random, chunkX * 16, chunkZ * 16);
      break;
      
      case 0:
      generateSurface(world, random, chunkX * 16, chunkZ * 16);
      break;
      
      case 1:
      generateEnd(world, random, chunkX * 16, chunkZ * 16);
      break;
      }
      }
      
      private void generateEnd(World world, Random random, int x, int z) {
      
      }
      
      private void generateSurface(World world, Random random, int x, int z) {
      
      }
      
      private void generateNether(World world, Random random, int x, int z) {
      
      this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 1, 6, 12);
      }
      
      public void addOreSpawn(Block block, int metadata, Block target, World world1, Random random1, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
      {
      assert maxY > minY ;
      assert maxX > 0 && maxX <= 16 ;
      assert minY > 0 ;
      assert maxY < 256 && maxY > 0 ;
      assert maxZ > 0 && maxZ <= 16 ;
      
      for(int i1 = 0; i1 < chancesToSpawn; i1++)
      {
      int posY = random1.nextInt(128);
      
      if((posY <= maxY) && (posY >= minY))
      {
      (new WorldGenMinable(block, metadata, maxVeinSize, target)).generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
      }
      }
      }
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • LeBossMax2L Hors-ligne
        LeBossMax2
        dernière édition par

        Salut, les deux premières erreur : c’est écrit en anglais, donc bon c’est pas compliqué : tu peux pas accéder à dimensionID donc utilise plutôt getDimensionID(). Et le generate à besoin d’un BlockPosdonc tu dois faire new BlockPos(calculdex, calculdey, calculdez).
        Pour le dernier problème, il faut utiliser BlockMatcher.

        EDIT: Robin, il me semble que GenWorldMinable a maintenant besoin d’un predicate à la place du block, donc c’est pas target qu’il faut mettre mais BlockMatcher (une class qui fait un predicate à partir d’un block).

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

          Bonsoir tous le monde je viens de reussir grâce à vous a supprimer tous les bugs mais né s’en moins j’ai un problème lors de la génération le bloc n’apparait à aucun endroit dans le monde.

          package fr.topycraft.ModPackTopyCraft.worldgeneration;
          
          import net.minecraft.block.Block;
          import net.minecraft.init.Blocks;
          import net.minecraft.util.math.BlockPos;
          import net.minecraft.world.World;
          import net.minecraft.world.chunk.IChunkGenerator;
          import net.minecraft.world.chunk.IChunkProvider;
          import net.minecraft.world.gen.feature.WorldGenMinable;
          import java.util.Random;
          import fr.topycraft.ModPackTopyCraft.blocks.ModPackTopyCraftBlocks;
          import joptsimple.internal.Classes;
          
          public class WorldGeneration implements net.minecraftforge.fml.common.IWorldGenerator
          {
             @Override
             public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
             {
                 switch(world.provider.getDimension())
                 {
                 case -1:
                     generateNether(world, random, chunkX * 16, chunkZ * 16);
                     break;
          
                 case 0:
                     generateSurface(world, random, chunkX * 16, chunkZ * 16);
                     break;
          
                 case 1:
                     generateEnd(world, random, chunkX * 16, chunkZ * 16);
                     break;
                 }
             }
          
             private void generateEnd(World world, Random random, int x, int z) {
          
             }
          
             private void generateSurface(World world, Random random, int x, int z) {
          
             }
          
             private void generateNether(World world, Random random, int x, int z) {
          
                 this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 20, 6, 12);
             }
          
             public void addOreSpawn(Block block, int metadata, Block target, World world1, Random random1, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
             {
                  assert maxY > minY ;
                  assert maxX > 0 && maxX <= 16 ;
                  assert minY > 0 ;
                  assert maxY < 256 && maxY > 0 ;
                  assert maxZ > 0 && maxZ <= 16 ;
          
                 for(int i1 = 0; i1 < chancesToSpawn; i1++)
                 {
                     int posY = random1.nextInt(128);
          
                     if((posY <= maxY) && (posY >= minY))
                     {
                      new WorldGenMinable(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS.getDefaultState() ,maxVeinSize);
                         generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
                     }
                 }
            }
          
          private void generate(World world1, Random random1, int x, int posY, int z) {
          
          }
          }
          

          Voici le code ci-dessus bonne soirée à tous

          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

            Sachant que tu essaies de générer le bloc dans la dimension -1 (nether), le résultat n’est pas étonnant.

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

              Il me suffit de changer les world1 par world0 pour faire générer dans le monde normal ?

              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

                Non, il faut mettre la ligne :
                this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 20, 6, 12);
                Dans generateSurface au lieu de generateNether.

                Et d’ailleurs dans ta fonction addOreSpawn faudrait mettre block.getDefaultState() au lieu de ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS.getDefaultState()

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

                  Après avoir réaliser tous sa les blocks n’apparaisse pas quand meme .

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

                    Tu peux m’expliquer pourquoi, après avoir fait new WorldGenMinable tu appelles une fonction generate vide au lieu d’appeler la fonction du WorldGenMinable ? En tous cas c’est ça le dernier problème.

                    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
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Ho, je n’avais même pas remarqué x)

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

                        En faite cette ligne de code me demande de crée la méthode generate

                                    new WorldGenMinable(block.getDefaultState() ,maxVeinSize);
                                       generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
                        

                        Donc je crée sa méthode et sa me donne cela

                        private void generate(World world1, Random random1, int i, int posY, int j)
                        
                        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

                          new WorldGenMinable(block.getDefaultState() ,maxVeinSize).generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
                          Il faut un . et non un ;

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

                            Voila si je met un point le problème. 

                            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

                              On ne voit pas tout le message d’erreur.

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

                                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

                                  Replaces par :
                                  generate(world1, random1, new BlockPos(blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16)));

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

                                  MINECRAFT FORGE FRANCE © 2024

                                  Powered by NodeBB