Impossible de générer des minerais



  • Bonsoir à tous. J'ai un problème avec mon développement de mod en 1.8.8. Tout allait bien jusqu'au moment ou j'ai tenté de générer des minerais. Le bug est simple, les minerais ne se génèrent pas. Problématique, effectivement… Je vais vous montrer mes class. Et je précise aussi que je ne suis pas encore un boss dans la matière, même si je tente de me débrouiller ;).

    Class principale :

    http://pastebin.com/33z4wYfY

    Class WorldGen :

    http://pastebin.com/CqRp885A

    Class WorldRegister :

    http://pastebin.com/vBCKUmfy

    Voilà !
    Sinon, merci d'avance. Normalement, j'ai dû faire une orthographe correcte, ce que je trouve la moindre des politesses tout de même. Et désolé pour le sujet qui n'aura pas été très long et très développé, mais il est un peu tard et je pense avoir dit l'essentiel.


  • Rédacteurs

    Pourquoi enregistre-tu 3 fois ton worldGenerator ?
    (Vu le poids de génération que tu as mis je dirais que tu pense qu'il faut l'enregistrer pour chaque dimension)

    J'ai modifié ta classe WorldGen :

    
    public class WorldGeneration implements IWorldGenerator {
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
    {
    switch(world.provider.getDimensionId())
    {
    case -1:
    GenerateNether(world, chunkX * 16, chunkZ * 16, random);
    break;
    
    case 0:
    GenerateOverWorld(world, chunkX * 16, chunkZ * 16, random);
    break;
    
    case 1:
    GenerateEnd(world, chunkX * 16, chunkZ * 16, random);
    break;
    
    }
    }
    
    private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int size, 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);
    
    IBlockState state = block.getDefaultState();
    BlockPos blockPos = new BlockPos(Xpos, Ypos, Zpos);
    
    new WorldGenMinable(state, size, BlockHelper.forBlock(blockSpawn)).generate(world, random, blockPos);
    }
    }
    
    private void GenerateNether(World world, int i, int j, Random random)
    {
    
    }
    
    private void GenerateOverWorld(World world, int i, int j, Random random)
    {
    addOre(Blocks.glass, Blocks.stone , random, world, i, j, 20, 100, 8, 500);
    }
    
    private void GenerateEnd(World world, int i, int j, Random random)
    {
    addOre(Blocks.glass, Blocks.netherrack , random, world, i, j, 20, 100, 8, 60);
    }
    
    

    J'ai changé chunkX = 16 en chunkX * 16, j'ai enlevé l'argument minV car il était inutile et j'ai aussi rajouté BlockHelper.forBlock(…) dans les argument de new WorldGenMinable pour que ça remplace le bon bloc. Voilà

    Et moi ça marche :

    Par contre j'ai pas d'image pour la seconde génération car tu remplace de la netherrack dans l'end mais il n'y en a pas, donc bon ...


  • Administrateurs

    Le problème étant que tu n'appelles jamais la fonction MainRegistry qui se trouve dans WorldRegisterSmy.
    Et d'ailleurs en effet pourquoi l'avoir mit 3 fois ? l'int n'est pas l'id de la dimension, c'est le poids du générateur.



  • Bonsoir, déjà merci de vos réponses. Effectivement, je pensais qu'il fallait mettre 3 fois l'int justement car je pensais que c'était comme l'id. Donc, j'ai tenté de mettre ton code modifié BrokenSwing, pourtant rien n'y fait. Ensuite, comment appeler cette fonction ? Désolé de ma noobitude mais je préfère quand même démarrer et apprendre à coder avec éclipse plutôt qu'avec MC Creator 😉 !


  • Administrateurs

    Dans la classe principale tu ajoutes WorldRegisterSmy.MainRegistry(); comme tu l'as fait pour tes items. C'est la base de Java appeler une fonction …



  • Haaan ! Ca marche ! Merci 1 000 fois et 10 000 excuses pour ma nullité han ❤ !