MFF

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

    Générations de minerais

    Planifier Épinglé Verrouillé Déplacé La génération & les dimensions
    1.6.x
    69 Messages 17 Publieurs 28.6k Vues 2 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.
    • GuguG Hors-ligne
      Gugu
      dernière édition par

      Screen l’erreur eclipse et envoie le

      "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
      ― Jordan B. Peterson

      1 réponse Dernière réponse Répondre Citer 0
      • FlowF Hors-ligne
        Flow
        dernière édition par robin4002

        0_1537565556918_probleme1.png Voici

        Oui ce gif est drôle.

        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

          Il créer une méthode generateNether comme pour l’end et l’overworld :

          private void generateNether(World world, int x, int z, Random rand)
          {
          }
          
          1 réponse Dernière réponse Répondre Citer 0
          • FlowF Hors-ligne
            Flow
            dernière édition par

            Super sa à régler le problème mais mon minerai dans l’end n’est toujours pas génerer ! 😞

            Oui ce gif est drôle.

            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

              Je suis vraiment désolé 😕
              Je suis parti faire des tests sur eclipse, et je viens de me rendre compte qu’il y a une grosse faute dans le tutoriel.
              -1 = Nether et 1 = end, et non l’inverse :/. Je viens d’éditer le tutoriel.

              On a donc :

              switch(world.provider.dimensionId)
              {
              case -1:
              this.generateNether(world, chunkX * 16, chunkZ * 16, random);
              case 0:
              this.generateSurface(world, chunkX * 16, chunkZ * 16, random);
              case 1:
              this.generateEnd(world, chunkX * 16, chunkZ * 16, random);
              }
              

              Ensuite pour la génération seulement en surface, le problème du code que je t’ai donné, c’est qu’il va que générer si le random tombe sur un cas où le bloc juste au dessus est de l’air, ce qui est très rare.

              Donc je te propose une meilleur solution, si le bloc au dessus du minerai n’est pas de l’air, il monte de 1 la coordonné y où il doit se générer. Ainsi les minerais ne se génèrent que en surface.

              private void generateEnd(World world, int x, int z, Random rand)
              {
              for(int i = 0; i < 4; i++)
              {
              (new WorldGenSurfaceMinable(ModTutoriel.BlockTutorial.blockID, 0, 12, Block.whiteStone.blockID)).generate(world, rand, x + rand.nextInt(16), rand.nextInt(128), z + rand.nextInt(16));
              }
              }
              

              Et la classe WorldGenSurfaceMinable :

              package tutoriel.common;
              
              import java.util.Random;
              
              import net.minecraft.block.Block;
              import net.minecraft.util.MathHelper;
              import net.minecraft.world.World;
              import net.minecraft.world.gen.feature.WorldGenerator;
              
              public class WorldGenSurfaceMinable extends WorldGenerator
              {
              private int minableBlockId;
              private int minableBlockMeta = 0;
              
              private int numberOfBlocks;
              
              private int blockToReplace;
              
              public WorldGenSurfaceMinable(int id, int number)
              {
              this(id, number, Block.whiteStone.blockID);
              }
              
              public WorldGenSurfaceMinable(int id, int number, int target)
              {
              this.minableBlockId = id;
              this.numberOfBlocks = number;
              this.blockToReplace = target;
              }
              
              public WorldGenSurfaceMinable(int id, int meta, int number, int target)
              {
              this(id, number, target);
              this.minableBlockMeta = meta;
              }
              
              public boolean generate(World world, Random rand, int x, int y, int z)
              {
              float f = rand.nextFloat() * (float)Math.PI;
              double d0 = (double)((float)(x + 8) + MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
              double d1 = (double)((float)(x + 8) - MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
              double d2 = (double)((float)(z + 8) + MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
              double d3 = (double)((float)(z + 8) - MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
              double d4 = (double)(y + rand.nextInt(3) - 2);
              double d5 = (double)(y + rand.nextInt(3) - 2);
              
              for (int l = 0; l <= this.numberOfBlocks; ++l)
              {
              double d6 = d0 + (d1 - d0) * (double)l / (double)this.numberOfBlocks;
              double d7 = d4 + (d5 - d4) * (double)l / (double)this.numberOfBlocks;
              double d8 = d2 + (d3 - d2) * (double)l / (double)this.numberOfBlocks;
              double d9 = rand.nextDouble() * (double)this.numberOfBlocks / 16.0D;
              double d10 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
              double d11 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
              int i1 = MathHelper.floor_double(d6 - d10 / 2.0D);
              int j1 = MathHelper.floor_double(d7 - d11 / 2.0D);
              int k1 = MathHelper.floor_double(d8 - d10 / 2.0D);
              int l1 = MathHelper.floor_double(d6 + d10 / 2.0D);
              int i2 = MathHelper.floor_double(d7 + d11 / 2.0D);
              int j2 = MathHelper.floor_double(d8 + d10 / 2.0D);
              
              while(!world.isAirBlock(i1, j1 + 2, k1))
              {
              j1++;
              }
              for (int k2 = i1; k2 <= l1; ++k2)
              {
              double d12 = ((double)k2 + 0.5D - d6) / (d10 / 2.0D);
              
              if (d12 * d12 < 1.0D)
              {
              for (int l2 = j1; l2 <= i2; ++l2)
              {
              double d13 = ((double)l2 + 0.5D - d7) / (d11 / 2.0D);
              
              if (d12 * d12 + d13 * d13 < 1.0D)
              {
              for (int i3 = k1; i3 <= j2; ++i3)
              {
              double d14 = ((double)i3 + 0.5D - d8) / (d10 / 2.0D);
              
              Block block = Block.blocksList[world.getBlockId(k2, l2, i3)];
              if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D && (block != null && block.isGenMineableReplaceable(world, k2, l2, i3, this.blockToReplace)))
              {
              world.setBlock(k2, l2, i3, this.minableBlockId, minableBlockMeta, 2);
              }
              }
              }
              }
              }
              }
              }
              return true;
              }
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • FlowF Hors-ligne
                Flow
                dernière édition par

                Merci sa marche !! J’ai un soucis hors-sujet , j’ai parfois mes images de blocs et d’item qui disparaisse 😞

                Oui ce gif est drôle.

                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

                  Créer un nouveau poste ici : http://www.minecraftforgefrance.fr/forumdisplay.php?fid=34
                  Et soit plus précis, les images qui disparaît c’est trop vague :s

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

                    Bonjours, je ne sais pas si cela a été écrit dans les questions, mais je n’arrive pas a faire générer des minerais dans le nether j’ai essayer beaucoup de chose en changeant le “WorldGenMinable” en “WorldGenMinableNether” en modifiant des ligne, mais je n’y arrive pas, si quelqu’un peut m’aider je lui en serai extrêmement reconnaissant. Si vous pouvez m’aidez à en faire générer aussi dans l’End se serai génial merci encore

                    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

                      for(int i = 0; i < probabilité; i++)
                      {
                      (new WorldGenMinable(id du bloc à générer, metadata du bloc à générer, taille maximum d un filon, id du bloc qui va être remplacé)).generate(world, rand, x + rand.nextInt(16), rand.nextInt(hauteur maximum), z + rand.nextInt(16));
                      }
                      

                      id du bloc qui va être remplacé
                      Il faut que tu mettes la nether rack ici ou la soul sand, et pour l’end l’endstone.

                      1 réponse Dernière réponse Répondre Citer 0
                      • isadorI Hors-ligne
                        isador Moddeurs confirmés Modérateurs
                        dernière édition par

                        on peut faire en sorte que cette génération s’applique a un bloc? car je veux faire en sorte que mon bloc GeneratingMineral soit a trois bloc au dessus de mon bloc de minerais (tile entity), et qu’il teste si il y a le bloc sous lui, sinon il attend x minutes puis en genere un autre (le même bloc)

                        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

                          @‘isador34’:

                          on peut faire en sorte que cette génération s’applique a un bloc? car je veux faire en sorte que mon bloc GeneratingMineral soit a trois bloc au dessus de mon bloc de minerais (tile entity), et qu’il teste si il y a le bloc sous lui, sinon il attend x minutes puis en genere un autre (le même bloc)

                          Il faut faire un WorldGenMinable custom, reprend le même que celui de minecraft et en dessous de :
                          world.setBlock(k2, l2, i3, this.minableBlockId, minableBlockMeta, 2);
                          Il te suffit d’ajouter :
                          world.setBlock(k2, l2 + 3, i3, ClassePrincipale.GeneratingMineral.blockID, minableBlockMeta, 2);

                          1 réponse Dernière réponse Répondre Citer 0
                          • isadorI Hors-ligne
                            isador Moddeurs confirmés Modérateurs
                            dernière édition par

                            oki merci

                            problème:

                            
                            package Mineralherb;
                            
                            import java.util.Random;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.util.MathHelper;
                            import net.minecraft.world.World;
                            import net.minecraft.world.chunk.IChunkProvider;
                            import net.minecraft.world.gen.feature.WorldGenMinable;
                            import cpw.mods.fml.common.IWorldGenerator;
                            
                            public abstract class WorldGeneratorMineral implements IWorldGenerator {
                            
                            private int minableBlockId;
                            private int minableBlockMeta;
                            private double numberOfBlocks;
                            
                            public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
                            {
                            float f = par2Random.nextFloat() * (float)Math.PI;
                            double d0 = (double)((float)(par3 + 8) + MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
                            double d1 = (double)((float)(par3 + 8) - MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
                            double d2 = (double)((float)(par5 + 8) + MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
                            double d3 = (double)((float)(par5 + 8) - MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
                            double d4 = (double)(par4 + par2Random.nextInt(3) - 2);
                            double d5 = (double)(par4 + par2Random.nextInt(3) - 2);
                            
                            for (int l = 0; l <= this.numberOfBlocks; ++l)
                            {
                            double d6 = d0 + (d1 - d0) * (double)l / (double)this.numberOfBlocks;
                            double d7 = d4 + (d5 - d4) * (double)l / (double)this.numberOfBlocks;
                            double d8 = d2 + (d3 - d2) * (double)l / (double)this.numberOfBlocks;
                            double d9 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D;
                            double d10 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
                            double d11 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
                            int i1 = MathHelper.floor_double(d6 - d10 / 2.0D);
                            int j1 = MathHelper.floor_double(d7 - d11 / 2.0D);
                            int k1 = MathHelper.floor_double(d8 - d10 / 2.0D);
                            int l1 = MathHelper.floor_double(d6 + d10 / 2.0D);
                            int i2 = MathHelper.floor_double(d7 + d11 / 2.0D);
                            int j2 = MathHelper.floor_double(d8 + d10 / 2.0D);
                            
                            for (int k2 = i1; k2 <= l1; ++k2)
                            {
                            double d12 = ((double)k2 + 0.5D - d6) / (d10 / 2.0D);
                            
                            if (d12 * d12 < 1.0D)
                            {
                            for (int l2 = j1; l2 <= i2; ++l2)
                            {
                            double d13 = ((double)l2 + 0.5D - d7) / (d11 / 2.0D);
                            
                            if (d12 * d12 + d13 * d13 < 1.0D)
                            {
                            for (int i3 = k1; i3 <= j2; ++i3)
                            {
                            double d14 = ((double)i3 + 0.5D - d8) / (d10 / 2.0D);
                            
                            Block block = Block.blocksList[par1World.getBlockId(k2, l2, i3)];
                            if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D && (block != null && block.isGenMineableReplaceable(par1World, k2, l2, i3, this.blockToReplace)))
                            {
                            par1World.setBlock(k2, l2, i3, this.minableBlockId, minableBlockMeta, 2);
                            World.setBlock(k2, l2 + 3, i3, 3005, minableBlockMeta, 2);
                            }
                            }
                            }
                            }
                            }
                            }
                            }
                            
                            return true;
                            }
                            
                            }
                            
                            

                            World.setBlock(k2, l2 + 3, i3, 3005, minableBlockMeta, 2); erreur: Cannot make a static reference to the non-static method setBlock(int, int, int, int, int, int) from the type World

                            1 réponse Dernière réponse Répondre Citer 0
                            • jglrxavpokJ Hors-ligne
                              jglrxavpok Modérateurs
                              dernière édition par

                              Remplace World par par1World, c’est juste du Java là…
                              Si tu en as besoin: Tutoriels pour le Java

                              Modérateur sur MFF. 
                              Mon Github: http://github.com/jglrxavpok
                              Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                              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

                                En effet c’est la base de java ça …
                                C’est pas compliqué en plus :
                                Dans ta fonction generate :
                                public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
                                Le paramètre World à le nom par1World, donc il faut utiliser :
                                par1World.setBlock(…
                                Si la fonction était :
                                public boolean generate(World nimportequoi, Random par2Random, int par3, int par4, int par5)
                                alors la fonction serait :
                                nimportequoi.setBlock(…

                                C’est juste un exemple pour monter que le nom du paramètre peut être n’importe quoi, ça change rien, mais pour ne pas se perdre, on utilise quelque chose qui est significatif de ce que c’est. C’est d’ailleurs pour ça que je remplace les par2, par3, par4 par x, y, z qui sont beaucoup plus significatif.

                                1 réponse Dernière réponse Répondre Citer 0
                                • isadorI Hors-ligne
                                  isador Moddeurs confirmés Modérateurs
                                  dernière édition par

                                  oui excuser moi j’ai honte. une fois que j’ai créer ma classe de génération comment faire pour qu’elle s’applique a mon bloc?

                                  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

                                    Dans :

                                    for(int i = 0; i < probabilité; i++)
                                    {
                                    (new WorldGenMinable(id du bloc à générer, metadata du bloc à générer, taille maximum d un filon, id du bloc qui va être remplacé)).generate(world, rand, x + rand.nextInt(16), rand.nextInt(hauteur maximum), z + rand.nextInt(16));
                                    }
                                    

                                    Tu remplace WorldGenMinable par ta classe

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • isadorI Hors-ligne
                                      isador Moddeurs confirmés Modérateurs
                                      dernière édition par

                                      Ok merci

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • isadorI Hors-ligne
                                        isador Moddeurs confirmés Modérateurs
                                        dernière édition par

                                        pour “id du bloc qui va être remplacé” dans le for, c’est le quel pour l’ai car Block.air.blockID marche pas

                                        et remplacer WorldGenMinable par la classe de mon bloc ne marche pas j’ai comme erreur: The constructor GeneratingMineral(int, int, int, int) is undefined

                                        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

                                          Il n’y a pas de variable pour le bloc d’air en 1.6. Essaye avec 0, mais je suis pas sur que ça fonctionne.
                                          Fait voir ton WorldGenMinable custom ?

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • isadorI Hors-ligne
                                            isador Moddeurs confirmés Modérateurs
                                            dernière édition par

                                            @‘robin4002’:

                                            Il n’y a pas de variable pour le bloc d’air en 1.6. Essaye avec 0, mais je suis pas sur que ça fonctionne.
                                            Fait voir ton WorldGenMinable custom ?

                                            
                                            private void generateSurface(World world, int x, int z, Random rand)
                                            {
                                            for(int i = 0; i < probabilité; i++)
                                            {
                                            (new GeneratingMineral(MineralherbMain.coppermineral.blockID, 0, 1,0)).generate(world, rand, x + rand.nextInt(16), rand.nextInt(256), z + rand.nextInt(16));
                                            }
                                            }
                                            
                                            

                                            et la classe GeneratingMineral:

                                            
                                            package Mineralherb;
                                            
                                            import java.util.Random;
                                            
                                            import cpw.mods.fml.client.FMLClientHandler;
                                            import cpw.mods.fml.relauncher.Side;
                                            import cpw.mods.fml.relauncher.SideOnly;
                                            import net.minecraft.block.Block;
                                            import net.minecraft.block.material.Material;
                                            import net.minecraft.client.renderer.texture.IconRegister;
                                            import net.minecraft.creativetab.CreativeTabs;
                                            import net.minecraft.tileentity.TileEntity;
                                            import net.minecraft.util.Icon;
                                            import net.minecraft.util.MathHelper;
                                            import net.minecraft.world.World;
                                            
                                            public class GeneratingMineral extends Block {
                                            
                                            private Icon GM1;
                                            private Icon GM2;
                                            private int minableBlockId;
                                            private int minableBlockMeta;
                                            private int blockToReplace;
                                            private double numberOfBlocks;
                                            
                                            public GeneratingMineral(int id)
                                            {
                                            super(id, Material.rock);
                                            this.setCreativeTab(MineralherbMain.MineralherbCreativeTabs);
                                            
                                            }
                                            public void registerIcons(IconRegister iconRegister)
                                            {
                                            GM1 = iconRegister.registerIcon("mineralherb:noninvisi");
                                            GM2 = iconRegister.registerIcon("mineralherb:invisi");
                                            
                                            }
                                            @SideOnly(Side.CLIENT)
                                            public Icon getIcon(int side, int metadata)
                                            {
                                            if (FMLClientHandler.instance().getClient().thePlayer.capabilities.isCreativeMode)
                                            {
                                            return GM1;
                                            }
                                            else
                                            {
                                            return GM2;
                                            }
                                            }
                                            public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
                                            {
                                            float f = par2Random.nextFloat() * (float)Math.PI;
                                            double d0 = (double)((float)(par3 + 8) + MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
                                            double d1 = (double)((float)(par3 + 8) - MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
                                            double d2 = (double)((float)(par5 + 8) + MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
                                            double d3 = (double)((float)(par5 + 8) - MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
                                            double d4 = (double)(par4 + par2Random.nextInt(3) - 2);
                                            double d5 = (double)(par4 + par2Random.nextInt(3) - 2);
                                            
                                            for (int l = 0; l <= this.numberOfBlocks; ++l)
                                            {
                                            double d6 = d0 + (d1 - d0) * (double)l / (double)this.numberOfBlocks;
                                            double d7 = d4 + (d5 - d4) * (double)l / (double)this.numberOfBlocks;
                                            double d8 = d2 + (d3 - d2) * (double)l / (double)this.numberOfBlocks;
                                            double d9 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D;
                                            double d10 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
                                            double d11 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
                                            int i1 = MathHelper.floor_double(d6 - d10 / 2.0D);
                                            int j1 = MathHelper.floor_double(d7 - d11 / 2.0D);
                                            int k1 = MathHelper.floor_double(d8 - d10 / 2.0D);
                                            int l1 = MathHelper.floor_double(d6 + d10 / 2.0D);
                                            int i2 = MathHelper.floor_double(d7 + d11 / 2.0D);
                                            int j2 = MathHelper.floor_double(d8 + d10 / 2.0D);
                                            
                                            for (int k2 = i1; k2 <= l1; ++k2)
                                            {
                                            double d12 = ((double)k2 + 0.5D - d6) / (d10 / 2.0D);
                                            
                                            if (d12 * d12 < 1.0D)
                                            {
                                            for (int l2 = j1; l2 <= i2; ++l2)
                                            {
                                            double d13 = ((double)l2 + 0.5D - d7) / (d11 / 2.0D);
                                            
                                            if (d12 * d12 + d13 * d13 < 1.0D)
                                            {
                                            for (int i3 = k1; i3 <= j2; ++i3)
                                            {
                                            double d14 = ((double)i3 + 0.5D - d8) / (d10 / 2.0D);
                                            
                                            Block block = Block.blocksList[par1World.getBlockId(k2, l2, i3)];
                                            if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D && (block != null && block.isGenMineableReplaceable(par1World, k2, l2, i3, this.blockToReplace)))
                                            {
                                            par1World.setBlock(k2, l2, i3, this.minableBlockId, minableBlockMeta, 2);
                                            par1World.setBlock(k2, l2 + 3, i3, 3005, minableBlockMeta, 2);
                                            }
                                            }
                                            }
                                            }
                                            }
                                            }
                                            }
                                            
                                            return true;
                                            }
                                            
                                            }
                                            
                                            
                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 3 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB