pocketmine\Player::getChunkCacheFromData PHP Method

getChunkCacheFromData() public static method

public static getChunkCacheFromData ( $chunkX, $chunkZ, $payload, integer $ordering = FullChunkDataPacket::ORDER_COLUMNS ) : BatchPacket | FullChunkDataPacket
$chunkX
$chunkZ
$payload
$ordering integer
return pocketmine\network\protocol\BatchPacket | pocketmine\network\protocol\FullChunkDataPacket
    public static function getChunkCacheFromData($chunkX, $chunkZ, $payload, $ordering = FullChunkDataPacket::ORDER_COLUMNS)
    {
        $pk = new FullChunkDataPacket();
        $pk->chunkX = $chunkX;
        $pk->chunkZ = $chunkZ;
        $pk->order = $ordering;
        $pk->data = $payload;
        if (Network::$BATCH_THRESHOLD >= 0) {
            $pk->encode();
            $batch = new BatchPacket();
            $batch->payload = zlib_encode(Binary::writeInt(strlen($pk->getBuffer())) . $pk->getBuffer(), ZLIB_ENCODING_DEFLATE, Server::getInstance()->networkCompressionLevel);
            $batch->encode();
            $batch->isEncoded = true;
            return $batch;
        }
        return $pk;
    }

Usage Example

Exemplo n.º 1
0
 public function chunkRequestCallback($x, $z, $payload, $ordering = FullChunkDataPacket::ORDER_COLUMNS)
 {
     $this->timings->syncChunkSendTimer->startTiming();
     $index = Level::chunkHash($x, $z);
     if (!isset($this->chunkCache[$index]) and $this->cacheChunks and $this->server->getMemoryManager()->canUseChunkCache()) {
         $this->chunkCache[$index] = Player::getChunkCacheFromData($x, $z, $payload, $ordering);
         $this->sendChunkFromCache($x, $z);
         $this->timings->syncChunkSendTimer->stopTiming();
         return;
     }
     if (isset($this->chunkSendTasks[$index])) {
         foreach ($this->chunkSendQueue[$index] as $player) {
             /** @var Player $player */
             if ($player->isConnected() and isset($player->usedChunks[$index])) {
                 $player->sendChunk($x, $z, $payload, $ordering);
             }
         }
         unset($this->chunkSendQueue[$index]);
         unset($this->chunkSendTasks[$index]);
     }
     $this->timings->syncChunkSendTimer->stopTiming();
 }
Player