diff --git a/src/pocketmine/entity/Living.php b/src/pocketmine/entity/Living.php index cb8facf45..4e7a74bf9 100644 --- a/src/pocketmine/entity/Living.php +++ b/src/pocketmine/entity/Living.php @@ -101,7 +101,7 @@ public function attack($damage, $source = EntityDamageEvent::CAUSE_MAGIC){ $deltaX = $this->x - $e->x; $deltaZ = $this->z - $e->z; $yaw = atan2($deltaX, $deltaZ); - $this->knockBack($e, $damage, sin($yaw), cos($yaw)); + $this->knockBack($e, $damage, sin($yaw), cos($yaw), $source->getKnockBack()); } $this->setHealth($this->getHealth() - $damage); @@ -114,9 +114,8 @@ public function attack($damage, $source = EntityDamageEvent::CAUSE_MAGIC){ $this->attackTime = 10; //0.5 seconds cooldown } - public function knockBack(Entity $attacker, $damage, $x, $z){ + public function knockBack(Entity $attacker, $damage, $x, $z, $base = 0.4){ $f = sqrt($x ** 2 + $z ** 2); - $base = 0.4; $motion = new Vector3($this->motionX, $this->motionY, $this->motionZ); diff --git a/src/pocketmine/event/entity/EntityDamageByEntityEvent.php b/src/pocketmine/event/entity/EntityDamageByEntityEvent.php index aa0c757d1..6037acc4c 100644 --- a/src/pocketmine/event/entity/EntityDamageByEntityEvent.php +++ b/src/pocketmine/event/entity/EntityDamageByEntityEvent.php @@ -29,16 +29,19 @@ class EntityDamageByEntityEvent extends EntityDamageEvent{ /** @var Entity */ private $damager; - + /** @var float */ + private $knockBack; /** * @param Entity $damager * @param Entity $entity * @param int $cause * @param int|int[] $damage + * @param float $knockBack */ - public function __construct(Entity $damager, Entity $entity, $cause, $damage){ + public function __construct(Entity $damager, Entity $entity, $cause, $damage, $knockBack = 0.4){ $this->damager = $damager; + $this->knockBack = $knockBack; parent::__construct($entity, $cause, $damage); } @@ -48,6 +51,16 @@ public function __construct(Entity $damager, Entity $entity, $cause, $damage){ public function getDamager(){ return $this->damager; } - - -} \ No newline at end of file + /** + * @return float + */ + public function getKnockBack(){ + return $this->knockBack; + } + /** + * @param float $knockBack + */ + public function setKnockBack($knockBack){ + $this->knockBack = $knockBack; + } +}