diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 1d8755b4c..5d43318e2 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2436,12 +2436,15 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ Entity::kill(); $this->server->getPluginManager()->callEvent($ev = new PlayerDeathEvent($this, $this->getDrops(), $message)); - foreach($ev->getDrops() as $item){ - $this->getLevel()->dropItem($this, $item); - } - if($this->inventory !== null){ - $this->inventory->clearAll(); + if(!$ev->getKeepInventory()){ + foreach($ev->getDrops() as $item){ + $this->getLevel()->dropItem($this, $item); + } + + if($this->inventory !== null){ + $this->inventory->clearAll(); + } } if($ev->getDeathMessage() != ""){ diff --git a/src/pocketmine/event/player/PlayerDeathEvent.php b/src/pocketmine/event/player/PlayerDeathEvent.php index 4e048d33b..a4b98c82d 100644 --- a/src/pocketmine/event/player/PlayerDeathEvent.php +++ b/src/pocketmine/event/player/PlayerDeathEvent.php @@ -29,6 +29,7 @@ class PlayerDeathEvent extends EntityDeathEvent{ public static $handlerList = null; private $deathMessage; + private $keepInventory = false; /** * @param Player $entity @@ -55,4 +56,12 @@ class PlayerDeathEvent extends EntityDeathEvent{ $this->deathMessage = $deathMessage; } + public function getKeepInventory(){ + return $this->keepInventory; + } + + public function setKeepInventory($keepInventory){ + $this->keepInventory = (bool) $keepInventory; + } + } \ No newline at end of file