public function onUpdate($type) { if ($type === Level::BLOCK_UPDATE_RANDOM) { $block = $this; #$lightLvl = $this->getLevel()->getBlockLightAt($this->x, $this->y + 1, $this->z); $lightLvl = $this->fakeLightLvl($block); //TODO: REMOVE THIS HACK if ($lightLvl < 4) { Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Dirt())); if (!$ev->isCancelled()) { $this->getLevel()->setBlock($block, $ev->getNewState()); } } elseif ($lightLvl >= 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->getSide(1) instanceof Liquid && $this->fakeLightLvl($this->getLevel()->getBlock(new Vector3($x, $y, $z))) >= 4) { //TODO: replace this hack with $this->getLevel()->getBlockLightAt($x, $y + 1, $z) >= 4 Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass())); if (!$ev->isCancelled()) { $this->getLevel()->setBlock($block, $ev->getNewState()); } } } } } }
public function onUpdate($type) { if ($type === Level::BLOCK_UPDATE_RANDOM) { //TODO: light levels $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) { if ($block->getSide(1) instanceof Transparent) { Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Mycelium())); if (!$ev->isCancelled()) { $this->getLevel()->setBlock($block, $ev->getNewState()); } } } } }
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()); } } } } } }