diff --git a/src/pocketmine/entity/Projectile.php b/src/pocketmine/entity/Projectile.php index ae8df16b9b..f926afdad3 100644 --- a/src/pocketmine/entity/Projectile.php +++ b/src/pocketmine/entity/Projectile.php @@ -23,6 +23,7 @@ namespace pocketmine\entity; use pocketmine\event\entity\EntityCombustByEntityEvent; +use pocketmine\event\entity\EntityDamageByChildEntityEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\event\entity\EntityRegainHealthEvent; @@ -134,8 +135,12 @@ abstract class Projectile extends Entity{ $motion = sqrt($this->motionX ** 2 + $this->motionY ** 2 + $this->motionZ ** 2); $damage = ceil($motion * $this->damage); + if($this->shootingEntity === null){ + $ev = new EntityDamageByEntityEvent($this, $movingObjectPosition->entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); + }else{ + $ev = new EntityDamageByChildEntityEvent($this->shootingEntity, $this, $movingObjectPosition->entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); + } - $ev = new EntityDamageByEntityEvent($this->shootingEntity === null ? $this : $this->shootingEntity, $movingObjectPosition->entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); $movingObjectPosition->entityHit->attack($ev->getFinalDamage(), $ev); diff --git a/src/pocketmine/event/entity/EntityDamageByChildEntityEvent.php b/src/pocketmine/event/entity/EntityDamageByChildEntityEvent.php new file mode 100644 index 0000000000..885010eb13 --- /dev/null +++ b/src/pocketmine/event/entity/EntityDamageByChildEntityEvent.php @@ -0,0 +1,54 @@ +childEntity = $childEntity; + parent::__construct($damager, $entity, $cause, $damage); + } + + /** + * @return Entity + */ + public function getChild(){ + return $this->childEntity; + } + + +} \ No newline at end of file