Résolu Arbres
-
Bonjour je cherche depuis quelques jours le moyen de faire ds génération d’arbre dans le biome plaine et que quand on casse les feille on est des chances d’obtenir une orange.
Merci
Mon code:
package sosoh.common; import java.util.Random; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import cpw.mods.fml.common.IWorldGenerator; import net.minecraft.block.Block; public class Worldgen implements IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.dimensionId){ case -1 : genNether(world, random, chunkX*16, chunkZ*16); break; case 0 : genWorld(world, random, chunkX*16, chunkZ*16); break; case 1 : genEnd(world, random, chunkX*16, chunkZ*16); break; } } private void genEnd(World world, Random rand, int chunkX, int chunkZ) { //Pour les limbes(ender) //code \/ //code /\ } private void genNether(World world, Random rand, int chunkX, int chunkZ) { //Pour l'enfer(Nether) //code \/ //code /\ } private void genWorld(World world, Random rand, int chunkX, int chunkZ) { for(int i = 0;i < 10; i++){ //code \/ addWorldGenMinable(ModSosoh.FeuillageOrangier.blockID, 9,64,world, rand, chunkX, chunkZ); //code /\ } } public void addWorldGenMinable(int BlocID, int MaxMinerai, int MaxY, World world, Random rand, int chunkX, int chunkZ) { int randPosX = chunkX + rand.nextInt(16); int randPosY = rand.nextInt(MaxY); int randPosZ = chunkZ + rand.nextInt(16); new WorldGenMinable(BlocID, MaxMinerai).generate(world, rand, randPosX, randPosY, randPosZ); } }
-
Pour faire dropper des oranges, c’est dans le code des feuilles qu’il faut le mettre.
-
Quel est le code pour dropper?
-
Pour les oranges : Je te conseil de regarder le code de BlockLeaves pour les oranges et https://github.com/MCNanotech/nanotech_m…eaves.java peut grandement aider.
Pour la génération d’arbre en général, regarde dans le package net.minecraft.world.gen.feature. C’est là que toute les générations d’arbres sont.En ce qui concerne de la génération de dans le monde par biome cela m’intéresse aussi (je sais que cela se joeu avec BiomeGenBase et la fonction getBiomeGenForCoords mais c’est tout)
-
pour le drop c’est dans cette méthode:
public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { int j1 = 20; if ((par5 & 3) == 3) { j1 = 40; } if (par7 > 0) { j1 -= 2 << par7; if (j1 < 10) { j1 = 10; } } if (par1World.rand.nextInt(j1) == 0) { int k1 = this.idDropped(par5, par1World.rand, par7); this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(k1, 1, this.damageDropped(par5))); } j1 = 200; if (par7 > 0) { j1 -= 10 << par7; if (j1 < 40) { j1 = 40; } } if ((par5 & 3) == 0 && par1World.rand.nextInt(j1) == 0) { this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.appleRed, 1, 0)); } } }
tu remplace à la fin “Item.appleRed” par “TaClassePrincipale.TonItem”
Et pour la génération de l’arbre:
@Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { if (world.provider.dimensionId == 0) { int i = chunkX * 16; int j = chunkZ * 16; BiomeGenBase biome = world.getBiomeGenForCoords(i, j); if ((biome instanceof BiomeGenPlains)) { int Xcoord = i + random.nextInt(16); int Ycoord = random.nextInt(90); int Zcoord = j + random.nextInt(16); this.generate(world, random, Xcoord, Ycoord, Zcoord);
Tu implémente l’interface IWorldeGenerator à la classe qui génère ton arbre et tu ajoutes la méthode ci-dessus
int Ycoord = random.nextInt(90); sert à définir la auteur maximal où l’arbre peut spawn.
if ((biome instanceof Biome)) tu remplace Biome par la classe du biome dans le quel tu veut ton arbre spawn
Tu a la liste de tout les biome dans net.minecraft.world.biome