13declare(strict_types=1);
15namespace pocketmine\network\mcpe\protocol;
22 public const NETWORK_ID = ProtocolInfo::PLAYER_LIST_PACKET;
24 public const TYPE_ADD = 0;
25 public const TYPE_REMOVE = 1;
29 public array $entries = [];
35 private static function create(
int $type, array $entries) :
self{
37 $result->type = $type;
38 $result->entries = $entries;
45 public static function add(array $entries) : self{
46 return self::create(self::TYPE_ADD, $entries);
52 public static function remove(array $entries) :
self{
53 return self::create(self::TYPE_REMOVE, $entries);
57 $this->type = $in->getByte();
59 for($i = 0; $i < $count; ++$i){
62 if($this->type === self::TYPE_ADD){
67 $entry->platformChatId = $in->
getString();
68 $entry->buildPlatform = $in->
getLInt();
69 $entry->skinData = $in->getSkin();
70 $entry->isTeacher = $in->
getBool();
71 $entry->isHost = $in->
getBool();
72 $entry->isSubClient = $in->
getBool();
77 $this->entries[$i] = $entry;
79 if($this->type === self::TYPE_ADD){
80 for($i = 0; $i < $count; ++$i){
81 $this->entries[$i]->skinData->setVerified($in->
getBool());
87 $out->putByte($this->type);
89 foreach($this->entries as $entry){
90 if($this->type === self::TYPE_ADD){
91 $out->putUUID($entry->uuid);
92 $out->putActorUniqueId($entry->actorUniqueId);
93 $out->putString($entry->username);
94 $out->putString($entry->xboxUserId);
95 $out->putString($entry->platformChatId);
96 $out->putLInt($entry->buildPlatform);
97 $out->putSkin($entry->skinData);
98 $out->putBool($entry->isTeacher);
99 $out->putBool($entry->isHost);
100 $out->putBool($entry->isSubClient);
102 $out->putUUID($entry->uuid);
105 if($this->type === self::TYPE_ADD){
106 foreach($this->entries as $entry){
107 $out->putBool($entry->skinData->isVerified());
113 return $handler->handlePlayerList($this);
decodePayload(PacketSerializer $in)
handle(PacketHandlerInterface $handler)
encodePayload(PacketSerializer $out)
static add(array $entries)
putUnsignedVarInt(int $v)