public function onUpdate($type) { if ($type === Level::BLOCK_UPDATE_NORMAL) { if (($this->meta & 0b1100) === 0) { $this->meta |= 0x8; $this->getLevel()->setBlock($this, $this, false, false, true); } } elseif ($type === Level::BLOCK_UPDATE_RANDOM) { if (($this->meta & 0b1100) === 0x8) { $this->meta &= 0x3; $visited = []; $check = 0; Server::getInstance()->getPluginManager()->callEvent($ev = new LeavesDecayEvent($this)); if ($ev->isCancelled() or $this->findLog($this, $visited, 0, $check) === true) { $this->getLevel()->setBlock($this, $this, false, false); } else { $this->getLevel()->useBreakOn($this); return Level::BLOCK_UPDATE_NORMAL; } } } return false; }
/** * @param LeavesDecayEvent $event * @priority HIGHEST * @ignoreCancelled true */ public function onLeavesDecay(LeavesDecayEvent $event) { if (!$this->plugin->getStorage()->getShield($event->getBlock()->getLevel())->isAllowed(Shield::DECAYING)) { $event->setCancelled(true); } }