- 5,018
- 47
- 783
Народ, есть такой код ворлгена.
Все работает, ну уж очень медленно, а если ввести рандомную x1 то и вовсе можно по 10 минут ждать. ПОмогите, можно ли это как то оптимизировать?
Код:
private void generateSurface(World world, Random random, int x, int z) {
for (int y = 1; y < world.getHeight(); ++y) {
for (int x1 = x; x1 < x + 8; ++x1) {
for (int z1 = z; z1 < z + 8; ++z1) {
int ranZ1 = random.nextInt(7) - 2;
if (world.getBlock(x1, y - 1, z1 + ranZ1) == Blocks.grass && world.isAirBlock(x1, y, z1 + ranZ1))
if (world.getBlock(x1 + 1, y, z1 + ranZ1) == Blocks.log && world.getBlockMetadata(x1 + 1, y, z1 + ranZ1) == 0 && world.isAirBlock(x1 + 1, y, z1)){
world.setBlock(x1, y , z1 + ranZ1, MyBlocks.underOakMushroom);
}
if (world.getBlock(x1, y - 1, z1 + ranZ1) == Blocks.grass && world.isAirBlock(x1, y, z1 + ranZ1))
if (world.getBlock(x1, y, z1 + ranZ1) == Blocks.log && world.getBlockMetadata(x1 + 1, y, z1 + ranZ1) == 2 && world.isAirBlock(x1 + 1, y, z1)){
world.setBlock(x1, y, z1 + ranZ1, MyBlocks.mushroomBirchMushroom);
}
}
for (int z1 = z; z1 < z + 3; ++z1) {
int ranZ1 = random.nextInt(10) - 2;
int ranX1 = random.nextInt(10) - 2;
if (world.getBiomeGenForCoords(x1, z1) == BiomeGenBase.forest || world.getBiomeGenForCoords(x1, z1 + 1) == BiomeGenBase.forestHills
|| world.getBiomeGenForCoords(x1, z1) == BiomeGenBase.birchForestHills || world.getBiomeGenForCoords(x1 + 1, z1) == BiomeGenBase.birchForest) {
if (world.getBlock(x1, y - 1, z1 + ranZ1) == Blocks.grass && world.getBlock(x1, y + 1, z1) == Blocks.air && world.isAirBlock(x1 + 1, y, z1))
{
world.setBlock(x1 + 2, y, z1 + ranZ1, MyBlocks.whiteMushroom);
world.setBlock(x1 - 2, y, z1 + ranZ1, MyBlocks.gruzdMushroom);
world.setBlock(x1 + ranX1, y, z1 + 1, MyBlocks.opyataMushroom);
world.setBlock(x1 + ranX1 , y, z1 + ranZ1, MyBlocks.masloMushroom);
}
}
if (world.getBiomeGenForCoords(x1, z1) == BiomeGenBase.taiga || world.getBiomeGenForCoords(x1, z1 + 1) == BiomeGenBase.taigaHills
)
{
if (world.getBlock(x1, y - 1, z1 + ranZ1) == Blocks.grass && world.getBlock(x1, y + 1, z1) == Blocks.air)
if (world.getBlock(x1 + 1, y, z1 + ranZ1) == Blocks.log && world.isAirBlock(x1 + 1, y, z1))
world.setBlock(x1 + 3, y, z1 + ranZ1, MyBlocks.underElovMushroom);
world.setBlock(x1 - 2, y, z1 + 3, MyBlocks.underSosnovMushroom);
}
}
}
}
}
}
Все работает, ну уж очень медленно, а если ввести рандомную x1 то и вовсе можно по 10 минут ждать. ПОмогите, можно ли это как то оптимизировать?