getChunk($chunkX, $chunkZ); for($x = 0; $x < 16; ++$x){ for($z = 0; $z < 16; ++$z){ $biome = Biome::getBiome($chunk->getBiomeId($x, $z)); $cover = $biome->getGroundCover(); if(count($cover) > 0){ $diffY = 0; if(!$cover[0]->isSolid()){ $diffY = 1; } $column = $chunk->getBlockIdColumn($x, $z); for($y = 127; $y > 0; --$y){ if($column{$y} !== "\x00" and !BlockFactory::get(ord($column{$y}))->isTransparent()){ break; } } $startY = min(127, $y + $diffY); $endY = $startY - count($cover); for($y = $startY; $y > $endY and $y >= 0; --$y){ $b = $cover[$startY - $y]; if($column{$y} === "\x00" and $b->isSolid()){ break; } if($b->getDamage() === 0){ $chunk->setBlockId($x, $y, $z, $b->getId()); }else{ $chunk->setBlock($x, $y, $z, $b->getId(), $b->getDamage()); } } } } } } }