Skip to content
This repository was archived by the owner on Feb 9, 2021. It is now read-only.

Commit 6cb88af

Browse files
committed
Improved block breaking time and event handling
1 parent a677bcb commit 6cb88af

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/pocketmine/level/Level.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,16 +1208,10 @@ public function useBreakOn(Vector3 $vector, Item &$item = null, Player $player =
12081208
if($player instanceof Player){
12091209
$ev = new BlockBreakEvent($player, $target, $item, ($player->getGamemode() & 0x01) === 1 ? true : false);
12101210

1211-
$lastTime = $player->lastBreak - 0.1; //TODO: replace with true lag
1212-
if(($player->getGamemode() & 0x01) > 0){
1213-
$ev->setInstaBreak(true);
1214-
}elseif(($lastTime + $target->getBreakTime($item)) >= microtime(true)){
1211+
if($item instanceof Item and !$target->isBreakable($item)){
12151212
$ev->setCancelled();
12161213
}
12171214

1218-
if($item instanceof Item and !$target->isBreakable($item) and $ev->getInstaBreak() === false){
1219-
$ev->setCancelled();
1220-
}
12211215
if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){
12221216
$t = new Vector2($target->x, $target->z);
12231217
$s = new Vector2($this->getSpawnLocation()->x, $this->getSpawnLocation()->z);
@@ -1230,8 +1224,13 @@ public function useBreakOn(Vector3 $vector, Item &$item = null, Player $player =
12301224
return false;
12311225
}
12321226

1233-
$player->lastBreak = microtime(true);
1227+
$breakTime = $player->isCreative() ? 0.15 : $target->getBreakTime($item);
12341228

1229+
if(!$ev->getInstaBreak() and ($player->lastBreak + $breakTime) >= microtime(true)){
1230+
return false;
1231+
}
1232+
1233+
$player->lastBreak = microtime(true);
12351234
}elseif($item instanceof Item and !$target->isBreakable($item)){
12361235
return false;
12371236
}

0 commit comments

Comments
 (0)