public function placeObject(ChunkManager $level, $x, $y, $z, Random $random)
{
$this->placeTrunk($level, $x, $y, $z, $random, $this->treeHeight - 1);
for ($yy = $y - 3 + $this->treeHeight; $yy <= $y + $this->treeHeight; ++$yy) {
$yOff = $yy - ($y + $this->treeHeight);
$mid = (int) (1 - $yOff / 2);
for ($xx = $x - $mid; $xx <= $x + $mid; ++$xx) {
$xOff = abs($xx - $x);
for ($zz = $z - $mid; $zz <= $z + $mid; ++$zz) {
$zOff = abs($zz - $z);
if ($xOff === $mid and $zOff === $mid and ($yOff === 0 or $random->nextBoundedInt(2) === 0)) {
continue;
}
if (!Block::$solid[$level->getBlockIdAt($xx, $yy, $zz)]) {
$level->setBlockIdAt($xx, $yy, $zz, $this->leafBlock);
$level->setBlockDataAt($xx, $yy, $zz, $this->leafType);
}
}
}
}
}