From 9a4b72add5e3cc332dee324a0c6cc2f746c3f11e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 Dec 2019 16:31:22 +0000 Subject: [PATCH] PlayerInventory: fix type violation when calling equipItem() for non-Player holder --- src/pocketmine/inventory/PlayerInventory.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index 067eccb41..6ffca62df 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -66,19 +66,23 @@ class PlayerInventory extends BaseInventory{ * @return bool if the equipment change was successful, false if not. */ public function equipItem(int $hotbarSlot) : bool{ + $holder = $this->getHolder(); if(!$this->isHotbarSlot($hotbarSlot)){ - $this->sendContents($this->getHolder()); + if($holder instanceof Player){ + $this->sendContents($holder); + } return false; } - $ev = new PlayerItemHeldEvent($this->getHolder(), $this->getItem($hotbarSlot), $hotbarSlot); - $ev->call(); + if($holder instanceof Player){ + $ev = new PlayerItemHeldEvent($holder, $this->getItem($hotbarSlot), $hotbarSlot); + $ev->call(); - if($ev->isCancelled()){ - $this->sendHeldItem($this->getHolder()); - return false; + if($ev->isCancelled()){ + $this->sendHeldItem($holder); + return false; + } } - $this->setHeldItemIndex($hotbarSlot, false); return true;