1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Player Locator

Discussion in 'Development' started by A354-PH, Nov 10, 2018.

  1. A354-PH

    A354-PH Baby Zombie

    Messages:
    186
    GitHub:
    Kizu
    Hey guys, how to make a compass that locates the nearby player?
     
  2. Muqsit

    Muqsit Chicken

    Messages:
    1,548
    GitHub:
    muqsit
    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);
     
  3. korado531m7

    korado531m7 Slime

    Messages:
    77
    GitHub:
    korado531m7
    PHP:
    //$player is player object
    if($player instanceof Position){
        
    $closest false;
        
    $lastSquare = -1;
        foreach(
    $player->level->getPlayers() as $p){
          
    $square $player->distanceSquared($p);
            if(
    $lastSquare === -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->= (int) $closest->getX();
    $pk->= (int) $closest->getY();
    $pk->= (int) $closest->getZ();
    $pk->spawnForced false;
    $player->dataPacket($pk);
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.