seed = $seed !== false ? (int) $seed:Utils::readInt(Utils::getRandomBytes(4, false)); $this->random = new Random($this->seed); $this->width = (int) $width; $this->height = (int) $height; $this->path = DATA_PATH."worlds/".$name."/"; $this->generator = $generator; $level = new PMFLevel($this->path."level.pmf", array( "name" => $name, "seed" => $this->seed, "time" => 0, "spawnX" => 128, "spawnY" => 128, "spawnZ" => 128, "extra" => "", "width" => $this->width, "height" => $this->height )); $entities = new Config($this->path."entities.yml", CONFIG_YAML); $tiles = new Config($this->path."tiles.yml", CONFIG_YAML); $blockUpdates = new Config($this->path."bupdates.yml", CONFIG_YAML); $this->level = new Level($level, $entities, $tiles, $blockUpdates, $name); } public function generate(){ $this->generator->init($this->level, $this->random); for($Z = 0; $Z < $this->width; ++$Z){ for($X = 0; $X < $this->width; ++$X){ for($Y = 0; $Y < $this->height; ++$Y){ $this->generator->generateChunk($X, $Y, $Z); $this->generator->populateChunk($X, $Y, $Z); } } console("[NOTICE] Generating level ".ceil((($Z + 1)/$this->width) * 100)."%"); } console("[NOTICE] Populating level"); $this->generator->populateLevel(); $this->level->setSpawn($this->generator->getSpawn()); $this->level->save(true, true); } public function close(){ $this->level->close(); } }