diff --git a/src/pocketmine/inventory/BaseInventory.php b/src/pocketmine/inventory/BaseInventory.php index 4bd1d9431..e7ae19d62 100644 --- a/src/pocketmine/inventory/BaseInventory.php +++ b/src/pocketmine/inventory/BaseInventory.php @@ -103,6 +103,7 @@ abstract class BaseInventory implements Inventory{ } public function getItem($index){ + assert($index >= 0, "Inventory slot should not be negative"); return isset($this->slots[$index]) ? clone $this->slots[$index] : Item::get(Item::AIR, 0, 0); } diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index 7db7759b3..9066a4f65 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -214,16 +214,13 @@ class PlayerInventory extends BaseInventory{ if(!is_array($target)){ $target->dataPacket($pk); - if($target === $this->getHolder()){ + if($this->getHeldItemSlot() !== -1 and $target === $this->getHolder()){ $this->sendSlot($this->getHeldItemSlot(), $target); } }else{ $this->getHolder()->getLevel()->getServer()->broadcastPacket($target, $pk); - foreach($target as $player){ - if($player === $this->getHolder()){ - $this->sendSlot($this->getHeldItemSlot(), $player); - break; - } + if($this->getHeldItemSlot() !== -1 and in_array($this->getHolder(), $target)){ + $this->sendSlot($this->getHeldItemSlot(), $this->getHolder()); } } }