server = $server; $this->generationManager = new GenerationLevelManager($this->server, $this); } public function process(){ $this->generationManager->process(); } public function shutdown(){ $this->generationManager->shutdown(); } /** * @param Level $level * @param string $generator * @param array $options */ public function openLevel(Level $level, $generator, array $options = []){ $this->generationManager->openLevel($level->getID(), $level->getSeed(), $generator, $options); } /** * @param Level $level */ public function closeLevel(Level $level){ $this->generationManager->closeLevel($level->getID()); } public function addNamespace($namespace, $path){ } public function requestChunk(Level $level, $chunkX, $chunkZ){ $this->generationManager->enqueueChunk($level->getID(), $chunkX, $chunkZ); } public function getChunk($levelID, $chunkX, $chunkZ){ if(($level = $this->server->getLevel($levelID)) instanceof Level){ $chunk = $level->getChunk($chunkX, $chunkZ, true); if($chunk instanceof FullChunk){ return $chunk; }else{ throw new \Exception("Invalid Chunk given"); } }else{ $this->generationManager->closeLevel($levelID); return null; } } 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); } } }