Projectile: allow using negative damage amounts to remove damage effects

This commit is contained in:
Dylan K. Taylor 2018-03-09 11:16:37 +00:00
parent a8a3eb3866
commit cdd3fe81e1

View File

@ -284,19 +284,21 @@ abstract class Projectile extends Entity{
protected function onHitEntity(Entity $entityHit, RayTraceResult $hitResult) : void{ protected function onHitEntity(Entity $entityHit, RayTraceResult $hitResult) : void{
$damage = $this->getResultDamage(); $damage = $this->getResultDamage();
if($this->getOwningEntity() === null){ if($damage >= 0){
$ev = new EntityDamageByEntityEvent($this, $entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); if($this->getOwningEntity() === null){
}else{ $ev = new EntityDamageByEntityEvent($this, $entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage);
$ev = new EntityDamageByChildEntityEvent($this->getOwningEntity(), $this, $entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); }else{
} $ev = new EntityDamageByChildEntityEvent($this->getOwningEntity(), $this, $entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage);
}
$entityHit->attack($ev); $entityHit->attack($ev);
if($this->fireTicks > 0){ if($this->fireTicks > 0){
$ev = new EntityCombustByEntityEvent($this, $entityHit, 5); $ev = new EntityCombustByEntityEvent($this, $entityHit, 5);
$this->server->getPluginManager()->callEvent($ev); $this->server->getPluginManager()->callEvent($ev);
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$entityHit->setOnFire($ev->getDuration()); $entityHit->setOnFire($ev->getDuration());
}
} }
} }