From a3e50f6337305adecce32aa36a43a92e4d954acc Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Thu, 27 Nov 2014 13:32:07 +0100 Subject: [PATCH] Properly close inventory windows from Players --- src/pocketmine/Player.php | 2 +- src/pocketmine/entity/Human.php | 4 +++- src/pocketmine/tile/Chest.php | 6 +++--- src/pocketmine/tile/Furnace.php | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index ce32490c8..999ccae86 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1150,7 +1150,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $pk = new MovePlayerPacket(); $pk->eid = 0; $pk->x = $from->x; - $pk->y = $from->y + $this->getEyeHeight() + 0.01; + $pk->y = $from->y + $this->getEyeHeight(); $pk->z = $from->z; $pk->bodyYaw = $from->yaw; $pk->pitch = $from->pitch; diff --git a/src/pocketmine/entity/Human.php b/src/pocketmine/entity/Human.php index aefb4dd6c..60d79ddbd 100644 --- a/src/pocketmine/entity/Human.php +++ b/src/pocketmine/entity/Human.php @@ -218,7 +218,9 @@ class Human extends Creature implements ProjectileSource, InventoryHolder{ $this->getInventory()->close($player); } } - $this->inventory = null; + foreach($this->inventory->getViewers() as $viewer){ + $viewer->removeWindow($this->inventory); + } parent::close(); } } diff --git a/src/pocketmine/tile/Chest.php b/src/pocketmine/tile/Chest.php index d61245f2d..e6042b017 100644 --- a/src/pocketmine/tile/Chest.php +++ b/src/pocketmine/tile/Chest.php @@ -59,11 +59,11 @@ class Chest extends Spawnable implements InventoryHolder, Container{ public function close(){ if($this->closed === false){ foreach($this->getInventory()->getViewers() as $player){ - $this->getInventory()->close($player); + $player->removeWindow($this->getInventory()); } - foreach($this->getRealInventory()->getViewers() as $player){ - $this->getRealInventory()->close($player); + foreach($this->getInventory()->getViewers() as $player){ + $player->removeWindow($this->getRealInventory()); } parent::close(); } diff --git a/src/pocketmine/tile/Furnace.php b/src/pocketmine/tile/Furnace.php index 99700110a..e1a21249a 100644 --- a/src/pocketmine/tile/Furnace.php +++ b/src/pocketmine/tile/Furnace.php @@ -71,7 +71,7 @@ class Furnace extends Tile implements InventoryHolder, Container{ public function close(){ if($this->closed === false){ foreach($this->getInventory()->getViewers() as $player){ - $this->getInventory()->close($player); + $player->removeWindow($this->getInventory()); } parent::close(); }