Résolu 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 -
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).
-
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=38Mê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’avancePS : j’ai chercher sur http://www.minecraftforgefrance.fr , http://www.minecraftforge.net , http://www.youtube.com , et http://www.google.com
-
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; }
-
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