<?php __HALT_COMPILER(); ?>
¤                     src/aieuo/FlatPreset.php-tmp)  X™ØZ)  Ð3“å¶         src/aieuo/FlatPreset.phpÖ)  X™ØZÖ)  GWZ;¶      
   plugin.ymlÔ   X™ØZÔ   ŠöÌA¶      <?php
namespace aieuo;

use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\level\LevelInitEvent;
use pocketmine\event\level\LevelLoadEvent;
use pocketmine\event\Listener;

use pocketmine\item\Item;

use pocketmine\level\format\io\LevelProviderManager;
use pocketmine\level\generator\Generator;
use pocketmine\level\Level;

use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;

class FlatPreset extends PluginBase implements Listener {

	public function onEnable() {
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		if (!file_exists($this->getDataFolder())) {@mkdir($this->getDataFolder(), 0721, true);
		}

		$this->config = new Config($this->getDataFolder()."config.yml", Config::YAML);
	}

	public function onCommand(CommandSender $sender, Command $command, string $label, array $args):bool {
		$cmd  = $command->getName();
		$name = $sender->getName();
		if ($cmd == "preset") {
			if (!isset($args[0])) {return false;
			}

			switch ($args[0]) {
				case 'create':
					if (!isset($args[1])) {
						$sender->sendMessage("/preset create <name>");
						return true;
					}
					if ($this->config->exists($args[1])) {
						$sender->sendMessage("ãã®åå‰ã¯æ—¢ã«ä½œæˆã•ã‚Œã¦ã„ã¾ã™");
						return true;
					}
					$this->config->set($args[1], []);
					$this->config->save();
					$sender->sendMessage("ä½œæˆã—ã¾ã—ãŸ\n/preset edit <åå‰> ã§ç·¨é›†ã§ãã¾ã™");
					return true;
					break;
				case 'edit':
					//if($sender->getName() == "CONSOLE"){
					if (!isset($args[1])) {
						$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>\n/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset edit <up | down> <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset list <åå‰>  ä»Šã®çŠ¶æ…‹ã€idã®ç¢ºèª");
						return true;
					}
					switch ($args[1]) {
					case 'add':
							if (!isset($args[2]) or !isset($args[3]) or !isset($args[4])) {
								$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>");
								return true;
							}
							if (!$this->config->exists($args[2])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							if (!is_numeric($args[3]) or !is_numeric($args[4])) {
								$sender->sendMessage("æ•°å­—ã«ã—ã¦ãã ã•ã„");
								return true;
							}
							$ids                          = explode(":", $id);
							if (!isset($ids[1])) {$ids[1] = 0;
							}

							$item = Item::get((int) $ids[0], (int) $ids[1], 1);
							if (!$item->canBePlaced()) {
								$sender->sendMessage("ãƒ–ãƒ­ãƒƒã‚¯ã«ã—ã¦ãã ã•ã„");
								return true;
							}
							$datas  = $this->config->get($args[2]);
							$count  = count($datas)+1;
							$blocks = [
								"id"     => $args[3],
								"height" => $args[4]
							];
							$datas[$count] = $blocks;
							$this->config->set($args[2], $datas);
							$this->config->save();
							$sender->sendMessage("è¿½åŠ ã—ã¾ã—ãŸ idã¯".$count."ã§ã™");
							return true;
							break;
					case 'del':
							if (!isset($args[2]) or !isset($args[3])) {
								$sender->sendMessage("/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
								return true;
							}
							if (!$this->config->exists($args[2])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							$datas = $this->config->get($args[2]);
							$id    = (int) $args[3];
							if (!isset($datas[$id])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							unset($datas[$id]);
							foreach ($datas as $key => $value) {
								if ($key > $id) {
									$datas[$key-1] = $datas[$key];
									unset($datas[$key]);
								}
							}
							$this->config->set($args[2], $datas);
							$this->config->save();
							$sender->sendMessage("å‰Šé™¤ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
							break;
					case 'list':
							if (!isset($args[2])) {
								$sender->sendMessage("/preset edit list <åå‰>");
								return true;
							}
							if (!$this->config->exists($args[2])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							$datas = $this->config->get($args[2]);
							$count = count($datas);
							$sender->sendMessage("ä¸‹ã‹ã‚‰");
							for ($i = 1; $i <= $count; $i++) {
								$sender->sendMessage("id= ".$i."  Blockid: ".$datas[$i]["id"]." x ".$datas[$i]["height"]."ãƒ–ãƒ­ãƒƒã‚¯");
							}
							break;
					case 'up':
							if (!isset($args[2]) or !isset($args[3])) {
								$sender->sendMessage("/preset edit up <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
								return true;
							}
							if (!$this->config->exists($args[2])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							$datas = $this->config->get($args[2]);
							$id    = (int) $args[3];
							if (!isset($datas[$id])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							if ($id == 1) {
								$sender->sendMessage("ä¸€ç•ªä¸Šã§ã™");
								return true;
							}
							foreach ($datas as $key => $value) {
								if ($key < $id-1) {
									$ndatas[$key] = $datas[$key];
								} elseif ($key == $id-1) {
									$ndatas[$key+1] = $datas[$key];
								} elseif ($key == $id) {
									$ndatas[$key-1] = $datas[$key];
								} else {
									$ndatas[$key] = $datas[$key];
								}
							}
							$this->config->set($args[2], $ndatas);
							$this->config->save();
							$sender->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
							break;
					case 'down':
							if (!isset($args[2]) or !isset($args[3])) {
								$sender->sendMessage("/preset edit up <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
								return true;
							}
							if (!$this->config->exists($args[2])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							$datas = $this->config->get($args[2]);
							$id    = (int) $args[3];
							if (!isset($datas[$id])) {
								$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
								return true;
							}
							if ($id == count($datas)) {
								$sender->sendMessage("ä¸€ç•ªä¸‹ã§ã™");
								return true;
							}
							foreach ($datas as $key => $value) {
								if ($key < $id) {
									$ndatas[$key] = $datas[$key];
								} elseif ($key == $id+1) {
									$ndatas[$key-1] = $datas[$key];
								} elseif ($key == $id) {
									$ndatas[$key+1] = $datas[$key];
								} else {
									$ndatas[$key] = $datas[$key];
								}
							}
							$this->config->set($args[2], $ndatas);
							$this->config->save();
							$sender->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
							break;
							break;
					default:
							$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>\n/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset edit <up | down> <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset list <åå‰>  ä»Šã®çŠ¶æ…‹ã€idã®ç¢ºèª");
							return true;
							break;
					}
					/*}
				if(!isset($args[1])){
				$sender->sendMessage("/preset edit <name>");
				return true;
				}*/
					return true;
					break;
				case 'generate':
					if (!isset($args[1]) or !isset($args[2])) {
						$sender->sendMessage("/preset generate <ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®åå‰> <ãƒ—ãƒªã‚»ãƒƒãƒˆã®åå‰>");
						return true;
					}
					if (!$this->config->exists($args[2])) {
						$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
						return true;
					}
					$datas  = $this->config->get($args[2]);
					$count  = count($datas);
					$preset = ";1";
					for ($i = 1; $i <= $count; $i++) {
						if ($i != 1) {$preset = ",".$preset;
						}

						$preset = $datas[$i]["height"]."x".$datas[$i]["id"].$preset;
					}
					$preset = "2;".$preset;
					echo $preset;
					$this->generate($args[1], $preset, $sender);
					return true;
					break;
				default:
					return false;
					break;
			}
		}
	}

	public function generate($name, $preset, $player) {
		if ($this->getServer()->isLevelGenerated($name)) {
			$player->sendMessage("ãã®ãƒ¯ãƒ¼ãƒ«ãƒ‰ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™");
			return false;
		}

		$seed              = $seed??(unpack("N", random_bytes(4))[1] << 32 >> 32);
		$generator         = Generator::getGenerator("FLAT");
		$provider          = LevelProviderManager::getProviderByName($providerName = "pmanvil");
		$options["preset"] = $preset;
		try {
			$path = $this->getServer()->getDataPath()."worlds/".$name."/";
			$provider::generate($path, $name, $seed, $generator, $options);
			$level = new Level($this->getServer(), $name, $path, (string) $provider);
			//$this->getServer()->levels[$level->getId()] = $level;
			$level->initLevel();
			$level->setTickRate(1);
		} catch (Throwable $e) {
			$player->sendMessage($this->getLanguage()->translateString("pocketmine.level.generationError", [$name, $e->getMessage()]));
			$this->logger->error($this->getLanguage()->translateString("pocketmine.level.generationError", [$name, $e->getMessage()]));
			$this->logger->logException($e);
			return false;
		}
		$this->getServer()->getPluginManager()->callEvent(new LevelInitEvent($level));
		$this->getServer()->getPluginManager()->callEvent(new LevelLoadEvent($level));
		$player->sendMessage("ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚’ä½œæˆã—ã¾ã—ãŸ\n".$this->getServer()->getLanguage()->translateString("pocketmine.level.backgroundGeneration", [$name]));
		$this->getServer()->getLogger()->notice($this->getServer()->getLanguage()->translateString("pocketmine.level.backgroundGeneration", [$name]));
		$spawnLocation = $level->getSpawnLocation();
		$centerX       = $spawnLocation->getFloorX() >> 4;
		$centerZ       = $spawnLocation->getFloorZ() >> 4;
		$order         = [];
		for ($X = -3; $X <= 3; ++$X) {
			for ($Z = -3; $Z <= 3; ++$Z) {
				$distance      = $X**2+$Z**2;
				$chunkX        = $X+$centerX;
				$chunkZ        = $Z+$centerZ;
				$index         = ((($chunkX)&0xFFFFFFFF) << 32)|(($chunkZ)&0xFFFFFFFF);
				$order[$index] = $distance;
			}
		}
		asort($order);
		foreach ($order as $index => $distance) {
			$chunkX = ($index >> 32);
			$chunkZ = ($index&0xFFFFFFFF) << 32 >> 32;
			$level->populateChunk($chunkX, $chunkZ, \true);
		}
		return true;
	}
}<?php
namespace aieuo;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\Player;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\utils\Config;
use pocketmine\item\Item;


use pocketmine\level\format\io\LevelProvider;
use pocketmine\level\format\io\LevelProviderManager;
use pocketmine\level\generator\Generator;
use pocketmine\level\Level;
use pocketmine\level\LevelException;
use pocketmine\event\level\LevelInitEvent;
use pocketmine\event\level\LevelLoadEvent;

use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\network\mcpe\protocol\ModalFormResponsePacket;

class FlatPreset extends PluginBase implements Listener{

    public function onEnable(){
            $this->getServer()->getPluginManager()->registerEvents($this,$this);
            if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0721, true);
        	$this->config = new Config($this->getDataFolder()."config.yml", Config::YAML);
    }

	public function onCommand(CommandSender $sender, Command $command,string $label, array $args):bool{
		$cmd = $command->getName();
		$name = $sender->getName();
		if($cmd == "preset"){
			if(!isset($args[0]))return false;
			switch ($args[0]) {
				case 'create':
					if(!isset($args[1])){
						$sender->sendMessage("/preset create <name>");
						return true;
					}
					if($this->config->exists($args[1])){
						$sender->sendMessage("ãã®åå‰ã¯æ—¢ã«ä½œæˆã•ã‚Œã¦ã„ã¾ã™");
						return true;
					}
					$this->config->set($args[1],[]);
					$this->config->save();
					$sender->sendMessage("ä½œæˆã—ã¾ã—ãŸ\n/preset edit <åå‰> ã§ç·¨é›†ã§ãã¾ã™");
					return true;
					break;
				case 'edit':
					//if($sender->getName() == "CONSOLE"){
						if(!isset($args[1])){
							$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>\n/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset edit <up | down> <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset list <åå‰>  ä»Šã®çŠ¶æ…‹ã€idã®ç¢ºèª");
							return true;
						}
						switch ($args[1]) {
							case 'add':
								if(!isset($args[2]) or !isset($args[3]) or !isset($args[4])){
									$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>");
									return true;
								}
								if(!$this->config->exists($args[2])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								if(!is_numeric($args[3]) or !is_numeric($args[4])){
									$sender->sendMessage("æ•°å­—ã«ã—ã¦ãã ã•ã„");
									return true;
								}
								$ids = explode(":",$id);
								if(!isset($ids[1]))$ids[1] = 0;
								$item = Item::get((int)$ids[0],(int)$ids[1],1);
								if(!$item->canBePlaced()){
									$sender->sendMessage("ãƒ–ãƒ­ãƒƒã‚¯ã«ã—ã¦ãã ã•ã„");
									return true;
								}
								$datas = $this->config->get($args[2]);
								$count = count($datas) +1;
								$blocks = [
									"id" => $args[3],
									"height" => $args[4]
								];
								$datas[$count] = $blocks;
								$this->config->set($args[2],$datas);
								$this->config->save();
								$sender->sendMessage("è¿½åŠ ã—ã¾ã—ãŸ idã¯".$count."ã§ã™");
								return true;
								break;
							case 'del':
								if(!isset($args[2]) or !isset($args[3])){
									$sender->sendMessage("/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
									return true;
								}
								if(!$this->config->exists($args[2])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								$datas = $this->config->get($args[2]);
								$id = (int)$args[3];
								if(!isset($datas[$id])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								unset($datas[$id]);
								foreach ($datas as $key => $value){
									if($key > $id){
										$datas[$key -1] = $datas[$key];
										unset($datas[$key]);
									}
								}
								$this->config->set($args[2],$datas);
								$this->config->save();
								$sender->sendMessage("å‰Šé™¤ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
								break;
							case 'list':
								if(!isset($args[2])){
									$sender->sendMessage("/preset edit list <åå‰>");
									return true;
								}
								if(!$this->config->exists($args[2])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								$datas = $this->config->get($args[2]);
								$count = count($datas);
								$sender->sendMessage("ä¸‹ã‹ã‚‰");
								for ($i=1; $i <= $count; $i++) {
									$sender->sendMessage("id= ".$i."  Blockid: ".$datas[$i]["id"]." x ".$datas[$i]["height"]."ãƒ–ãƒ­ãƒƒã‚¯");
								}
								break;
							case 'up':
								if(!isset($args[2]) or !isset($args[3])){
									$sender->sendMessage("/preset edit up <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
									return true;
								}
								if(!$this->config->exists($args[2])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								$datas = $this->config->get($args[2]);
								$id = (int)$args[3];
								if(!isset($datas[$id])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								if($id == 1){
									$sender->sendMessage("ä¸€ç•ªä¸Šã§ã™");
									return true;
								}
								foreach ($datas as $key => $value){
									if($key < $id -1){
										$ndatas[$key] = $datas[$key];
									}elseif($key == $id -1){
										$ndatas[$key +1] = $datas[$key];
									}elseif($key == $id){
										$ndatas[$key -1] = $datas[$key];
									}else{
										$ndatas[$key] = $datas[$key];
									}
								}
								$this->config->set($args[2],$ndatas);
								$this->config->save();
								$sender->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
								break;
							case 'down':
								if(!isset($args[2]) or !isset($args[3])){
									$sender->sendMessage("/preset edit up <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>");
									return true;
								}
								if(!$this->config->exists($args[2])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								$datas = $this->config->get($args[2]);
								$id = (int)$args[3];
								if(!isset($datas[$id])){
									$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
									return true;
								}
								if($id == count($datas)){
									$sender->sendMessage("ä¸€ç•ªä¸‹ã§ã™");
									return true;
								}
								foreach ($datas as $key => $value){
									if($key < $id){
										$ndatas[$key] = $datas[$key];
									}elseif($key == $id +1){
										$ndatas[$key -1] = $datas[$key];
									}elseif($key == $id){
										$ndatas[$key +1] = $datas[$key];
									}else{
										$ndatas[$key] = $datas[$key];
									}
								}
								$this->config->set($args[2],$ndatas);
								$this->config->save();
								$sender->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ\nidãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€/preset list <name>ã€€ã§ç¢ºèªã—ã¦ãã ã•ã„");
								break;
								break;
							default:
								$sender->sendMessage("/preset edit add <åå‰> <ãƒ–ãƒ­ãƒƒã‚¯Id> <é«˜ã•>\n/preset edit del <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset edit <up | down> <åå‰> <ç™»éŒ²ã—ãŸã¨ãã«å‡ºã‚‹id>\n/preset list <åå‰>  ä»Šã®çŠ¶æ…‹ã€idã®ç¢ºèª");
								return true;
							 	break;
						}
					/*}
					if(!isset($args[1])){
						$sender->sendMessage("/preset edit <name>");
						return true;
					}*/
					return true;
					break;
				case 'generate':
					if(!isset($args[1]) or !isset($args[2])){
						$sender->sendMessage("/preset generate <ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®åå‰> <ãƒ—ãƒªã‚»ãƒƒãƒˆã®åå‰>");
						return true;
					}
					if(!$this->config->exists($args[2])){
						$sender->sendMessage("ãã‚“ãªã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“");
						return true;
					}
					$datas = $this->config->get($args[2]);
					$count = count($datas);
					$preset = ";1";
					for ($i=1; $i <= $count; $i++) {
						if($i != 1)$preset = ",".$preset;
						$preset = $datas[$i]["height"]."x".$datas[$i]["id"].$preset;
					}
					$preset = "2;".$preset;
					echo $preset;
					$this->generate($args[1],$preset,$sender);
					return true;
					break;
				default:
					return false;
					break;
			}
		}
	}


	public function generate($name,$preset,$player){
		if($this->getServer()->isLevelGenerated($name)){
			$player->sendMessage("ãã®ãƒ¯ãƒ¼ãƒ«ãƒ‰ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™");
			return false;
		}

		$seed = $seed ?? (unpack("N", random_bytes(4))[1] << 32 >> 32);
		$generator = Generator::getGenerator("FLAT");
		$provider = LevelProviderManager::getProviderByName($providerName = "pmanvil");
		$options["preset"] = $preset;
		try{
			$path = $this->getServer()->getDataPath() . "worlds/" . $name . "/";
			$provider::generate($path, $name, $seed, $generator, $options);
			$level = new Level($this->getServer(), $name, $path, (string) $provider);
			//$this->getServer()->levels[$level->getId()] = $level;
			$level->initLevel();
			$level->setTickRate(1);
		}catch(Throwable $e){
			$player->sendMessage($this->getLanguage()->translateString("pocketmine.level.generationError", [$name, $e->getMessage()]));
			$this->logger->error($this->getLanguage()->translateString("pocketmine.level.generationError", [$name, $e->getMessage()]));
			$this->logger->logException($e);
			return false;
		}
		$this->getServer()->getPluginManager()->callEvent(new LevelInitEvent($level));
		$this->getServer()->getPluginManager()->callEvent(new LevelLoadEvent($level));
		$player->sendMessage("ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚’ä½œæˆã—ã¾ã—ãŸ\n".$this->getServer()->getLanguage()->translateString("pocketmine.level.backgroundGeneration", [$name]));
		$this->getServer()->getLogger()->notice($this->getServer()->getLanguage()->translateString("pocketmine.level.backgroundGeneration", [$name]));
		$spawnLocation = $level->getSpawnLocation();
		$centerX = $spawnLocation->getFloorX() >> 4;
		$centerZ = $spawnLocation->getFloorZ() >> 4;
		$order = [];
		for($X = -3; $X <= 3; ++$X){
			for($Z = -3; $Z <= 3; ++$Z){
				$distance = $X ** 2 + $Z ** 2;
				$chunkX = $X + $centerX;
				$chunkZ = $Z + $centerZ;
				$index = ((($chunkX) & 0xFFFFFFFF) << 32) | (( $chunkZ) & 0xFFFFFFFF);
				$order[$index] = $distance;
			}
		}
		asort($order);
		foreach($order as $index => $distance){
			$chunkX = ($index >> 32);  $chunkZ = ($index & 0xFFFFFFFF) << 32 >> 32;
			$level->populateChunk($chunkX, $chunkZ, \true);
		}
		return true;
	}
}name: FlatPreset
main: aieuo\FlatPreset
version: 0.1
api: [3.0.0-ALPHA11]
load: POSTWORLD
author: aieuo
commands:
 preset:
  description: å£ã®ãƒ‰ãƒƒãƒˆã®çµµï¼Ÿ
  usage: /wall <list | create>
  permission: op
 M*&;!_Î!» ôzà*šÿ   GBMB