diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 58d73217e..86b3a7873 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2150,17 +2150,28 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ case EntityDamageEvent::CAUSE_SUICIDE: break; + case EntityDamageEvent::CAUSE_VOID: + $message = $this->getName() ." fell out of the world"; + break; + case EntityDamageEvent::CAUSE_FALL: + if($ev instanceof EntityDamageEvent){ + if($ev->getFinalDamage() > 2){ + $message = $this->getName() ." fell from a high place"; + break; + } + } + $message = $this->getName() ." hit the ground too hard"; + break; + case EntityDamageEvent::CAUSE_CONTACT: case EntityDamageEvent::CAUSE_PROJECTILE: case EntityDamageEvent::CAUSE_SUFFOCATION: - case EntityDamageEvent::CAUSE_FALL: case EntityDamageEvent::CAUSE_FIRE: case EntityDamageEvent::CAUSE_FIRE_TICK: case EntityDamageEvent::CAUSE_LAVA: case EntityDamageEvent::CAUSE_DROWNING: case EntityDamageEvent::CAUSE_BLOCK_EXPLOSION: case EntityDamageEvent::CAUSE_ENTITY_EXPLOSION: - case EntityDamageEvent::CAUSE_VOID: case EntityDamageEvent::CAUSE_MAGIC: case EntityDamageEvent::CAUSE_CUSTOM: diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 1da4d5e62..0eef27859 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -581,8 +581,15 @@ abstract class Entity extends Position implements Metadatable{ return $this->boundingBox; } - public function fall($fallDistance){ //TODO - + public function fall($fallDistance){ + $damage = floor($fallDistance - 3); + if($damage > 0){ + $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_FALL, $damage)); + if($ev->isCancelled()){ + return; + } + $this->attack($ev->getFinalDamage(), $ev); + } } public function handleWaterMovement(){ //TODO