From 4a1fc1bdf7e91e50095ec6f3d4be742b4a608c05 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Sep 2017 10:18:24 +0100 Subject: [PATCH] don't try to send contents during inventory construction --- src/pocketmine/inventory/BaseInventory.php | 9 ++++++--- src/pocketmine/inventory/DoubleChestInventory.php | 7 +++++-- src/pocketmine/inventory/Inventory.php | 3 ++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/pocketmine/inventory/BaseInventory.php b/src/pocketmine/inventory/BaseInventory.php index 62157c2a87..3681e73689 100644 --- a/src/pocketmine/inventory/BaseInventory.php +++ b/src/pocketmine/inventory/BaseInventory.php @@ -59,7 +59,7 @@ abstract class BaseInventory implements Inventory{ $this->slots = new \SplFixedArray($size ?? $this->getDefaultSize()); $this->title = $title ?? $this->getName(); - $this->setContents($items); + $this->setContents($items, false); } abstract public function getName() : string; @@ -105,8 +105,9 @@ abstract class BaseInventory implements Inventory{ /** * @param Item[] $items + * @param bool $send */ - public function setContents(array $items){ + public function setContents(array $items, bool $send = true){ if(count($items) > $this->getSize()){ $items = array_slice($items, 0, $this->getSize(), true); } @@ -123,7 +124,9 @@ abstract class BaseInventory implements Inventory{ } } - $this->sendContents($this->getViewers()); + if($send){ + $this->sendContents($this->getViewers()); + } } protected function doSetItemEvents(int $index, Item $newItem) : ?Item{ diff --git a/src/pocketmine/inventory/DoubleChestInventory.php b/src/pocketmine/inventory/DoubleChestInventory.php index 93bb6a981b..872f3f0e03 100644 --- a/src/pocketmine/inventory/DoubleChestInventory.php +++ b/src/pocketmine/inventory/DoubleChestInventory.php @@ -84,8 +84,9 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{ /** * @param Item[] $items + * @param bool $send */ - public function setContents(array $items){ + public function setContents(array $items, bool $send = true){ $size = $this->getSize(); if(count($items) > $size){ $items = array_slice($items, 0, $size, true); @@ -103,7 +104,9 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{ } } - $this->sendContents($this->getViewers()); + if($send){ + $this->sendContents($this->getViewers()); + } } public function onOpen(Player $who){ diff --git a/src/pocketmine/inventory/Inventory.php b/src/pocketmine/inventory/Inventory.php index ba5b58ddaf..45e867730a 100644 --- a/src/pocketmine/inventory/Inventory.php +++ b/src/pocketmine/inventory/Inventory.php @@ -114,8 +114,9 @@ interface Inventory{ /** * @param Item[] $items + * @param bool $send */ - public function setContents(array $items); + public function setContents(array $items, bool $send = true); /** * @param Player|Player[] $target