pocketmine\level\Level::generateChunkCallback PHP Method

generateChunkCallback() public method

public generateChunkCallback ( integer $x, integer $z, pocketmine\level\format\FullChunk $chunk )
$x integer
$z integer
$chunk pocketmine\level\format\FullChunk
    public function generateChunkCallback(int $x, int $z, FullChunk $chunk)
    {
        Timings::$generationCallbackTimer->startTiming();
        if (isset($this->chunkPopulationQueue[$index = Level::chunkHash($x, $z)])) {
            $oldChunk = $this->getChunk($x, $z, false);
            for ($xx = -1; $xx <= 1; ++$xx) {
                for ($zz = -1; $zz <= 1; ++$zz) {
                    unset($this->chunkPopulationLock[Level::chunkHash($x + $xx, $z + $zz)]);
                }
            }
            unset($this->chunkPopulationQueue[$index]);
            $chunk->setProvider($this->provider);
            $this->setChunk($x, $z, $chunk, false);
            $chunk = $this->getChunk($x, $z, false);
            if ($chunk !== null and ($oldChunk === null or $oldChunk->isPopulated() === false) and $chunk->isPopulated() and $chunk->getProvider() !== null) {
                $this->server->getPluginManager()->callEvent(new ChunkPopulateEvent($chunk));
                foreach ($this->getChunkLoaders($x, $z) as $loader) {
                    $loader->onChunkPopulated($chunk);
                }
            }
        } elseif (isset($this->chunkGenerationQueue[$index]) or isset($this->chunkPopulationLock[$index])) {
            unset($this->chunkGenerationQueue[$index]);
            unset($this->chunkPopulationLock[$index]);
            $chunk->setProvider($this->provider);
            $this->setChunk($x, $z, $chunk, false);
        } else {
            $chunk->setProvider($this->provider);
            $this->setChunk($x, $z, $chunk, false);
        }
        Timings::$generationCallbackTimer->stopTiming();
    }
Level