本文整理汇总了PHP中pocketmine\level\ChunkManager::getWaterHeight方法的典型用法代码示例。如果您正苦于以下问题:PHP ChunkManager::getWaterHeight方法的具体用法?PHP ChunkManager::getWaterHeight怎么用?PHP ChunkManager::getWaterHeight使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\level\ChunkManager
的用法示例。
在下文中一共展示了ChunkManager::getWaterHeight方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: populate
public function populate(ChunkManager $level, $chunkX, $chunkZ, Random $random)
{
$chunk = $level->getChunk($chunkX, $chunkZ);
if ($level instanceof Level or $level instanceof SimpleChunkManager) {
$waterHeight = $level->getWaterHeight();
} else {
$waterHeight = 0;
}
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] !== "" and !Block::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] === "" and $b->isSolid()) {
break;
}
if ($y <= $waterHeight and $b->getId() == Block::GRASS and $chunk->getBlockId($x, $y + 1, $z) == Block::STILL_WATER) {
$b = Block::get(Block::DIRT);
}
if ($b->getDamage() === 0) {
$chunk->setBlockId($x, $y, $z, $b->getId());
} else {
$chunk->setBlock($x, $y, $z, $b->getId(), $b->getDamage());
}
}
}
}
}
}