SOLVED Ajouter la génération d'un block décoratif


  • Salut
    Je voudrais ajouter la génération d’un block décoratif.
    Mais la seul génération que je trouve sur internet sont pour les minerais(alors que ce n’est pas du tout pareil)
    Je pensais partir de la citrouille, mais je ne sais pas comment faire.
    Si vous pouvez m’aider, merci d’avance

  • Moddeurs confirmés

    http://www.minecraftforgefrance.fr/showthread.php?tid=38

    Mais il faudrait faire un tuto sur ça!


  • Kevin_68, Sauf que se que je demandai la ce n’étaie pas de la génération de terrain ou de Chuck, mais faire apparaitre une structure pure est dure x).

  • Moddeurs confirmés

    Je voudrais ajouter la génération d’un block décoratif.

    Un bloc est aussi une structure, mais elle ne fait qu’un bloc


  • on c’est mal compris je crois … il n’y a pas de génération ! nada !
    Tu pourra cherchai des heurs et des heurs, tu ne trouvera pas se champignon.


  • Kevin si je ne me trompe pas sevenno cherchais à faire apparaître une structure via un bloc donc avec une action alors que le créateur de ce topic veux seulement faire générer aléatoirement des blocs sur la map.


  • Exactement :).


  • Personne ?
    Je savait que le truc que je faisais ne marchais pas, mais j’ai quand même essayer et j’ai raison(ça ne marche pas):
    J’ai suivi ça : http://www.minecraftforgefrance.fr/showt…php?tid=38

    Même si ça sert à rien puisque c’est pas les bons codes, voilà les codes(:o) :
    WorldGenCobweb :

    package This_is_Halloween;
    import java.util.Random;
    
    import cpw.mods.fml.common.IWorldGenerator;
    import net.minecraft.block.Block;
    import net.minecraft.world.World;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenerator;
    
    public class WorldGenCobweb extends WorldGenerator implements IWorldGenerator
    {
    public WorldGenCobweb() { }
    
    public boolean generate(World world, Random rand, int i, int j, int k) {
    world.setBlockMetadataWithNotify(i + 0, j + 17, k + 8, Block.web.blockID, 999999999);
    return true;
    }
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world,
    IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
    
    }
    }
    

    Bout de code dans la classe principale :

    public void load(FMLInitializationEvent event)
    {
    TickRegistry.registerTickHandler(new ClientTickHandler(), Side.CLIENT);
    GameRegistry.registerWorldGenerator(new WorldGenCobweb());
    
    }
    

    J’ai aussi essayer de mettre

    GameRegistry.registerWorldGenerator(new WorldGenCobweb());
    

    dans le PreInit, mais pareil

    Quelqu’un à t’il la solution à mon problème ?
    Merci d’avance

    PS : j’ai chercher sur http://www.minecraftforgefrance.fr , http://www.minecraftforge.net , http://www.youtube.com , et http://www.google.com

  • Moddeurs confirmés

    Essaie avec ça dans ton WorldGenerator:

    
    public boolean generate(World world, Random random, int x, int y, int z)
    {
    while (world.isAirBlock(x, y, z) && y > 2)
    {
    –y;
    }
    
    world.setBlock(x, y, z, Block.web.blockID);
    
    return true;
    }
    
    
  • Administrateurs Rédacteurs Moddeurs confirmés

    Dans init :

    GameRegistry.registerWorldGenerator(new WorldGenTutorial());
    
    package tutoriel.common;
    
    import java.util.Random;
    
    import net.minecraft.world.World;
    import net.minecraft.world.chunk.IChunkProvider;
    import cpw.mods.fml.common.IWorldGenerator;
    
    public class WorldGenTutorial implements IWorldGenerator
    {
    @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);
    }
    }
    
    private void generateSurface(World world, Random rand, int x, int z)
    {
    for(int i = 0; i < 75; i ++)
    {
    int randPosX = x + rand.nextInt(16);
    int randPosY = rand.nextInt(128);
    int randPosZ = z + rand.nextInt(16);
    (new WorldGenWeb()).generate(world, rand, randPosX, randPosY, randPosZ);
    }
    }
    }
    
    package tutoriel.common;
    
    import java.util.Random;
    
    import net.minecraft.block.Block;
    import net.minecraft.world.World;
    import net.minecraft.world.gen.feature.WorldGenerator;
    
    public class WorldGenWeb extends WorldGenerator
    {
    @Override
    public boolean generate(World world, Random random, int x, int y, int z)
    {
    boolean isAir = world.isAirBlock(x, y , z);
    if((world.getBlockId(x, y - 1, z) == Block.grass.blockID && isAir)|| (world.getBlockId(x, y - 1, z) == Block.dirt.blockID && isAir))
    {
    world.setBlock(x, y, z, Block.web.blockID);
    return true;
    }
    else
    {
    return false;
    }
    }
    }
    

    Tester, ça fonctionne.

    Pour changer la hauteur minimum :
    int randPosY = rand.nextInt(hauteur);
    Et pour la probabilité change le i < 75


  • Ça Marche
    Merci
    Je vous adore