13declare(strict_types=1);
15namespace pocketmine\network\mcpe\protocol;
26 public const NETWORK_ID = ProtocolInfo::SUB_CHUNK_PACKET;
28 private int $dimension;
30 private ListWithBlobHashes|ListWithoutBlobHashes $entries;
35 public static function create(
int $dimension,
SubChunkPosition $baseSubChunkPosition, ListWithBlobHashes|ListWithoutBlobHashes $entries) : self{
37 $result->dimension = $dimension;
38 $result->baseSubChunkPosition = $baseSubChunkPosition;
39 $result->entries = $entries;
43 public function isCacheEnabled() : bool{ return $this->entries instanceof ListWithBlobHashes; }
45 public function getDimension() : int{ return $this->dimension; }
47 public function getBaseSubChunkPosition() : SubChunkPosition{ return $this->baseSubChunkPosition; }
49 public function getEntries() : ListWithBlobHashes|ListWithoutBlobHashes{ return $this->entries; }
52 $cacheEnabled = $in->getBool();
54 $this->baseSubChunkPosition = SubChunkPosition::read($in);
59 for($i = 0; $i < $count; $i++){
60 $entries[] = EntryWithBlobHash::read($in);
62 $this->entries =
new ListWithBlobHashes($entries);
65 for($i = 0; $i < $count; $i++){
66 $entries[] = EntryWithoutBlobHash::read($in);
68 $this->entries =
new ListWithoutBlobHashes($entries);
73 $out->putBool($this->entries instanceof ListWithBlobHashes);
75 $this->baseSubChunkPosition->write($out);
77 $out->putLInt(count($this->entries->getEntries()));
79 foreach($this->entries->getEntries() as $entry){
85 return $handler->handleSubChunk($this);
decodePayload(PacketSerializer $in)
encodePayload(PacketSerializer $out)
handle(PacketHandlerInterface $handler)
static create(int $dimension, SubChunkPosition $baseSubChunkPosition, ListWithBlobHashes|ListWithoutBlobHashes $entries)