diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 3b37e87f7..235b2153a 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -566,6 +566,13 @@ abstract class Entity extends Location implements Metadatable{ } } + if($this->noDamageTicks > 0){ + $this->noDamageTicks -= $tickDiff; + if($this->noDamageTicks < 0){ + $this->noDamageTicks = 0; + } + } + $this->age += $tickDiff; $this->ticksLived += $tickDiff; diff --git a/src/pocketmine/entity/Living.php b/src/pocketmine/entity/Living.php index e89d3dd05..8d65c8fda 100644 --- a/src/pocketmine/entity/Living.php +++ b/src/pocketmine/entity/Living.php @@ -69,7 +69,7 @@ abstract class Living extends Entity implements Damageable{ } public function attack($damage, $source = EntityDamageEvent::CAUSE_MAGIC){ - if($this->attackTime > 0){ + if($this->attackTime > 0 or $this->noDamageTicks > 0){ $lastCause = $this->getLastDamageCause(); if($lastCause instanceof EntityDamageEvent and $lastCause->getDamage() >= $damage){ if($source instanceof EntityDamageEvent){ @@ -82,6 +82,8 @@ abstract class Living extends Entity implements Damageable{ }else{ return; } + }else{ + return; } }elseif($source instanceof EntityDamageEvent){ $this->server->getPluginManager()->callEvent($source);