Résolu Génération de minerai dans le Nether
-
Alors voilà j’ai essayé de générer un minerai dans le nether, mais rien à faire il ne veut pas apparaître.
[font=Source Code Propackage ]fr.zeiyo.zeiyocraft.world%(#cc7832)[; ] import java.util.Random%(#cc7832)[; ] import fr.zeiyo.zeiyocraft.block.ZeiyoBlocks%(#cc7832)[; ]import net.minecraft.block.state.pattern.BlockHelper%(#cc7832)[; ]import net.minecraft.init.Blocks%(#cc7832)[; ]import net.minecraft.util.BlockPos%(#cc7832)[; ]import net.minecraft.world.World%(#cc7832)[; ]import net.minecraft.world.chunk.IChunkProvider%(#cc7832)[; ]import net.minecraft.world.gen.feature.WorldGenMinable%(#cc7832)[; ]import net.minecraft.world.gen.feature.WorldGenerator%(#cc7832)[; ]import net.minecraftforge.fml.common.IWorldGenerator%(#cc7832)[; ] public class ZeiyoWorldGen implements IWorldGenerator { private WorldGenerator gen_onyx%(#cc7832)[; ] public ZeiyoWorldGen() { this.gen_onyx = new WorldGenMinable(ZeiyoBlocks.*onyxOre*.getDefaultState(), 9, BlockHelper.*forBlock*(Blocks.*netherrack*)); } %(#bbb529)[@Override ] public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch (world.provider.getDimensionId()) { case 0: // Overworld %(#cc7832)[ break; ] case -1: %(#808080)[// Nether ] this.runGenerator(this.gen_onyx, world, random, chunkX, chunkZ, 25, 0, 80)%(#cc7832)[; ] %(#cc7832)[ break; ] case 1: %(#808080)[// End ] %(#cc7832)[break; ] } } private void runGenerator(WorldGenerator generator, World world, Random rand, int chunk_X, int chunk_Z, int chancesToSpawn, int minHeight, int maxHeight) { if (minHeight < 0 || maxHeight > 256 || minHeight > maxHeight) throw new IllegalArgumentException("Illegal Height Arguments for WorldGenerator")%(#cc7832)[; ] int heightDiff = maxHeight - minHeight + 1%(#cc7832)[; ] for (int i = 0; i < chancesToSpawn; i ++) { int x = chunk_X * 16 + rand.nextInt(16)%(#cc7832)[; ] int y = minHeight + rand.nextInt(heightDiff)%(#cc7832)[; ] int z = chunk_Z * 16 + rand.nextInt(16)%(#cc7832)[; ] generator.generate(world, rand, new BlockPos(x, y, z))%(#cc7832)[; ] } } }
J’ai déjà réussi de créer des minerais normaux, ils fonctionnent bien mais pour le Nether, je n’arrive vraiment pas à le faire marcher.
Merci d’avance pour votre aide,
Cordialement -
this.gen_onyx = new WorldGenMinable(ZeiyoBlocks.onyxOre.getDefaultState(), 9, BlockHelper.forBlock(Blocks.netherrack));
???
Pourquoi BlockHelper.forBlock(Blocks.netherrack) et pas directement Blocks.netherrack ou Blocks.netherrack.getDefaultBlockState() ? -
Parce que dans la classe WorldGenMinable ils utilisent ça :
[font=Source Code Propublic ]WorldGenMinable(IBlockState p_i45630_1_, int p_i45630_2_) { this(p_i45630_1_, p_i45630_2_, BlockHelper.*forBlock*(Blocks.*stone*))%(#cc7832)[; ]} public WorldGenMinable(IBlockState p_i45631_1_, int p_i45631_2_, Predicate p_i45631_3_) { this.oreBlock = p_i45631_1_%(#cc7832)[; ] this.numberOfBlocks = p_i45631_2_%(#cc7832)[; ] this.field_175919_c = p_i45631_3_%(#cc7832)[; ]}
-
Ah oui. Je n’ai encore jamais fait de génération en 1.8 x)
Personnellement je ne vois pas d’erreur.
As-tu bien enregistré ton générateur ? -
Beh ouai etant donné que les autres minerais marchent bien
[font=Source Code Propublic void ]init(FMLInitializationEvent e) { GameRegistry.*registerWorldGenerator*(new ZeiyoWorldGen(), 0)%(#cc7832)[; ] ZeiyoCrafting.*createCrafts*()%(#cc7832)[; ] }
-
Autre minerai ? Je ne vois qu’un minerai dans ta classe.
-
Je les ai masqués pour que que ce soit plus lisible ^^
-
Ce qui n’est pas une bonne idée. Bon ici ça ne gène pas trop, mais quand il y a des rapports de crash avec la ligne indiqué dedans c’est bien embêtant.
Ajoutes du debug pour vérifier que ton code est bien appelé. -
Je viens de réessayer, ça marche toujours pas dans le Nether en revanche le générer dans l’Ender et dans l’Overworld marche bien alors je trouve ça vraiment bizarre …
-
Rajoute des logs dans ta fonction pour voir si la génération est appelée
-
Etant donné que la console est flood de mon println lors de la génération, je peux te dire qu’elle est bien appellée ^
-
Avec les mêmes valeurs.
```java
package fr.minecraftforgefrance.test;import java.util.Random;
import net.minecraft.block.state.pattern.BlockHelper;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.fml.common.IWorldGenerator;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;@Mod(modid = “test”, name = “Test”, version = “0.0.0”)
public class ModTest
{
@EventHandler
public void init(FMLInitializationEvent event)
{
GameRegistry.registerWorldGenerator(new TestGenerator(), 0);
}public static class TestGenerator implements IWorldGenerator
{
private WorldGenerator genDiam = new WorldGenMinable(Blocks.diamond_block.getDefaultState(), 9, BlockHelper.forBlock(Blocks.netherrack));
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
{
if(world.provider.getDimensionId() == -1)
{
this.runGenerator(this.genDiam, world, random, chunkX, chunkZ, 25, 0, 80);
}
}private void runGenerator(WorldGenerator generator, World world, Random rand, int chunk_X, int chunk_Z, int chancesToSpawn, int minHeight, int maxHeight)
{
if(minHeight < 0 || maxHeight > 256 || minHeight > maxHeight)
throw new IllegalArgumentException(“Illegal Height Arguments for WorldGenerator”);int heightDiff = maxHeight - minHeight + 1;
for(int i = 0; i < chancesToSpawn; i++)
{
int x = chunk_X * 16 + rand.nextInt(16);
int y = minHeight + rand.nextInt(heightDiff);
int z = chunk_Z * 16 + rand.nextInt(16);
generator.generate(world, rand, new BlockPos(x, y, z));
}
}
}
} -
Après plusieurs essais ça a finalement marché, bizarre …