public function onUpdate($type)
{
if ($type === Level::BLOCK_UPDATE_RANDOM) {
$block = $this->getLevel()->getBlock(new Vector3($this->x, $this->y, $this->z));
if ($block->getSide(1)->getLightLevel() < 4) {
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Dirt()));
} elseif ($block->getSide(1)->getLightLevel() >= 9) {
for ($l = 0; $l < 4; ++$l) {
$x = mt_rand($this->x - 1, $this->x + 1);
$y = mt_rand($this->y - 2, $this->y + 2);
$z = mt_rand($this->z - 1, $this->z + 1);
$block = $this->getLevel()->getBlock(new Vector3($x, $y, $z));
if ($block->getId() === Block::DIRT && $block->getDamage() === 0xf && $block->getSide(1)->getLightLevel() >= 4 && $block->z <= 2) {
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass()));
if (!$ev->isCancelled()) {
$this->getLevel()->setBlock($block, $ev->getNewState());
}
}
}
}
}
}