mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-09 03:06:55 +00:00
XpManager: add APIs to prevent owning Human from attracting XP orbs (#4623)
Fixes #4589 The following API methods are added: - `XpManager->canAttractXpOrbs()` - `XpManager->setCanAttractXpOrbs()` Possible future scope: flip this on its head to allow spectator players to attract XP orbs, in case someone wants that for some reason ??? Co-authored-by: Dylan K. Taylor <dktapps@pmmp.io>
This commit is contained in:
@ -166,7 +166,7 @@ class ExperienceOrb extends Entity{
|
||||
}
|
||||
|
||||
$currentTarget = $this->getTargetPlayer();
|
||||
if($currentTarget !== null and (!$currentTarget->isAlive() or $currentTarget->location->distanceSquared($this->location) > self::MAX_TARGET_DISTANCE ** 2)){
|
||||
if($currentTarget !== null and (!$currentTarget->isAlive() or !$currentTarget->getXpManager()->canAttractXpOrbs() or $currentTarget->location->distanceSquared($this->location) > self::MAX_TARGET_DISTANCE ** 2)){
|
||||
$currentTarget = null;
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ class ExperienceOrb extends Entity{
|
||||
if($currentTarget === null){
|
||||
$newTarget = $this->getWorld()->getNearestEntity($this->location, self::MAX_TARGET_DISTANCE, Human::class);
|
||||
|
||||
if($newTarget instanceof Human and !($newTarget instanceof Player and $newTarget->isSpectator())){
|
||||
if($newTarget instanceof Human and !($newTarget instanceof Player and $newTarget->isSpectator()) and $newTarget->getXpManager()->canAttractXpOrbs()){
|
||||
$currentTarget = $newTarget;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user