From a3fa8adf4a21d5242fc0ab924a9685f67ba562c3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 17 Feb 2018 10:58:54 +0000 Subject: [PATCH] Fixed XP orbs trying to track players after teleport closes #2028 @mal0ne-23, you are today's MVP. --- src/pocketmine/entity/object/ExperienceOrb.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pocketmine/entity/object/ExperienceOrb.php b/src/pocketmine/entity/object/ExperienceOrb.php index ec35577cb..c2ef20a99 100644 --- a/src/pocketmine/entity/object/ExperienceOrb.php +++ b/src/pocketmine/entity/object/ExperienceOrb.php @@ -165,16 +165,16 @@ class ExperienceOrb extends Entity{ } $currentTarget = $this->getTargetPlayer(); + if($currentTarget !== null and $currentTarget->distanceSquared($this) > self::MAX_TARGET_DISTANCE ** 2){ + $currentTarget = null; + } if($this->lookForTargetTime >= 20){ - if($currentTarget === null or $currentTarget->distanceSquared($this) > self::MAX_TARGET_DISTANCE ** 2){ - $this->setTargetPlayer(null); - + if($currentTarget === null){ $newTarget = $this->level->getNearestEntity($this, self::MAX_TARGET_DISTANCE, Human::class); if($newTarget instanceof Human and !($newTarget instanceof Player and $newTarget->isSpectator())){ $currentTarget = $newTarget; - $this->setTargetPlayer($currentTarget); } } @@ -183,6 +183,8 @@ class ExperienceOrb extends Entity{ $this->lookForTargetTime += $tickDiff; } + $this->setTargetPlayer($currentTarget); + if($currentTarget !== null){ $vector = $currentTarget->subtract($this)->add(0, $currentTarget->getEyeHeight() / 2, 0)->divide(self::MAX_TARGET_DISTANCE);