Résolu Problème Génération de minerai 1.12.2
-
Bonjour,
je suis en train de développer un mod et j’ai un petit problème : les minerais ne se génèrent pas.
J’espère que vous pourrez m’aider.
Merci d’avancepublic class ExaWorldGen implements IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimension()) { case -1: generateEnd(world, random, chunkZ * 16, chunkX * 16); break; case 0: generateOverWorld(world, random, chunkZ * 16, chunkX * 16); break; case 1: generateNether(world, random, chunkZ * 16, chunkX * 16); break; } } private void generateEnd(World world, Random random, int x, int z) { } private void generateOverWorld(World world, Random random, int x, int z) { this.addOreSpawn(ExaBlocksMods.hyperlum_ore, '0', Blocks.STONE, world, random, x, z, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.oyate_ore, '0', Blocks.STONE, world, random, x, z, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.exate_ore, '0', Blocks.STONE, world, random, x, z, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.orium_ore, '0', Blocks.STONE, world, random, x, z, 16, 16, 5, 3, 6, 20); } private void generateNether(World world, Random random, int x, int z) { } public void addOreSpawn(Block block, int metadata, Block target, World world, Random random, 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 i = 0; i < chancesToSpawn; i++) { int posY = random.nextInt(128); if((posY <= maxY) && (posY >= minY)) { WorldGenerator generator = new WorldGenMinable(block.getDefaultState(), maxVeinSize, BlockMatcher.forBlock(block)); } } } }
-
Salut, j’ai remarqué deux “petits” trucs dans ton code :
- Inversion des coordonnées
x
etz
dans l’appel et la déclaration desgenerate<dimension>
addOreSpawn
requiert un entier en ‘metadata’, or tu lui donnes un caractère
En espérant que cela puisse t’aider
- Inversion des coordonnées
-
je test en ce moment même et je te dis
-
Toujours pas de génération avec ce que tu m’as dsi de changer le code ressemble a ça mtn
package fr.exatium.examod.exainit; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.state.pattern.BlockMatcher; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.IChunkGenerator; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraftforge.fml.common.IWorldGenerator; public class ExaWorldGen implements IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimension()) { case -1: generateEnd(world, random, chunkZ * 16, chunkX * 16); break; case 0: generateOverWorld(world, random, chunkZ * 16, chunkX * 16); break; case 1: generateNether(world, random, chunkZ * 16, chunkX * 16); break; } } private void generateEnd(World world, Random random, int x, int z) { } private void generateOverWorld(World world, Random random, int x, int z) { this.addOreSpawn(ExaBlocksMods.hyperlum_ore, 0, Blocks.STONE, world, random, z, x, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.oyate_ore, 0, Blocks.STONE, world, random, z, x, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.exate_ore, 0, Blocks.STONE, world, random, z, x, 16, 16, 5, 3, 6, 20); this.addOreSpawn(ExaBlocksMods.orium_ore, 0, Blocks.STONE, world, random, z, x, 16, 16, 5, 3, 6, 20); } private void generateNether(World world, Random random, int x, int z) { } public void addOreSpawn(Block block, int metadata, Block target, World world, Random random, 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 i = 0; i < chancesToSpawn; i++) { int posY = random.nextInt(128); if((posY <= maxY) && (posY >= minY)) { WorldGenerator generator = new WorldGenMinable(block.getDefaultState(), maxVeinSize, BlockMatcher.forBlock(block)); } } } }
-
Finalement j’ai trouvé le problème merci pour tout!!!
-
Peux-tu l’expliquer ?
-
j’avais mis dans le mauvaise ordre : je devais mettre dans l’ordre 6 20 5 3