pocketmine\entity\Entity::setLinked PHP Method

setLinked() public method

public setLinked ( $type, Entity $entity )
$entity Entity
    public function setLinked($type = 0, Entity $entity)
    {
        if ($type != 0 and $entity === null) {
            return false;
        }
        if ($entity === $this) {
            return false;
        }
        switch ($type) {
            case 0:
                if ($this->linkedType == 0) {
                    return true;
                }
                $this->linkedType = 0;
                $pk = new SetEntityLinkPacket();
                $pk->from = $entity->getId();
                $pk->to = $this->getId();
                $pk->type = 3;
                $this->server->broadcastPacket($this->level->getPlayers(), $pk);
                if ($this instanceof Player) {
                    $pk = new SetEntityLinkPacket();
                    $pk->from = $entity->getId();
                    $pk->to = 0;
                    $pk->type = 3;
                    $this->dataPacket($pk);
                }
                if ($this->linkedEntity->getLinkedType()) {
                    $this->linkedEntity->setLinked(0, $this);
                }
                $this->linkedEntity = null;
                return true;
            case 1:
                if (!$entity->isAlive()) {
                    return false;
                }
                $this->linkedEntity = $entity;
                $this->linkedType = 1;
                $entity->linkedEntity = $this;
                $entity->linkedType = 1;
                $pk = new SetEntityLinkPacket();
                $pk->from = $entity->getId();
                $pk->to = $this->getId();
                $pk->type = 2;
                $this->server->broadcastPacket($this->level->getPlayers(), $pk);
                if ($this instanceof Player) {
                    $pk = new SetEntityLinkPacket();
                    $pk->from = $entity->getId();
                    $pk->to = 0;
                    $pk->type = 2;
                    $this->dataPacket($pk);
                }
                return true;
            case 2:
                if (!$entity->isAlive()) {
                    return false;
                }
                if ($entity->getLinkedEntity() !== $this) {
                    return $entity->linkEntity($this);
                }
                $this->linkedEntity = $entity;
                $this->linkedType = 2;
                return true;
            default:
                return false;
        }
    }

Usage Example

Example #1
0
 public function setLinked($type = 0, Entity $entity = null)
 {
     if ($type != 0 and $entity === null) {
         return false;
     }
     if ($entity === $this) {
         return false;
     }
     switch ($type) {
         case 0:
             if ($this->linkedType == 0) {
                 return true;
             }
             $this->linkedType = 0;
             $pk = new SetEntityLinkPacket();
             $pk->from = $entity->getId();
             $pk->to = $this->getId();
             $pk->type = 3;
             $this->server->broadcastPacket($this->level->getPlayers(), $pk);
             if ($this instanceof Player) {
                 $pk = new SetEntityLinkPacket();
                 $pk->from = $entity->getId();
                 $pk->to = 0;
                 $pk->type = 3;
                 $this->dataPacket($pk);
             }
             if ($this->linkedEntity->getLinkedType()) {
                 $this->linkedEntity->setLinked(0, $this);
             }
             return true;
         case 1:
             if (!$entity->isAlive()) {
                 return false;
             }
             $this->linkedEntity = $entity;
             $this->linkedType = 1;
             $pk = new SetEntityLinkPacket();
             $pk->from = $entity->getId();
             $pk->to = $this->getId();
             $pk->type = 2;
             $this->server->broadcastPacket($this->level->getPlayers(), $pk);
             if ($this instanceof Player) {
                 $pk = new SetEntityLinkPacket();
                 $pk->from = $entity->getId();
                 $pk->to = 0;
                 $pk->type = 2;
                 $this->dataPacket($pk);
             }
             return true;
         case 2:
             if (!$entity->isAlive()) {
                 return false;
             }
             if ($entity->getLinkedEntity() !== $this) {
                 return $entity->linkEntity($this);
             }
             $this->linkedEntity = $entity;
             $this->linkedType = 2;
             return true;
         default:
             return false;
     }
 }