use pocketmine\item\Item; use pocketmine\network\mcpe\NetworkSession; class AddPlayerPacket extends DataPacket{ const NETWORK_ID = ProtocolInfo::ADD_PLAYER_PACKET; public $uuid; public $username; public $entityUniqueId = null; //TODO public $entityRuntimeId; public $x; public $y; public $z; public $speedX = 0.0; public $speedY = 0.0; public $speedZ = 0.0; public $pitch = 0.0; public $headYaw = null; //TODO public $yaw = 0.0; /** @var Item */ public $item; public $metadata = []; public function decode(){ $this->uuid = $this->getUUID(); $this->username = $this->getString(); $this->entityUniqueId = $this->getEntityUniqueId(); $this->entityRuntimeId = $this->getEntityRuntimeId(); $this->getVector3f($this->x, $this->y, $this->z); $this->getVector3f($this->speedX, $this->speedY, $this->speedZ); $this->pitch = $this->getLFloat(); $this->headYaw = $this->getLFloat(); $this->yaw = $this->getLFloat(); $this->item = $this->getSlot(); $this->metadata = $this->getEntityMetadata(); } public function encode(){ $this->reset(); $this->putUUID($this->uuid); $this->putString($this->username); $this->putEntityUniqueId($this->entityUniqueId ?? $this->entityRuntimeId); $this->putEntityRuntimeId($this->entityRuntimeId); $this->putVector3f($this->x, $this->y, $this->z); $this->putVector3f($this->speedX, $this->speedY, $this->speedZ); $this->putLFloat($this->pitch); $this->putLFloat($this->headYaw ?? $this->yaw); $this->putLFloat($this->yaw); $this->putSlot($this->item); $this->putEntityMetadata($this->metadata); } public function handle(NetworkSession $session) : bool{ return $session->handleAddPlayer($this); } }