From d961b272c72ae894b82e73fa18a24a8125fcd521 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 1 Mar 2019 18:18:56 +0000 Subject: [PATCH] Remove Tool <-> Block circular dependency in efficiency calculation --- src/pocketmine/block/Block.php | 2 +- src/pocketmine/item/Item.php | 2 +- src/pocketmine/item/Sword.php | 4 ++-- src/pocketmine/item/Tool.php | 5 ++--- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/pocketmine/block/Block.php b/src/pocketmine/block/Block.php index 8ae99f582..8d25ed192 100644 --- a/src/pocketmine/block/Block.php +++ b/src/pocketmine/block/Block.php @@ -325,7 +325,7 @@ class Block extends Position implements BlockIds, Metadatable{ $base *= 5; } - $efficiency = $item->getMiningEfficiency($this); + $efficiency = $item->getMiningEfficiency(($this->getToolType() & $item->getBlockToolType()) !== 0); if($efficiency <= 0){ throw new \InvalidArgumentException(get_class($item) . " has invalid mining efficiency: expected >= 0, got $efficiency"); } diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 259adb682..9e07fbc7c 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -726,7 +726,7 @@ class Item implements ItemIds, \JsonSerializable{ return 0; } - public function getMiningEfficiency(Block $block) : float{ + public function getMiningEfficiency(bool $isCorrectTool) : float{ return 1; } diff --git a/src/pocketmine/item/Sword.php b/src/pocketmine/item/Sword.php index ea411352d..39d72a671 100644 --- a/src/pocketmine/item/Sword.php +++ b/src/pocketmine/item/Sword.php @@ -41,8 +41,8 @@ class Sword extends TieredTool{ return 1; } - public function getMiningEfficiency(Block $block) : float{ - return parent::getMiningEfficiency($block) * 1.5; //swords break any block 1.5x faster than hand + public function getMiningEfficiency(bool $isCorrectTool) : float{ + return parent::getMiningEfficiency($isCorrectTool) * 1.5; //swords break any block 1.5x faster than hand } protected function getBaseMiningEfficiency() : float{ diff --git a/src/pocketmine/item/Tool.php b/src/pocketmine/item/Tool.php index 6671b05c2..47a9b651b 100644 --- a/src/pocketmine/item/Tool.php +++ b/src/pocketmine/item/Tool.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\block\Block; use pocketmine\item\enchantment\Enchantment; abstract class Tool extends Durable{ @@ -32,9 +31,9 @@ abstract class Tool extends Durable{ return 1; } - public function getMiningEfficiency(Block $block) : float{ + public function getMiningEfficiency(bool $isCorrectTool) : float{ $efficiency = 1; - if(($block->getToolType() & $this->getBlockToolType()) !== 0){ + if($isCorrectTool){ $efficiency = $this->getBaseMiningEfficiency(); if(($enchantmentLevel = $this->getEnchantmentLevel(Enchantment::EFFICIENCY())) > 0){ $efficiency += ($enchantmentLevel ** 2 + 1);