diff --git a/src/pocketmine/entity/Arrow.php b/src/pocketmine/entity/Arrow.php index c9b972e00..98cee73b5 100644 --- a/src/pocketmine/entity/Arrow.php +++ b/src/pocketmine/entity/Arrow.php @@ -26,6 +26,7 @@ use pocketmine\event\entity\EntityCombustByEntityEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\event\entity\EntityRegainHealthEvent; +use pocketmine\event\entity\ProjectileHitEvent; use pocketmine\level\format\FullChunk; use pocketmine\level\MovingObjectPosition; use pocketmine\math\Vector3; @@ -118,6 +119,9 @@ class Arrow extends Projectile{ if($movingObjectPosition !== null){ if($movingObjectPosition->entityHit !== null){ + + $this->server->getPluginManager()->callEvent(new ProjectileHitEvent($this)); + $motion = sqrt($this->motionX ** 2 + $this->motionY ** 2 + $this->motionZ ** 2); $damage = ceil($motion * $this->damage); @@ -144,10 +148,12 @@ class Arrow extends Projectile{ $this->move($this->motionX, $this->motionY, $this->motionZ); - if($this->onGround){ + if($this->onGround and ($this->motionX != 0 or $this->motionY != 0 or $this->motionZ != 0)){ $this->motionX = 0; $this->motionY = 0; $this->motionZ = 0; + + $this->server->getPluginManager()->callEvent(new ProjectileHitEvent($this)); } if($this->motionX != 0 or $this->motionY != 0 or $this->motionZ != 0){ diff --git a/src/pocketmine/event/entity/ProjectileHitEvent.php b/src/pocketmine/event/entity/ProjectileHitEvent.php new file mode 100644 index 000000000..2d60056a0 --- /dev/null +++ b/src/pocketmine/event/entity/ProjectileHitEvent.php @@ -0,0 +1,45 @@ +entity = $entity; + + } + + /** + * @return Projectile + */ + public function getEntity(){ + return $this->entity; + } + +} \ No newline at end of file diff --git a/src/pocketmine/event/entity/ProjectileLaunchEvent.php b/src/pocketmine/event/entity/ProjectileLaunchEvent.php index d38a0a14f..f2104b5a8 100644 --- a/src/pocketmine/event/entity/ProjectileLaunchEvent.php +++ b/src/pocketmine/event/entity/ProjectileLaunchEvent.php @@ -28,10 +28,10 @@ class ProjectileLaunchEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; /** - * @param Projectile $item + * @param Projectile $entity */ - public function __construct(Projectile $item){ - $this->entity = $item; + public function __construct(Projectile $entity){ + $this->entity = $entity; }