pocketmine\level\generator\Flat::parsePreset PHP Метод

parsePreset() защищенный Метод

protected parsePreset ( $preset, $chunkX, $chunkZ )
    protected function parsePreset($preset, $chunkX, $chunkZ)
    {
        $this->preset = $preset;
        $preset = explode(";", $preset);
        $version = (int) $preset[0];
        $blocks = isset($preset[1]) ? $preset[1] : "";
        $biome = isset($preset[2]) ? $preset[2] : 1;
        $options = isset($preset[3]) ? $preset[3] : "";
        preg_match_all('#^(([0-9]*x|)([0-9]{1,3})(|:[0-9]{0,2}))$#m', str_replace(",", "\n", $blocks), $matches);
        $y = 0;
        $this->structure = [];
        $this->chunks = [];
        foreach ($matches[3] as $i => $b) {
            $b = Item::fromString($b . $matches[4][$i]);
            $cnt = $matches[2][$i] === "" ? 1 : intval($matches[2][$i]);
            for ($cY = $y, $y += $cnt; $cY < $y; ++$cY) {
                $this->structure[$cY] = [$b->getId(), $b->getDamage()];
            }
        }
        $this->floorLevel = $y;
        for (; $y < 0xff; ++$y) {
            $this->structure[$y] = [0, 0];
        }
        $this->chunk = clone $this->level->getChunk($chunkX, $chunkZ);
        $this->chunk->setGenerated();
        $c = Biome::getBiome($biome)->getColor();
        $R = $c >> 16;
        $G = $c >> 8 & 0xff;
        $B = $c & 0xff;
        for ($Z = 0; $Z < 16; ++$Z) {
            for ($X = 0; $X < 16; ++$X) {
                $this->chunk->setBiomeId($X, $Z, $biome);
                $this->chunk->setBiomeColor($X, $Z, $R, $G, $B);
                for ($y = 0; $y < 128; ++$y) {
                    $this->chunk->setBlock($X, $y, $Z, ...$this->structure[$y]);
                }
            }
        }
        preg_match_all('#(([0-9a-z_]{1,})\\(?([0-9a-z_ =:]{0,})\\)?),?#', $options, $matches);
        foreach ($matches[2] as $i => $option) {
            $params = true;
            if ($matches[3][$i] !== "") {
                $params = [];
                $p = explode(" ", $matches[3][$i]);
                foreach ($p as $k) {
                    $k = explode("=", $k);
                    if (isset($k[1])) {
                        $params[$k[0]] = $k[1];
                    }
                }
            }
            $this->options[$option] = $params;
        }
    }