Added PlayerDeathEvent methods for inventory keeping

This commit is contained in:
Shoghi Cervantes 2014-10-09 11:06:05 +02:00
parent 94eb9e35e2
commit eccf7b08d2
2 changed files with 17 additions and 5 deletions

View File

@ -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() != ""){

View File

@ -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;
}
}