ok guys I got it now. I post the code so maybe I can help someone.
WorldGenerator:
package "package";
import java.util.Random;
import net.minecraft.block.Block;
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 cpw.mods.fml.common.IWorldGenerator;
public class WorldGeneratorSurface implements 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);
case 0: generateSurface(world, random, chunkX*16, chunkZ*16);
}
}
private void generateSurface(World world, Random rand, int l, int j)
{
for(int i =0; i<40; i++){
int Xcoord = l + rand.nextInt(16);
int Zcoord = j + rand.nextInt(16);
int Ycoord = rand.nextInt(16);
(new WorldGenMinable(Main.someore.blockID, 4)).generate(world, rand, Xcoord, Ycoord, Zcoord);
for(int k = 0; k < 1; k++)
{
int RandPosX = l + rand.nextInt(16);
int RandPosY = rand.nextInt(128);
int RandPosZ = j + rand.nextInt(16);
(new teststructure()).generate(world, rand, RandPosX, RandPosY, RandPosZ);
}}}}
teststructure:
package""package;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
public class teststructure extends WorldGenerator {
public teststructure()
{
}
public boolean generate(World world, Random rand, int x, int y, int z)
{
if(world.getBlockId(x, y, z)!= Block.sand.blockID || world.getBlockId(x, y + 1, z)!= 0)
{
return false;
}
world.setBlock(x, y + 1, z, Main.someblock.blockID);
world.setBlock(x + 1, y + 1, z, Main.someblock.blockID);
world.setBlock(x, y + 2, z, Main.someblock.blockID);
world.setBlock(x + 1, y + 2, z, Main.someblock.blockID);
world.setBlock(x + 2, y + 2, z, Main.someblock.blockID);
world.setBlock(x - 1, y + 2, z, Main.someblock.blockID);
world.setBlock(x + 3, y + 3, z, Main.someblock.blockID);
world.setBlock(x - 2, y + 3, z, Main.someblock.blockID);
world.setBlock(x + 2, y + 3, z, Main.someblock.blockID);
world.setBlock(x - 1, y + 3, z, Main.someblock.blockID);
world.setBlock(x + 3, y + 4, z, Main.someblock.blockID);
world.setBlock(x - 2, y + 4, z, Main.someblock.blockID);
world.setBlock(x + 2, y + 4, z, Main.someblock.blockID);
world.setBlock(x - 1, y + 4, z, Main.someblock.blockID);
world.setBlock(x + 3, y + 5, z, Main.someblock.blockID);
world.setBlock(x - 2, y + 5, z, Main.someblock.blockID);
world.setBlock(x + 2, y + 5, z, Main.someblock.blockID);
world.setBlock(x - 1, y + 5, z, Main.someblock.blockID);
world.setBlock(x + 2, y + 6, z, Main.someblock.blockID);
world.setBlock(x - 1, y + 6, z, Main.someblock.blockID);
world.setBlock(x, y + 7, z, Main.someblock.blockID);
world.setBlock(x + 1, y + 7, z, Main.someblock.blockID);
world.setBlock(x, y + 6, z, Main.someblock.blockID);
world.setBlock(x + 1, y + 6, z, Main.someblock.blockID);
world.setBlock(x, y + 3, z, Main.someblock.blockID);
return true;
}
}
Code: "k < 1" 1 is the rarity. I placed 1 so I could find it fast when it spawns. With 1 you have min 1 of your structure per chunk.
"if(world.getBlockId(x, y, z)!= Block.sand.blockID || world.getBlockId(x, y + 1, z)!= 0)" Block.sand.blockID is on what block it spawns. In this case sand