MFF

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

    Génération minerais

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    19 Messages 4 Publieurs 809 Vues 3 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.
    • OverSquidO Hors-ligne
      OverSquid
      dernière édition par OverSquid

      Bonjour, j’ai suivi ce tuto mais il semble que cela ne fonctionne pas pour moi :
      https://www.minecraftforgefrance.fr/topic/618/générer-des-minerais/11

      Pourtant je n’ai pas d’erreurs indiquées :

      package com.hypala.hypalacore.common;
      
      import java.util.Random;
      
      import cpw.mods.fml.common.IWorldGenerator;
      import net.minecraft.block.Block;
      import net.minecraft.item.Item;
      import net.minecraft.world.World;
      import net.minecraft.world.chunk.IChunkProvider;
      import net.minecraft.world.gen.feature.WorldGenMinable;
       
      public class WorldGeneration implements IWorldGenerator 
      {
      
          private int x;
          private int z;
          @Override
          public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
          {
              {
                  switch(world.provider.dimensionId)
                  {
                      case 0:
                      generateSurface(world, random, chunkX * 16, chunkZ * 16);
                      break;
                  }
              }   
          }
      
          private void generateSurface(World world, Random random, int i, int j)
          {
              this.addOreSpawn(HypalaCore.aithiaOre, 0, 0001, world, random, x, z, 16, 16, 6, 50, 3, 20);
          }
          private void addOreSpawn(Block aithiaOre, int metadata, int i, World world, Random random, int x2, int z2, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
          
          {
              assert maxY > minY : "La position Y maximum doit être supérieure à la position Y minimum.";
              assert maxX > 0 && maxX <= 16 : "X doit se trouver entre 0 et 16.";
              assert minY > 0 : "La position Y minimum doit être supérieure à 0.";
              assert maxY < 256 && maxY > 0 : "La position Y maximum doit se trouver entre 0 et 256.";
              assert maxZ > 0 && maxZ <= 16 : "Z doit se trouver entre 0 et 16.";
           
              for(int i1 = 0; i1 < chancesToSpawn; i1++)
              {
                  int posY = random.nextInt(128);
           
                  if((posY <= maxY) && (posY >= minY))
                  {
           
                  }
              }   
          }
      
          
      
      
      
      }
      

      Merci pour votre aide et votre temps je vient de débuter et je ne suis pas familier avec le java

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

        yo, ton code est incomplet tu as grillé des etapes x) deplus tes 2 variables x et y en private au dessus sont inutile

            private void addOreSpawn(Block aithiaOre, int metadata, int i, World world, Random random, int x2, int z2, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
            {
                assert maxY > minY : "La position Y maximum doit être supérieure à la position Y minimum.";
                assert maxX > 0 && maxX <= 16 : "X doit se trouver entre 0 et 16.";
                assert minY > 0 : "La position Y minimum doit être supérieure à 0.";
                assert maxY < 256 && maxY > 0 : "La position Y maximum doit se trouver entre 0 et 256.";
                assert maxZ > 0 && maxZ <= 16 : "Z doit se trouver entre 0 et 16.";
        
            
                for(int i1 = 0; i1 < chancesToSpawn; i1++)
                {
                    int posY = random.nextInt(128);
        
                    if((posY <= maxY) && (posY >= minY))
                    {
                        // I think something is missing here x)
                    }
                }   
            }
        

        en voyant ce code tu ne crois pas que il manque quelque chose pour dire a minecraft de posé tel block a tel endroit ?

        OverSquidO 1 réponse Dernière réponse Répondre Citer 0
        • ZunF1xZ Hors-ligne
          ZunF1x
          dernière édition par

          Tien pour t’aider voici ce tutoriel

          OverSquidO 1 réponse Dernière réponse Répondre Citer 0
          • OverSquidO Hors-ligne
            OverSquid @SpyMan
            dernière édition par OverSquid

            @SpyMan Oui effectivement, c’est bien ce code à mettre ?

            (new WorldGenMinable(block, metadata, maxVeinSize, target)).generate(world, random, blockXPos + random.nextInt(16), posY, blockZPos + random.nextInt(16)); 
            

            Le problème c’est que lorsque je met ce code et que je retire les variables x et y j’ai des erreurs :

            4b81187b-0e5a-42b8-b593-8422acd8a62b-image.png

            Edit: J’ai également des erreurs avec ce code où il me demande de remplacer le i en i1 :

            for(int i = 0; i < chancesToSpawn; i++)
            
            1 réponse Dernière réponse Répondre Citer 0
            • OverSquidO Hors-ligne
              OverSquid @ZunF1x
              dernière édition par

              @Askipie Le tutoriel que tu me donne je l’ai déjà vu mais ce n’est pas la même technique que dans le tutoriel que j’ai utilisé

              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

                Et surtout la qualité des tutoriels de checconio est vraiment … très moyenne.
                Tous les problèmes que tu as sont juste des soucis de nommage de paramètre.

                Dans la définition de la fonction generateSurface i et j devrait être x et z.

                Dans la fonction addOreSpawn, aithiaOre devrait être Block.
                Et le reste c’est le même genre de problème.

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

                  J’ai réussi à régler quelques erreurs mais il en reste deux :

                  59a2be97-5321-41a6-9436-8c34c052b43f-image.png

                  Une où la variable i qui définit le taux de spawn n’est pas acceptée car il me dit que cette variable existe déjà mais si je remplace i par une autre lettre j’ai toujours l’erreur

                  Et une ou cette ligne de code pose problème :

                  (new WorldGenMinable(aithiaOre, metadata, maxVeinSize, target)).generate(world, random, blockXPos + random.nextInt(16), posY, blockZPos + random.nextInt(16));
                  

                  Ce sont : target , blockXPos et posYblockZPos qui causent problèmes, je ne sais pas quoi mettre au deux derniers mais au target lorsque je met stone comme le reste du code l’erreur persiste

                  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

                    Tu as au moins suivis correctement le tutoriel ?

                    Ta déclaration de ta fonction addOreSpawn devrait être comme ça :
                    public void addOreSpawn(Block block, int metadata, Block target, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)

                    Et la ligne où tu l’appel devrait être :
                    this.addOreSpawn(HypalaCore.aithiaOre, 0, Blocks.stone, world, random, x, z, 16, 16, 6, 50, 3, 20);

                    OverSquidO 1 réponse Dernière réponse Répondre Citer 0
                    • OverSquidO Hors-ligne
                      OverSquid @robin4002
                      dernière édition par OverSquid

                      J’avais fait comme ça avant et j’avais une erreur lorsque je fesait comme ça, je viens de le refaire et j’ai toujours une erreur :

                      cfbacbfd-a1ae-4116-a887-5cd62f7f1e04-image.png

                      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

                        Vires ce 0001 qui n’a aucun sens et mets Blocks.stone comme je l’ai indiqué.

                        OverSquidO 1 réponse Dernière réponse Répondre Citer 0
                        • OverSquidO Hors-ligne
                          OverSquid @robin4002
                          dernière édition par

                          Ce message a été supprimé !
                          1 réponse Dernière réponse Répondre Citer 0
                          • OverSquidO Hors-ligne
                            OverSquid
                            dernière édition par

                            C’est bon j’ai mis le code, j’ai du relancer eclipse car ça ne voulait pas s’actualiser et ça marche, saurais tu ou mettre le code pour rajouter des blocs à générer ?

                            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

                              Toujours dans la fonction generateSurface, il suffit de mettre un nouvel appel à la fonction addOreSpawn.

                              OverSquidO 1 réponse Dernière réponse Répondre Citer 0
                              • OverSquidO Hors-ligne
                                OverSquid @robin4002
                                dernière édition par

                                @robin4002 Ok je vais tester ça merci de ton aide

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

                                  @robin4002 J’aurais juste une dernière question : peut on mettre des pourcentages dans le taux de spawn car j’essaye mais ça ne semble pas fonctionner

                                  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, tu ne peux pas mettre un pourcentage comme argument de fonction.

                                    Si tu veux descendre plus bas que un, il faut ajouter un random.

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

                                      C’est à dire ?

                                      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 robin4002

                                        if(random.nextInt(2) == 0) -> génère un nombre entre 0 et 2 (exclut) donc soit 1 soit 0. Un if comme cela donne une chance sur deux (ou encore 50% de chance).
                                        if(random.nextInt(3) == 0) -> génère un nombre entre 0 et 3 (exclut) donc soit 2, soit 1 soit 0. Un if comme cela donne une chance sur trois (ou encore 33,33333 % de chance).

                                        etc.

                                        C’est de la simple logique.

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

                                          Ok merci

                                          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