From 3abec0a3c01b896455761c7b1252b6841ab2c090 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Thu, 26 Jun 2014 12:03:02 +0200 Subject: [PATCH] Modified Level::useBreakOn() to use events for creative block breaking --- src/pocketmine/level/Level.php | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index b9c0bffd3..bf8cb5b25 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -659,21 +659,19 @@ class Level implements ChunkManager, Metadatable{ */ public function useBreakOn(Vector3 $vector, Item &$item = null, Player $player = null){ $target = $this->getBlock($vector); - - if($player instanceof Player){ - $lastTime = $player->lastBreak - 0.2; //TODO: replace with true lag - if(($player->getGamemode() & 0x01) === 1 and ($lastTime + 0.15) >= microtime(true)){ - return false; - }elseif(($lastTime + $target->getBreakTime($item)) >= microtime(true)){ - return false; - } - $player->lastBreak = microtime(true); - } - //TODO: Adventure mode checks if($player instanceof Player){ $ev = new BlockBreakEvent($player, $target, $item, ($player->getGamemode() & 0x01) === 1 ? true : false); + + $lastTime = $player->lastBreak - 0.1; //TODO: replace with true lag + if(($player->getGamemode() & 0x01)){ + $ev->setInstaBreak(true); + }elseif(($lastTime + $target->getBreakTime($item)) >= microtime(true)){ + $ev->setCancelled(true); + } + $player->lastBreak = microtime(true); + if($item instanceof Item and !$target->isBreakable($item) and $ev->getInstaBreak() === false){ $ev->setCancelled(); }