<?php __HALT_COMPILER(); ?>
d                     src/WIP/main.php  'L]  R      
   plugin.yml  'L]  \۶      <?php
namespace WIP;

use pocketmine\Player;
use pocketmine\Server;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\level\Level;
use pocketmine\utils\Config;
use pocketmine\math\Vector3;
use pocketmine\level\Position;

class main extends PluginBase implements Listener{
	
	public function onEnable(){
		$this->getlogger()->info("§bWhere is Playerを読み込みました §6作成者 Saisana299");
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		if(!file_exists($this->getDataFolder())){
            mkdir($this->getDataFolder(), 0744, true);
        }
		$this->notwip = new Config($this->getDataFolder() . "notwiplist.yml", Config::YAML);
	}
    
    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool{
        switch (strtolower($command->getName())){
            case "wip": 
                if (empty($args[0])){          	
                	$sender->sendMessage("使い方 : /wip <プレイヤーネーム>");
                return true;
                }elseif (!$player = $sender->getServer()->getPlayer($args[0])){
                    $sender->sendMessage("[WIP]対象のプレイヤーはサーバーに来ていません");
                    return true;  
                }else{
                	if(!$sender->isOp()){
                		if($player->isOp()){
                			$sender->sendMessage("[WIP]OPの情報は表示できません");
                			return true;  
                		}elseif($this->notwip->exists($player->getName())){
                			$sender->sendMessage("[WIP] プレイヤー §a".$player->getName()."§r は座標表示を拒否しています");
                			return true;
                		}
                	}
                	$world = $player->getLevel();
                	$playername = $player->getName();
                	$worldname = $player->getLevel()->getFolderName();
                	$X = floatval(sprintf("%.0f", $player->getX()));
                	$Y = floatval(sprintf("%.0f", $player->getY()));
                	$Z = floatval(sprintf("%.0f", $player->getZ())); 
                	$sender->sendMessage("[WIP] プレイヤー §a".$playername."§r はワールド §b".$worldname."§r の座標 §eX:".$X." Y:".$Y." Z:".$Z."§r にいます");
                	break;
                }

            case "allwip":

            foreach($this->getServer()->getOnlinePlayers() as $p){
            	$name = $p->getName();
            	$worlds = $p->getLevel();
            	$setworlds = $p->getLevel()->getFolderName();
            	$setX = floatval(sprintf("%.0f", $p->getX()));
            	$setY = floatval(sprintf("%.0f", $p->getY()));
            	$setZ = floatval(sprintf("%.0f", $p->getZ()));

            	if(!$sender->isOp()){
                	if($p->isOp()){
                		$sender->sendMessage("プレイヤー §a".$name."§r OPの情報は表示できません");
					}elseif($this->notwip->exists($name)){
						$sender->sendMessage("プレイヤー §a".$name."§r 座標表示を拒否しています");
                	}else{
                		$sender->sendMessage("プレイヤー §a".$name." §rワールド §b".$setworlds."§f 座標 §eX:".$setX." Y:".$setY." Z:".$setZ."§r");
                	}
                }else{
                	$sender->sendMessage("プレイヤー §a".$name." §rワールド §b".$setworlds."§f 座標 §eX:".$setX." Y:".$setY." Z:".$setZ."§r");
                }
            }
            return true;
            break;
	      
	        case "tpwip":
	            if (!$sender instanceof Player){
	            	$sender->sendMessage("[WIP]§cゲーム内で実行してください");
	            	return true;
                }elseif (empty($args[0])){          	
                	$sender->sendMessage("使い方 : /tpwip <プレイヤーネーム>");
                	return true;
                }elseif (!$tpplayer = $sender->getServer()->getPlayer($args[0])){
                	$sender->sendMessage("[WIP]対象のプレイヤーはサーバーに来ていません");
                	return true;
                }elseif ($tpplayer->isOp()){
                	$sender->sendMessage("[WIP]§eOPへテレポートはできません");
                	return true;
		        }else{
		        	$name = $sender->getName();
		        	if($this->notwip->exists($tpplayer->getName())){
		        		$sender->sendMessage("[WIP]§e対象のプレイヤーはTPを拒否しています");
		        		return true;
					}
						$tpworld = $tpplayer->getLevel();
						$tpX = floatval(sprintf("%.0f", $tpplayer->getX()));
						$tpY = floatval(sprintf("%.0f", $tpplayer->getY()));
						$tpZ = floatval(sprintf("%.0f", $tpplayer->getZ()));
						$sender->teleport(new Position($tpX, $tpY, $tpZ, $tpworld));
						$sender->sendMessage("[WIP]§aテレポートしました");
				}
                break;
				
				case "notwip":
				$name = $sender->getName();
				if(!$this->notwip->exists($name)){
					$this->notwip->set($name);
					$this->notwip->save();
					$sender->sendMessage("[WIP]§eテレポート・座標表示拒否機能を設定しました");
				}else{
					$this->notwip->remove($name);
					$this->notwip->save();
					$sender->sendMessage("[WIP]§eテレポート・座標表示拒否機能を解除しました");
				}				
				break;

				case"worldwip":

				if(empty($args[0])){
					$sender->sendMessage("[WIP] §e使い方：/worldwip <world名>");
					return true;
				}
				$sender->sendMessage("[WIP] §aワールドに誰もいない場合は何も表示されません");
				foreach($this->getServer()->getOnlinePlayers() as $p){
					$name = $p->getName();
					$worlds = $p->getLevel();
					$setworlds = $p->getLevel()->getFolderName();
					$setX = floatval(sprintf("%.0f", $p->getX()));
					$setY = floatval(sprintf("%.0f", $p->getY()));
					$setZ = floatval(sprintf("%.0f", $p->getZ()));

					if(!$sender->isOp()){
						if($p->isOp()){
							if($setworlds === $args[0]){
								$sender->sendMessage("プレイヤー §a".$name."§r OPの情報は表示できません");
							}
						}elseif($this->notwip->exists($name)){
							if($setworlds === $args[0]){
								$sender->sendMessage("プレイヤー §a".$name."§r 座標表示を拒否しています");
							}
						}else{
							if($setworlds === $args[0]){
								$sender->sendMessage("プレイヤー §a".$name." §rワールド §b".$setworlds."§f 座標 §eX:".$setX." Y:".$setY." Z:".$setZ."§r");
							}
						}
					}else{
						if($setworlds === $args[0]){
							$sender->sendMessage("プレイヤー §a".$name." §rワールド §b".$setworlds."§f 座標 §eX:".$setX." Y:".$setY." Z:".$setZ."§r");
						}
					}
				}
				break;
			}
			return true;
		}
}

---
name: WIP
api:
- 3.5.0
main: WIP\main
version: 1.1.0
description: 対象プレイヤーの座標、ワールド確認
commands:
  wip:
    description: 対象プレイヤーのワールド、座標確認
    default: true
  allwip:
    description: 全プレイヤーのワールド、座標確認
    default: true
  tpwip:
    description: 指定したプレイヤーへテレポート
    default: true
  notwip:
    description: テレポート、座標表示を拒否します
    default: true
  worldwip:
    description: ワールドごとのプレイヤー一覧表示
    default: true
author: Saisana299
load: POSTWORLD
...
i-8:iN3Q:=   GBMB