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'avance

    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, 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 et z dans l'appel et la déclaration des generate<dimension>
    • addOreSpawn requiert un entier en 'metadata', or tu lui donnes un caractère

    En espérant que cela puisse t'aider



  • 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


Log in to reply