Résolu Génération
-
Bonjour tous le monde j’ai trois erreurs dans mon code plusieurs personnes mon déjà aider a régler cela mais sa ne marche toujours pas je vous laisse mon code est mes trois erreurs.
package fr.topycraft.ModPackTopyCraft.worldgeneration; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import java.util.Random; import fr.topycraft.ModPackTopyCraft.blocks.ModPackTopyCraftBlocks; public class WorldGeneration implements net.minecraftforge.fml.common.IWorldGenerator { public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { { { switch(world.provider.dimensionId) { case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break; case 0: generateSurface(world, random, chunkX * 16, chunkZ * 16); break; case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break; } } } } private void generateEnd(World world, Random random, int x, int z) { } private void generateSurface(World world, Random random, int x, int z) { } private void generateNether(World world, Random random, int x, int z) { this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 1, 6, 12); } public void addOreSpawn(Block block, int metadata, Block target, World world1, Random random1, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { assert maxY > minY ; assert maxX > 0 && maxX <= 16 ; assert minY > 0 ; assert maxY < 256 && maxY > 0 ; assert maxZ > 0 && maxZ <= 16 ; for(int i1 = 0; i1 < chancesToSpawn; i1++) { int posY = random1.nextInt(128); if((posY <= maxY) && (posY >= minY)) { (new WorldGenMinable(block, metadata, maxVeinSize. target)).generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16)); } } } @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { } }
Mes trois erreurs sont écrite juste ci-dessous.
Je vous remercie d’avance de m’avoir aider bonne soirée. -
Salut,
Tu as une fonction en double dont une avec les mauvais arguments, il y a une variable qui doit être remplacé par un getter et tu as un point là où tu devrais avoir une virgule. Code corrigé :package fr.topycraft.ModPackTopyCraft.worldgeneration; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import java.util.Random; import fr.topycraft.ModPackTopyCraft.blocks.ModPackTopyCraftBlocks; public class WorldGeneration implements net.minecraftforge.fml.common.IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimensionId()) { case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break; case 0: generateSurface(world, random, chunkX * 16, chunkZ * 16); break; case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break; } } private void generateEnd(World world, Random random, int x, int z) { } private void generateSurface(World world, Random random, int x, int z) { } private void generateNether(World world, Random random, int x, int z) { this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 1, 6, 12); } public void addOreSpawn(Block block, int metadata, Block target, World world1, Random random1, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { assert maxY > minY ; assert maxX > 0 && maxX <= 16 ; assert minY > 0 ; assert maxY < 256 && maxY > 0 ; assert maxZ > 0 && maxZ <= 16 ; for(int i1 = 0; i1 < chancesToSpawn; i1++) { int posY = random1.nextInt(128); if((posY <= maxY) && (posY >= minY)) { (new WorldGenMinable(block, metadata, maxVeinSize, target)).generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16)); } } } }
-
Salut, les deux premières erreur : c’est écrit en anglais, donc bon c’est pas compliqué : tu peux pas accéder à dimensionID donc utilise plutôt getDimensionID(). Et le generate à besoin d’un BlockPosdonc tu dois faire new BlockPos(calculdex, calculdey, calculdez).
Pour le dernier problème, il faut utiliser BlockMatcher.EDIT: Robin, il me semble que GenWorldMinable a maintenant besoin d’un predicate à la place du block, donc c’est pas target qu’il faut mettre mais BlockMatcher (une class qui fait un predicate à partir d’un block).
-
Bonsoir tous le monde je viens de reussir grâce à vous a supprimer tous les bugs mais né s’en moins j’ai un problème lors de la génération le bloc n’apparait à aucun endroit dans le monde.
package fr.topycraft.ModPackTopyCraft.worldgeneration; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import java.util.Random; import fr.topycraft.ModPackTopyCraft.blocks.ModPackTopyCraftBlocks; import joptsimple.internal.Classes; public class WorldGeneration implements net.minecraftforge.fml.common.IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimension()) { case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break; case 0: generateSurface(world, random, chunkX * 16, chunkZ * 16); break; case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break; } } private void generateEnd(World world, Random random, int x, int z) { } private void generateSurface(World world, Random random, int x, int z) { } private void generateNether(World world, Random random, int x, int z) { this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 20, 6, 12); } public void addOreSpawn(Block block, int metadata, Block target, World world1, Random random1, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { assert maxY > minY ; assert maxX > 0 && maxX <= 16 ; assert minY > 0 ; assert maxY < 256 && maxY > 0 ; assert maxZ > 0 && maxZ <= 16 ; for(int i1 = 0; i1 < chancesToSpawn; i1++) { int posY = random1.nextInt(128); if((posY <= maxY) && (posY >= minY)) { new WorldGenMinable(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS.getDefaultState() ,maxVeinSize); generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16)); } } } private void generate(World world1, Random random1, int x, int posY, int z) { } }
Voici le code ci-dessus bonne soirée à tous
-
Sachant que tu essaies de générer le bloc dans la dimension -1 (nether), le résultat n’est pas étonnant.
-
Il me suffit de changer les world1 par world0 pour faire générer dans le monde normal ?
-
Non, il faut mettre la ligne :
this.addOreSpawn(ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS, 0, Blocks.STONE, world, random, x, z, 16, 16, 8, 20, 6, 12);
Dans generateSurface au lieu de generateNether.Et d’ailleurs dans ta fonction addOreSpawn faudrait mettre block.getDefaultState() au lieu de ModPackTopyCraftBlocks.TOPYDUIM_MINERAIS.getDefaultState()
-
Après avoir réaliser tous sa les blocks n’apparaisse pas quand meme .
-
Tu peux m’expliquer pourquoi, après avoir fait new WorldGenMinable tu appelles une fonction generate vide au lieu d’appeler la fonction du WorldGenMinable ? En tous cas c’est ça le dernier problème.
-
Ho, je n’avais même pas remarqué x)
-
En faite cette ligne de code me demande de crée la méthode generate
new WorldGenMinable(block.getDefaultState() ,maxVeinSize); generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
Donc je crée sa méthode et sa me donne cela
private void generate(World world1, Random random1, int i, int posY, int j)
-
new WorldGenMinable(block.getDefaultState() ,maxVeinSize).generate(world1, random1, blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16));
Il faut un . et non un ; -
Voila si je met un point le problème.
-
On ne voit pas tout le message d’erreur.
-
-
Replaces par :
generate(world1, random1, new BlockPos(blockXPos + random1.nextInt(16), posY, blockZPos + random1.nextInt(16)));