Génération de minerais dans un multiverse



  • Hello 😄

    je sais qu'en ce moment je créer beaucoup de topic mais j'ai énormément de problèmes.

    Bref, j'ai voulus créer un monde multiverse avec les minerais de mon mod mais problème: il n'y a pas les minerais dans la map

    J'ai essayer avec un seed mais pareil


  • Administrateurs

    Il suffit de retirer la condition ou le switch avec l'id de la dimension dans le générateur.



  • dans le mod ou avec la commande ?

    comme par exemple /mv create test ?


  • Rédacteurs

    Dans le mod



  • donc j'enlève :

    switch(world.etc…..){
    }

    c'est bien ça ?

    Edit:

    Quand j'enlève le switch j'ai des érreurs à generateSurface(Random random, int chunkX, int chunkZ, World world), ça me dit de mettre un suppressionWarning ou de supprimer :

    package fr.browneez.gen;

    import cpw.mods.fml.common.IWorldGenerator;
    import fr.browneez.locky.Main;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.WorldProvider;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenMinable;

    public class GenStats
      implements IWorldGenerator
    {
      public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
      {

    }

    private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minVeinSize, int maxVeinSize, int spawnChance)
      {
        for (int i = 0; i < spawnChance; i++)
        {
          int defaultChunkSize = 16;

    int xPos = posX + random.nextInt(defaultChunkSize);
          int yPos = minY + random.nextInt(maxY - minY);
          int zPos = posZ + random.nextInt(defaultChunkSize);

    new WorldGenMinable(block, minVeinSize + random.nextInt(maxVeinSize - minVeinSize), blockSpawn).generate(world, random, xPos, yPos, zPos);
        }
      }

    private void generateSurface(Random random, int chunkX, int chunkZ, World world)
      {
        addOre(Main.Lockyumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 13, 3, 5, 2);
        addOre(Main.Titaniumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 20, 4, 5, 3);
        addOre(Main.Thoriumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 45, 4, 10, 15);
      }

    }


  • Rédacteurs

    Envoie ton ancienne classe, avant que tu supprime le switch (quand il n'y avait pas d'erreurs) et met là entre balise java


  • Administrateurs

    Comme ça :

    package fr.browneez.gen;
    
    import cpw.mods.fml.common.IWorldGenerator;
    import fr.browneez.locky.Main;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.WorldProvider;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenMinable;
    
    public class GenStats
     implements IWorldGenerator
    {
     public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
     {
        addOre(Main.Lockyumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 13, 3, 5, 2);
        addOre(Main.Titaniumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 20, 4, 5, 3);
        addOre(Main.Thoriumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 45, 4, 10, 15);
     }
    
     private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minVeinSize, int maxVeinSize, int spawnChance)
     {
       for (int i = 0; i < spawnChance; i++)
       {
         int defaultChunkSize = 16;
    
         int xPos = posX + random.nextInt(defaultChunkSize);
         int yPos = minY + random.nextInt(maxY - minY);
         int zPos = posZ + random.nextInt(defaultChunkSize);
    
         new WorldGenMinable(block, minVeinSize + random.nextInt(maxVeinSize - minVeinSize), blockSpawn).generate(world, random, xPos, yPos, zPos);
       }
     }
    }
    


  • package fr.browneez.gen;
    
    import cpw.mods.fml.common.IWorldGenerator;
    import fr.browneez.lockycraft.Main;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.WorldProvider;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenMinable;
    
    public class GenStats
     implements IWorldGenerator
    {
     public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
     {
       switch (world.provider.dimensionId)
       {
       case -1:
         generateNether(random, chunkX * 16, chunkZ * 16, world);
         break;
       case 0:
         generateSurface(random, chunkX * 16, chunkZ * 16, world);
         break;
       case 1:
         generateEnd(random, chunkX * 16, chunkZ * 16, world);
         break;
       }
     }
    
     private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minVeinSize, int maxVeinSize, int spawnChance)
     {
       for (int i = 0; i < spawnChance; i++)
       {
         int defaultChunkSize = 16;
    
         int xPos = posX + random.nextInt(defaultChunkSize);
         int yPos = minY + random.nextInt(maxY - minY);
         int zPos = posZ + random.nextInt(defaultChunkSize);
    
         new WorldGenMinable(block, minVeinSize + random.nextInt(maxVeinSize - minVeinSize), blockSpawn).func_76484_a(world, random, xPos, yPos, zPos);
       }
     }
    
     private void generateEnd(Random random, int chunkX, int chunkZ, World world) {}
    
     private void generateSurface(Random random, int chunkX, int chunkZ, World world)
     {
       addOre(Main.LockyumOre, Blocks.stone, random, world, chunkX, chunkZ, 4, 13, 3, 5, 2);
       addOre(Main.TitaniumOre, Blocks.stone, random, world, chunkX, chunkZ, 4, 20, 4, 5, 3);
       addOre(Main.ThoriumOre, Blocks.stone, random, world, chunkX, chunkZ, 4, 45, 4, 10, 15);
     }
    
     private void generateNether(Random random, int chunkX, int chunkZ, World world) {}
    }
    

    Je vien de remarquer que sur la bêta de mon mod, il y avais l'import :
    import net.minecraft.world.WorldProvider
    Mais la il n'est pas utilisé


  • Rédacteurs

    As-tu testé le code de robin ?



  • Non j'avais pas fait attention, je vais tester

    Edit:

    Je viens de tester et quand je fais : /mv create test normal, ça ne génère pas les minerais 😞

    La version de multiverse est : 2.5



  • Personnellement, j'ai changé ceci:
    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);
    }
    }

    Pour cela:
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
    if(world.provider.isSurfaceWorld()) {
    generateSurface(world, random, chunkX * 16, chunkZ * 16);
    }
    }