<?php echo "PocketMine-iTX plugin WarpSystem v1.0.2\nThis file has been generated using NightMoon at Fri, 16 Feb 2018 14:19:55 +0900\n----------------\n";if(extension_loaded("phar")){$phar = new \Phar(__FILE__);foreach($phar->getMetadata() as $key => $value){echo ucfirst($key).": ".(is_array($value) ? implode(", ", $value):$value)."\n";}} __HALT_COMPILER(); ?>
               a:9:{s:4:"name";s:10:"WarpSystem";s:7:"version";s:5:"1.0.2";s:4:"main";s:15:"nagi\WarpSystem";s:3:"api";a:6:{i:0;s:5:"3.0.0";i:1;s:12:"3.0.0-ALPHA7";i:2;s:12:"3.0.0-ALPHA8";i:3;s:12:"3.0.0-ALPHA9";i:4;s:13:"3.0.0-ALPHA10";i:5;s:13:"3.0.0-ALPHA11";}s:6:"depend";a:0:{}s:11:"description";s:24:"ワーププラグイン";s:7:"authors";a:1:{i:0;s:9:"Nagizero0";}s:7:"website";s:0:"";s:12:"creationDate";i:1518758395;}
   plugin.yml  iZ  }1[         src/nagi/WarpSystem.php&  iZ&  sfJ      name: WarpSystem
main: nagi\WarpSystem
version: 1.0.2
api:
  - 3.0.0
  - 3.0.0-ALPHA7
  - 3.0.0-ALPHA8
  - 3.0.0-ALPHA9
  - 3.0.0-ALPHA10
  - 3.0.0-ALPHA11
description: ワーププラグイン
author: Nagizero0
load: POSTWORLD
commands:
 warp:
  description: "指定したワープ地点にワープします"
  usage: /warp <ワープ地点名> [プレイヤー名]
 listwarps:
  description: "ワープ地点の一覧を表示します"
  usage: /listwarps
 addwarp:
  description: "ワープ地点を作成します"
  usage: /addwarp <ワープ地点名> [<x> <y> <z> <ワールド名>|<プレイヤー名>]
  permission: op
 delwarp:
  description: "ワープ地点を削除します"
  usage: /delwarp <ワープ地点名>
  permission: op
 openwarp:
  description: "ワープ地点を開放します"
  usage: /openwarp <ワープ地点名>
  permission: op
 closewarp:
  description: "ワープ地点を閉鎖します"
  usage: /closewarp <ワープ地点名>
  permission: op
<?php
namespace nagi;

use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\level\Level;
use pocketmine\level\Position;
use pocketmine\math\Vector3;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;
use pocketmine\Player;
use pocketmine\Server;

class WarpSystem extends PluginBase implements Listener{

	const TAG = "§f[§aWarpSystem§f]";

	public function onEnable(){
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		$this->getServer()->getLogger()->info(self::TAG."§aWarpSystemを読み込みました");
		if(!file_exists($this->getDataFolder())){
			mkdir($this->getDataFolder(), 0744, true);
		}
		$this->warps = new Config($this->getDataFolder() ."warps.yml", Config::YAML);
	}

	public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
		switch($command->getName()){
			case "warp":
			if($sender instanceof Player){
				if(!isset($args[0])){
					if($sender->isOp()){
						$sender->sendMessage("使い方 : /warp <ワープ地点名> [プレイヤー名]");
					}else{
						$sender->sendMessage("使い方 : /warp <ワープ地点名>");
					}
				}else{
					if($this->warps->exists($args[0])){
						if($sender->isOp()){
							if(isset($args[1])){
								$player = $this->getServer()->getPlayer($args[1]);
								if($player instanceof Player){
									$this->Warp($player, $args[0]);
									$sender->sendTip("§e".$args[1]."§bを§a".$args[0]."§bにワープさせました");
									$player->sendTip("§e".$sender->getName()."§bによって§a".$args[0]."§bにワープさせられました");
								}else{
									$sender->sendTip("§e".$args[1]."§cはサーバー内にいません");
								}
							}else{
								$this->Warp($sender, $args[0]);
								$sender->sendTip("§a".$args[0]."§bにワープしました");
							}
						}else if($this->isOpenedWarp($args[0])){
							$this->Warp($sender, $args[0]);
							$sender->sendTip("§a".$args[0]."§bにワープしました");
						}else{
							$sender->sendTip("§a".$args[0]."§cにワープする権限がありません");
						}
					}else{
						$sender->sendTip("§a".$args[0]."§cというワープ地点は存在しません");
					}
				}
			}else{
				$sender->sendMessage(self::TAG."§cゲーム内で使用して下さい");
				return true;
			}
			return true;

			case "addwarp":
			if(!isset($args[0])){
				$sender->sendMessage("使い方 : /addwarp <ワープ地点名> [<x> <y> <z> <ワールド名>|<プレイヤー名>]");
			}else if(!isset($args[1])){
				if($sender instanceof Player){
					$x = $sender->x;
					$y = $sender->y;
					$z = $sender->z;
					$level = $sender->getLevel()->getName();
					if(!$this->warps->exists($args[0])){
						$this->AddWarp($args[0], $x, $y, $z, $level);
						$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを作成しました§f(X:".$x." Y:".$y." Z:".$z." ワールド:".$level.")");
					}else{
						$sender->sendMessage(self::TAG."§cワープ地点§a".$args[0]."§cは既に存在します");
					}
				}else{
					$sender->sendMessage("使い方 : /addwarp <ワープ地点名> [<x> <y> <z> <ワールド名>|<プレイヤー名>]");
				}
			}else if(!isset($args[2])){
				$player = $this->getServer->getPlayer($args[1]);
				if($player instanceof Player){
					$x = $player->x;
					$y = $player->y;
					$z = $player->z;
					$level = $player->getLevel()->getName();
					if(!$this->warps->exists($args[0])){
						$this->AddWarp($args[0], $x, $y, $z, $level);
						$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを作成しました§f(X:".$x." Y:".$y." Z:".$z." ワールド:".$level.")");
					}else{
						$sender->sendMessage(self::TAG."§cワープ地点§a".$args[0]."§cは既に存在します");
					}
				}else{
					$sender->sendMessage(self::TAG."§e".$args[1]."§cはサーバー内にいません");
				}
			}else if(!isset($args[4])){
				$sender->sendMessage("使い方 : /addwarp <ワープ地点名> <x> <y> <z> <ワールド名>");
			}else{
				if(is_numeric($args[1]) && is_numeric($args[2]) && is_numeric($args[3])){
					$x = (Float) $args[1];
					$y = (Float) $args[2];
					$z = (Float) $args[3];
					$level = $args[4];
					if(!$this->warps->exists($args[0])){
						if($this->getServer()->loadLevel($level)){
							$this->AddWarp($args[0], $x, $y, $z, $level);
							$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを作成しました§f(X:".$x." Y:".$y." Z:".$z." ワールド:".$level.")");
						}else{
							$sender->sendMessage(self::TAG."§cワールド§e".$level."§cは存在しません");
						}
					}else{
						$sender->sendMessage(self::TAG."§cワープ地点§a".$args[0]."§cは既に存在します");
					}
				}else{
					$sender->sendMessage(self::TAG."§c座標は数字で入力して下さい");
				}
			}
			return true;

			case "delwarp":
			if(!isset($args[0])){
				$sender->sendMessage("使い方 : /delwarp <ワープ地点名>");
			}else{
				if($this->warps->exists($args[0])){
					$this->DelWarp($args[0]);
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを§c削除§bしました");
				}else{
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§cは存在しません");
				}
			}
			return true;

			case "openwarp":
			if(!isset($args[0])){
				$sender->sendMessage("使い方 : /openwarp <ワープ地点名>");
			}else{
				if($this->warps->exists($args[0])){
					$this->OpenWarp($args[0]);
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを§e開放§bしました");
				}else{
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§cは存在しません");
				}
			}
			return true;

			case "closewarp":
			if(!isset($args[0])){
				$sender->sendMessage("使い方 : /closewarp <ワープ地点名>");
			}else{
				if($this->warps->exists($args[0])){
					$this->CloseWarp($args[0]);
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§bを§c閉鎖§bしました");
				}else{
					$sender->sendMessage(self::TAG."§bワープ地点§a".$args[0]."§cは存在しません");
				}
			}
			return true;

			case "listwarps":
			$sender->sendMessage("§bワープ地点リスト---------------------");
			foreach($this->warps->getAll() as $b=>$a){
				$x = $this->warps->getAll()[$b]["x"];
				$y = $this->warps->getAll()[$b]["y"];
				$z = $this->warps->getAll()[$b]["z"];
				$level = $this->warps->getAll()[$b]["level"];
				$public = $this->warps->getAll()[$b]["public"];
				$message = "§a".$b."§f(X:".$x." Y:".$y." Z:".$z." ワールド:".$level;
				if($sender->isOp()){
					if($public){
						$public = "§e開放§f";
					}else{
						$public = "§c閉鎖§f";
					}
					$message = $message." 状態:".$public.")";
					$sender->sendMessage($message);
				}else{
					$message = $message.")";
					if($this->warps->getAll()[$b]["public"]){
						$sender->sendMessage($message);
					}
				}
			}
			$sender->sendMessage(" ");
			return true;
		}
		return true;
	}

	public function Warp($player, $warpname){
		if($this->warps->exists($warpname)){
			$levelname = $this->warps->getAll()[$warpname]["level"];
			if($this->getServer()->loadLevel($levelname)){
				$x = $this->warps->getAll()[$warpname]["x"];
				$y = $this->warps->getAll()[$warpname]["y"];
				$z = $this->warps->getAll()[$warpname]["z"];
				$level = $this->getServer()->getLevelByName($levelname);
				$pos = new Position($x, $y, $z, $level);
				$player->teleport($pos);
				return true;
			}else{
				$player->sendMessage(self::TAG."§cワールド§e".$levelname."§cは存在しません");
				return false;
			}
		}else{
			return false;
		}
	}

	public function AddWarp($warpname, $x, $y, $z, $level){
		if(isset($warpname) && isset($x) && isset($y) && isset($z) && isset($level) && !$this->warps->exists($warpname)){
			$this->warps->set($warpname, array(
				"x"=>$x,
				"y"=>$y,
				"z"=>$z,
				"level"=>$level,
				"public"=>true,
				"metadata"=>array()
			));
			$this->warps->save();
			return true;
		}else{
			return false;
		}
	}

	public function DelWarp($warpname){
		if($this->warps->exists($warpname)){
			$this->warps->remove($warpname);
			$this->warps->save();
			return true;
		}else{
			return false;
		}
	}

	public function OpenWarp($warpname){
		if($this->warps->exists($warpname)){
			$this->warps->set($warpname, array(
				"x"=>$this->warps->getAll()[$warpname]["x"],
				"y"=>$this->warps->getAll()[$warpname]["y"],
				"z"=>$this->warps->getAll()[$warpname]["z"],
				"level"=>$this->warps->getAll()[$warpname]["level"],
				"public"=>true,
				"metadata"=>$this->warps->getAll()[$warpname]["metadata"]
			));
			$this->warps->save();
			return true;
		}else{
			return false;
		}
	}

	public function CloseWarp($warpname){
		if($this->warps->exists($warpname)){
			$this->warps->set($warpname, array(
				"x"=>$this->warps->getAll()[$warpname]["x"],
				"y"=>$this->warps->getAll()[$warpname]["y"],
				"z"=>$this->warps->getAll()[$warpname]["z"],
				"level"=>$this->warps->getAll()[$warpname]["level"],
				"public"=>false,
				"metadata"=>$this->warps->getAll()[$warpname]["metadata"]
			));
			$this->warps->save();
			return true;
		}else{
			return false;
		}
	}

	public function isOpenedWarp($warpname){
		if($this->warps->exists($warpname)){
			if($this->warps->getAll()[$warpname]["public"]){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}
}
VX70b$m-N   GBMB