You can get the nearest player by iterating over $player->getViewers() and calculating their distances from $player. And this will make the compass for a player point towards $position. PHP: $player->setSpawn($position);
PHP: //$player is player objectif($player instanceof Position){ $closest = false; $lastSquare = -1; foreach($player->level->getPlayers() as $p){ $square = $player->distanceSquared($p); if($lastSquare === -1 or $lastSquare > $square){ $closest = $p; $lastSquare = $square; } } if($closest == false){ //Not found }else{ //$closest is the closest player object }} Addition, if you want to set needle to the closest player, use setspawnpositionpacket PHP: $pk = new SetSpawnPositionPacket();$pk->spawnType = SetSpawnPositionPacket::TYPE_WORLD_SPAWN;$pk->x = (int) $closest->getX();$pk->y = (int) $closest->getY();$pk->z = (int) $closest->getZ();$pk->spawnForced = false;$player->dataPacket($pk);