Inheritance: extends DataPacket
Beispiel #1
0
 public function broadcastPacketsCallback($data, array $identifiers)
 {
     $pk = new BatchPacket();
     $pk->payload = $data;
     $pk->encode();
     $pk->isEncoded = true;
     foreach ($identifiers as $i) {
         if (isset($this->players[$i])) {
             $this->players[$i]->dataPacket($pk);
         }
     }
 }
Beispiel #2
0
 /**
  * @param $chunkX
  * @param $chunkZ
  * @param $payload
  *
  * @return DataPacket
  */
 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;
     $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;
 }
Beispiel #3
0
 /**
  * Batch a Data packet
  *
  * @param DataPacket $packet
  *
  * @return bool
  */
 public function batchDataPacket(DataPacket $packet)
 {
     $str = "";
     if ($packet instanceof DataPacket) {
         if (!$packet->isEncoded) {
             $packet->encode();
         }
         $str .= Binary::writeInt(strlen($packet->buffer)) . $packet->buffer;
     } else {
         $str .= Binary::writeInt(strlen($packet)) . $packet;
     }
     $pk = new BatchPacket();
     $pk->payload = zlib_encode($str, ZLIB_ENCODING_DEFLATE, 7);
     $pk->encode();
     $pk->isEncoded = true;
     $this->dataPacket($pk);
 }
Beispiel #4
0
 /**
  * @param $chunkX
  * @param $chunkZ
  * @param $payload
  *
  * @return DataPacket
  */
 public static function getChunkCacheFromData($chunkX, $chunkZ, $payload)
 {
     $pk = new FullChunkDataPacket();
     $pk->chunkX = $chunkX;
     $pk->chunkZ = $chunkZ;
     $pk->data = $payload;
     $pk->encode();
     $batch = new BatchPacket();
     $batch->payload = zlib_encode($pk->getBuffer(), ZLIB_ENCODING_DEFLATE, Server::getInstance()->networkCompressionLevel);
     $batch->setChannel(Network::CHANNEL_WORLD_CHUNKS);
     $batch->encode();
     $batch->isEncoded = true;
     return $batch;
 }
Beispiel #5
0
 public function sendBatchedChunk($x, $z, $payload)
 {
     $this->usedChunks[Level::chunkHash($x, $z)] = true;
     $this->chunkLoadCount++;
     $bt = new BatchPacket();
     $bt->payload = $payload;
     $bt->encode();
     $bt->isEncoded = true;
     $this->dataPacket($bt);
 }
Beispiel #6
0
 public function sendChunks($data = array())
 {
     if ($this->connected === \false) {
         return;
     }
     $bt = new BatchPacket();
     $str = "";
     foreach ($data as $set) {
         $x = $set["x"];
         $z = $set["z"];
         $payload = $set["payload"];
         $this->usedChunks[Level::chunkHash($x, $z)] = true;
         $this->chunkLoadCount++;
         $pk = new FullChunkDataPacket();
         $pk->chunkX = $x;
         $pk->chunkZ = $z;
         $pk->data = $payload;
         $pk->setChannel(Network::CHANNEL_WORLD_CHUNKS);
         $pk->encode();
         $str .= $pk->buffer;
     }
     $bt->setChannel($this->spawned ? Network::CHANNEL_WORLD_CHUNKS : Network::CHANNEL_PRIORITY);
     $bt->payload = zlib_encode($str, ZLIB_ENCODING_DEFLATE, 6);
     $bt->encode();
     $bt->isEncoded = true;
     $this->dataPacket($bt);
     foreach ($data as $set) {
         $x = $set["x"];
         $z = $set["z"];
         $payload = $set["payload"];
         if ($this->spawned) {
             foreach ($this->level->getChunkEntities($x, $z) as $entity) {
                 if ($entity !== $this and !$entity->closed and !$entity->dead) {
                     $entity->spawnTo($this);
                 }
             }
         }
     }
 }
Beispiel #7
-1
 public function sendChunk($x, $z, $payload, $ordering = FullChunkDataPacket::ORDER_COLUMNS)
 {
     if ($this->connected === false) {
         return;
     }
     $this->usedChunks[Level::chunkHash($x, $z)] = true;
     $this->chunkLoadCount++;
     $pk = new FullChunkDataPacket();
     $pk->chunkX = $x;
     $pk->chunkZ = $z;
     $pk->order = $ordering;
     $pk->data = $payload;
     $pk->encode();
     $bt = new BatchPacket();
     $str = $pk->buffer;
     $bt->payload = zlib_encode($str, ZLIB_ENCODING_DEFLATE, 7);
     $bt->encode();
     $bt->isEncoded = true;
     $this->dataPacket($bt);
     if ($this->spawned) {
         foreach ($this->level->getChunkEntities($x, $z) as $entity) {
             if ($entity !== $this and !$entity->closed and !$entity->dead) {
                 $entity->spawnTo($this);
             }
         }
     }
 }