From 7f81507ea1db41fe496e5f7916f2b15abcd3c0cb Mon Sep 17 00:00:00 2001 From: Govdim <50422762+Govdim@users.noreply.github.com> Date: Tue, 30 Jun 2020 23:09:10 +0300 Subject: [PATCH] Add Releasable interface (#3664) closes #3301 --- src/item/Bow.php | 2 +- src/item/ConsumableItem.php | 2 +- src/item/Releasable.php | 31 +++++++++++++++++++++++++++++++ src/player/Player.php | 4 ++-- 4 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/item/Releasable.php diff --git a/src/item/Bow.php b/src/item/Bow.php index 2dcbb5b01..2c660354e 100644 --- a/src/item/Bow.php +++ b/src/item/Bow.php @@ -34,7 +34,7 @@ use pocketmine\world\sound\BowShootSound; use function intdiv; use function min; -class Bow extends Tool{ +class Bow extends Tool implements Releasable{ public function getFuelTime() : int{ return 200; diff --git a/src/item/ConsumableItem.php b/src/item/ConsumableItem.php index 54e661877..77344de64 100644 --- a/src/item/ConsumableItem.php +++ b/src/item/ConsumableItem.php @@ -28,7 +28,7 @@ use pocketmine\entity\Consumable; /** * Interface implemented by objects that can be consumed by mobs. */ -interface ConsumableItem extends Consumable{ +interface ConsumableItem extends Consumable, Releasable{ /** * Returns the leftover that this Consumable produces when it is consumed. For Items, this is usually air, but could diff --git a/src/item/Releasable.php b/src/item/Releasable.php new file mode 100644 index 000000000..07e77cf28 --- /dev/null +++ b/src/item/Releasable.php @@ -0,0 +1,31 @@ +inventory->setItemInHand($item); } - //TODO: check if item has a release action - if it doesn't, this shouldn't be set - $this->setUsingItem(true); + $this->setUsingItem($item instanceof Releasable); return true; }