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.
    • G Hors-ligne
      Galwed
      dernière édition par

      Bonjour tous le monde j’ai trois erreurs dans mon code plusieurs personnes mon déjà aider a régler cela mais sa ne marche toujours pas je vous laisse mon code est mes trois erreurs.

      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 {
      
      public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
      {
      
      {
      switch(world.provider.dimensionId)
      
      {
      
      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));
      
      }
      
      }
      
         }
      
      @Override
      public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
      IChunkProvider chunkProvider) {
      
      }
      }
      

      Mes trois erreurs sont écrite juste ci-dessous.
      Je vous remercie d’avance de m’avoir aider bonne soirée.

      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

        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