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; } }