<?php __HALT_COMPILER(); ?>
j                     src/SendTitle/main.php®  qŠ\®  d½vg¶      
   plugin.yml‰  qŠ\‰  å·¸Ÿ¶      <?php

namespace SendTitle;

use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\player\PlayerEvent;
use pocketmine\Player;
use pocketmine\level\Position;
use pocketmine\level;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;

class main extends PluginBase implements Listener {

    /** @var array */
    private $titlePoses = [];

    public function onEnable(){
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->getLogger()->info("SendTitleã‚’èª­ã¿è¾¼ã¿ã¾ã—ãŸ");
        $this->Config = new Config($this->getDataFolder() ."Config.yml", Config::YAML);
        $this->titlePoses = $this->Config->getAll();
    }
    
    public function onMove(PlayerMoveEvent $event){
        $player = $event->getPlayer();
        $worldName = $player->getLevel()->getName();
        if (!empty($this->titlePoses)){
            foreach($this->titlePoses as $titleName => $value){
                $x = (float) $value["x"];
                $y = (float) $value["t"];
                $z = (float) $value["z"];
                $configWorldName = (string) $value["world"];
                $mainTitle = (string) $value["MainTitle"];
                $subTitle = (string) $value["SubTitle"];
            }
            $px = (float) $player->getFloorX();
            $py = (float) $player->getFloorY();
            $pz = (float) $player->getFloorZ();
            if ($x === $px && $y === $py && $z === $pz && $worldName === $configWorldName){
                $player->addTitle($mainTitle, $subTitle, "20", "20", "20");
            }
        }
    }
    
    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
        if ($sender instanceof Player){
            switch($command->getName()){
                    case "addtitle":
                    if(!$sender->isOp()){
                        $sender->sendMessage("Â§cã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“");
                        return true;
                    }
                    if(!isset($args[0], $args[1], $args[2])){
                        $sender->sendMessage("ä½¿ã„æ–¹ : /addtitle <ä»»æ„ã®ã‚¿ã‚¤ãƒˆãƒ«å> <ã‚¿ã‚¤ãƒˆãƒ«> <Subã‚¿ã‚¤ãƒˆãƒ«>");
                    }else{
                        $x = $sender->getFloorX();
                        $y = $sender->getFloorY();
                        $z = $sender->getFloorZ();
                        $worldName = $sender->getLevel()->getName();
                        if(!array_key_exists($args[0], $this->titlePoses)){
                            $this->addTitle($args[0], $args[1], $args[2], $x, $y, $z, $worldName);
                            $this->Config->save();
                            $sender->sendMessage("{$args[0]}ã‚’è¿½åŠ ã—ã¾ã—ãŸ");
                        }else{
                            $sender->sendMessage("{$args[0]}ã¯è¿½åŠ æ¸ˆã¿ã§ã™");
                        }
                    }
                    return true;
            
                    case "deltitle":
                    if(!$sender->isOp()){
                        $sender->sendMessage("Â§cã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“");
                        return true;
                    }
                    if(!isset($args[0])){
                        $sender->sendMessage("ä½¿ã„æ–¹ : /deltitle <ä»»æ„ã®ã‚¿ã‚¤ãƒˆãƒ«å>");
                    }else{
                        if(array_key_exists($args[0], $this->titlePoses)){
				$this->Config->remove($args[0]);
				$this->Config->save();
				$this->Config->reload();
                            $sender->sendMessage("{$args[0]}ã‚’å‰Šé™¤ã—ã¾ã—ãŸ");
                        }else{
                            $sender->sendMessage("{$args[0]}ã¯è¿½åŠ ã•ã‚Œã¦ã„ã¾ã›ã‚“");
                        }
                    }
                    return true;
                    
                    case "listtitle":
                    if(!$sender->isOp()){
                        $sender->sendMessage("Â§cã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“");
                        return true;
                    }
                    $sender->sendMessage("Â§lÂ§9ã€œã‚¿ã‚¤ãƒˆãƒ«ä¸€è¦§ã€œ");
                    foreach($this->Config->getAll() as $key=>$value){
			                     $sender->sendMessage("{$key}");
                    }
                    return true;
            }
        }
    return true;
    }
    
    public function addTitle(string $titleName, string $MainTitle, string $SubTitle, string $x, string $y, string $z, string $worldName){
        $data = [
            "x" => $x,
            "t" => $y,
            "z" => $z,
            "world" => $worldName,
            "MainTitle" => $MainTitle,
            "SubTitle" => $SubTitle
        ];
        $this->titlePoses[$titleName] = $data;
        $this->Config->set($titleName, $data);
        $this->Config->save();
    }
}
---
name: SendTitle
main: SendTitle\main
version: 1.0.0
api: 3.3.4
author: narapon
commands:
  addtitle:
    description: ã‚¿ã‚¤ãƒˆãƒ«è¿½åŠ 
    usage: /addtitle <ä»»æ„ã®ã‚¿ã‚¤ãƒˆãƒ«å> <ã‚¿ã‚¤ãƒˆãƒ«> <Subã‚¿ã‚¤ãƒˆãƒ«>
  deltitle:
    description: ã‚¿ã‚¤ãƒˆãƒ«å‰Šé™¤
    usage: /deltitle <ä»»æ„ã®ã‚¿ã‚¤ãƒˆãƒ«å>
  listtitle:
    description: ã‚¿ã‚¤ãƒˆãƒ«ä¸€è¦§
    usage: /listtitle
...
š¥Ïó³w)i:ò˜Íûcõ
   GBMB