don't try to send contents during inventory construction

This commit is contained in:
Dylan K. Taylor 2017-09-20 10:18:24 +01:00
parent 85b2b2ae2e
commit 4a1fc1bdf7
3 changed files with 13 additions and 6 deletions

View File

@ -59,7 +59,7 @@ abstract class BaseInventory implements Inventory{
$this->slots = new \SplFixedArray($size ?? $this->getDefaultSize()); $this->slots = new \SplFixedArray($size ?? $this->getDefaultSize());
$this->title = $title ?? $this->getName(); $this->title = $title ?? $this->getName();
$this->setContents($items); $this->setContents($items, false);
} }
abstract public function getName() : string; abstract public function getName() : string;
@ -105,8 +105,9 @@ abstract class BaseInventory implements Inventory{
/** /**
* @param Item[] $items * @param Item[] $items
* @param bool $send
*/ */
public function setContents(array $items){ public function setContents(array $items, bool $send = true){
if(count($items) > $this->getSize()){ if(count($items) > $this->getSize()){
$items = array_slice($items, 0, $this->getSize(), true); $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{ protected function doSetItemEvents(int $index, Item $newItem) : ?Item{

View File

@ -84,8 +84,9 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{
/** /**
* @param Item[] $items * @param Item[] $items
* @param bool $send
*/ */
public function setContents(array $items){ public function setContents(array $items, bool $send = true){
$size = $this->getSize(); $size = $this->getSize();
if(count($items) > $size){ if(count($items) > $size){
$items = array_slice($items, 0, $size, true); $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){ public function onOpen(Player $who){

View File

@ -114,8 +114,9 @@ interface Inventory{
/** /**
* @param Item[] $items * @param Item[] $items
* @param bool $send
*/ */
public function setContents(array $items); public function setContents(array $items, bool $send = true);
/** /**
* @param Player|Player[] $target * @param Player|Player[] $target