public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level instanceof Level and $this->hasResult()) { $level->chunkRequestCallback($this->chunkX, $this->chunkZ, $this->getResult()); } }
public function handlePackets() { while (strlen($packet = $this->generationThread->readThreadToMainPacket()) > 0) { $pid = ord($packet[0]); $offset = 1; if ($pid === GenerationManager::PACKET_REQUEST_CHUNK) { $levelID = Binary::readInt(substr($packet, $offset, 4)); $offset += 4; $chunkX = Binary::readInt(substr($packet, $offset, 4)); $offset += 4; $chunkZ = Binary::readInt(substr($packet, $offset, 4)); $this->handleRequest($levelID, $chunkX, $chunkZ); } elseif ($pid === GenerationManager::PACKET_SEND_CHUNK) { $levelID = Binary::readInt(substr($packet, $offset, 4)); $offset += 4; $len = ord($packet[$offset++]); /** @var FullChunk $class */ $class = substr($packet, $offset, $len); $offset += $len; $level = $this->server->getLevel($levelID); if ($level instanceof Level) { $chunk = $class::fromBinary(substr($packet, $offset), $level->getProvider()); $this->receiveChunk($levelID, $chunk); } } } }
public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level instanceof Level and $this->hasResult()) { $level->chunkRequestCallback($this->chunkX, $this->chunkZ, $this->getResult(), FullChunkDataPacket::ORDER_LAYERED); } }
public function receiveChunk($levelID, FullChunk $chunk) { if (($level = $this->server->getLevel($levelID)) instanceof Level) { $level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk); } else { $this->generationManager->closeLevel($levelID); } }
public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level !== null) { /** @var FullChunk $chunk */ $chunk = $this->chunkClass; $chunk = $chunk::fromFastBinary($this->chunk, $level->getProvider()); if ($chunk === null) { //TODO error return; } $level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk); } }
public function onCompletion(Server $server) { $chunks = $this->getResult(); $plugin = $server->getPluginManager()->getPlugin("MineReset"); if ($plugin instanceof MineReset and $plugin->isEnabled()) { $level = $server->getLevel($this->levelId); if ($level != null) { foreach ($chunks as $hash => $chunk) { Level::getXZ($hash, $x, $z); $level->setChunk($x, $z, $chunk); } } $plugin->getRegionBlocker()->freeZone($this->regionId, $this->levelId); } }
public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level instanceof Level and $this->hasResult()) { $level->chunkRequestCallback($this->chunkX, $this->chunkZ, $this->getResult(), FullChunkDataPacket::ORDER_LAYERED); } $this->levelId = null; $this->chunkX = null; $this->chunkZ = null; $this->chunk = null; $this->tiles = null; $this->setResult(null, false); unset($this->levelId); unset($this->chunk); unset($this->chunkX); unset($this->chunkZ); unset($this->tiles); }
public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level !== \null) { if ($this->state === \false) { $level->registerGenerator(); return; } /** @var FullChunk $chunkC */ $chunkC = $this->chunkClass; $chunk = $chunkC::fromFastBinary($this->chunk, $level->getProvider()); if ($chunk === \null) { //TODO error return; } for ($i = 0; $i < 9; ++$i) { if ($i === 4) { continue; } $c = $this->{"chunk{$i}"}; if ($c !== \null) { $c = $chunkC::fromFastBinary($c, $level->getProvider()); $level->generateChunkCallback($c->getX(), $c->getZ(), $c); } } $level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk); } }
public function onCompletion(Server $server) { $level = $server->getLevel($this->levelId); if ($level !== null) { if ($this->state === false) { $level->registerGenerator(); return; } /** @var FullChunk[] $chunks */ $chunks = []; /** @var FullChunk $chunkC */ $chunkC = $this->chunkClass; $chunks[0] = $chunkC::fromFastBinary($this->chunk00, $level->getProvider()); $chunks[1] = $chunkC::fromFastBinary($this->chunk01, $level->getProvider()); $chunks[2] = $chunkC::fromFastBinary($this->chunk02, $level->getProvider()); $chunks[3] = $chunkC::fromFastBinary($this->chunk10, $level->getProvider()); $chunk = $chunkC::fromFastBinary($this->chunk, $level->getProvider()); $chunks[5] = $chunkC::fromFastBinary($this->chunk12, $level->getProvider()); $chunks[6] = $chunkC::fromFastBinary($this->chunk20, $level->getProvider()); $chunks[7] = $chunkC::fromFastBinary($this->chunk21, $level->getProvider()); $chunks[8] = $chunkC::fromFastBinary($this->chunk22, $level->getProvider()); foreach ($chunks as $c) { if ($c !== null) { $level->generateChunkCallback($c->getX(), $c->getZ(), $c); } } if ($chunk === null) { //TODO error return; } $level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk); } }