use pocketmine\network\mcpe\NetworkSession; use pocketmine\resourcepacks\ResourcePack; use pocketmine\resourcepacks\ResourcePackInfoEntry; class ResourcePacksInfoPacket extends DataPacket{ const NETWORK_ID = ProtocolInfo::RESOURCE_PACKS_INFO_PACKET; /** @var bool */ public $mustAccept = false; //if true, forces client to use selected resource packs /** @var ResourcePack[] */ public $behaviorPackEntries = []; /** @var ResourcePack[] */ public $resourcePackEntries = []; protected function decodePayload(){ /*$this->mustAccept = $this->getBool(); $behaviorPackCount = $this->getLShort(); while($behaviorPackCount-- > 0){ $id = $this->getString(); $version = $this->getString(); $size = $this->getLLong(); $this->behaviorPackEntries[] = new ResourcePackInfoEntry($id, $version, $size); $this->getString(); } $resourcePackCount = $this->getLShort(); while($resourcePackCount-- > 0){ $id = $this->getString(); $version = $this->getString(); $size = $this->getLLong(); $this->resourcePackEntries[] = new ResourcePackInfoEntry($id, $version, $size); $this->getString(); }*/ } protected function encodePayload(){ $this->putBool($this->mustAccept); $this->putLShort(count($this->behaviorPackEntries)); foreach($this->behaviorPackEntries as $entry){ $this->putString($entry->getPackId()); $this->putString($entry->getPackVersion()); $this->putLLong($entry->getPackSize()); $this->putString(""); //TODO $this->putString(""); //TODO } $this->putLShort(count($this->resourcePackEntries)); foreach($this->resourcePackEntries as $entry){ $this->putString($entry->getPackId()); $this->putString($entry->getPackVersion()); $this->putLLong($entry->getPackSize()); $this->putString(""); //TODO $this->putString(""); //TODO } } public function handle(NetworkSession $session) : bool{ return $session->handleResourcePacksInfo($this); } }