<?php __HALT_COMPILER(); ?>
e                     src/jggj/main.php  Ng
[  L      
   plugin.yml  Ng
[  M      <?php

namespace jggj;

use pocketmine\Player;
use pocketmine\Server;
use pocketmine\utils\Config;
use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\scheduler\PluginTask;
use onebone\economyapi\EconomyAPI;
use pocketmine\command\CommandSender;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\command\ConsoleCommandSender;

class main extends PluginBase implements Listener{
    public function onEnable(){ 
    	$this->getServer()->getPluginManager()->registerEvents($this,$this);
		$this->getLogger()->info("§aプラグインを読み込みました。");
		$this->getLogger()->info("§a二次配布は禁止です。§bby:jggj");
		$this->EconomyAPI = $this->getServer()->getPluginManager()->getPlugin("EconomyAPI");
		if($this->EconomyAPI === null){
			$this->getLogger()->info("§cError:EconomyAPIが見つかりません");
			$this->getServer()->shutdown();
		}
		if(!file_exists($this->getDataFolder())){
			mkdir($this->getDataFolder(), 0744, true);
		}
		$this->name = new Config($this->getDataFolder()."Name.yml",Config::YAML);
		$this->config = new Config($this->getDataFolder() . "Config.yml", Config::YAML,
			array(
			"1文字の金額" => 500,
			"§の金額" => 700,
			"禁止単語" => ["§k"],
			));
		}
		public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
			switch($command->getName()){
				case "settag":
				if(!$sender instanceof Player){
					return $sender->sendMessage(">>このコマンドはゲーム内で使ってください");
				}else{
					$player = $sender->getPlayer();
					$name = $player->getName();
					if(!isset($args[0])){
						$sender->sendMessage("§a/settag 称号名");	
						return false;
					}else{
						if($args[0] === ""){
							$sender->sendMessage("称号名を記入してください");
						}else{
							$secmoney = $this->config->get("§の金額");
							$section = mb_substr_count($args[0], "§");
							$kingaku = $section*$secmoney;
							$onemoney = $this->config->get("1文字の金額");
							$syo = mb_strlen($args[0]);
							$syosec = $syo-$section;
							$money = $syosec*$onemoney+$kingaku;
							$mymoney = $this->EconomyAPI->myMoney($player->getName());
							$word = $this->config->get("禁止単語");
							$noword = in_array($args[0], $word);
							if($noword === true){
								$sender->sendMessage("§c禁止されている単語を使用しています");
							}else{
								if($mymoney >= $money){
									$this->EconomyAPI->reduceMoney($player, $money);
									$player->setNameTag("§a[§r".$args[0]."§a]§r".$name);
									$player->setDisplayName("§a[§r".$args[0]."§a]§r".$name);
									$this->name->set($name, $args[0]);
									$this->name->save();
									$sender->sendMessage("§a".$args[0]."という称号を付けました");
								}else{
									$sender->sendMessage("§cお金が足りません");
							}
						}
					}
				}
			}
		}
	}
	public function onPlayerJoin(PlayerJoinEvent $event){
        $player = $event->getPlayer();
        $name = $player->getName();
        if($this->name->exists($name)){
        	$task = new Delayed($this,$player,$this->name);
			$this->getServer()->getScheduler()->scheduleDelayedTask($task,40);
        }
	}
}
class Delayed extends PluginTask{
	public function __construct(PluginBase $owner,Player $player,Config $name){
		parent::__construct($owner);
		$this->player = $player;
		$this->name = $name;
	}
	public function onRun($tick){
		$player = $this->player;
		$name = $player->getName();
		$name1 = $player->getNameTag();
		$name2 = $player->getDisplayName();
		$player->setNameTag("§a[§f".$this->name->get($name)."§a]§r".$name1);
		$player->setDisplayName("§a[§f".$this->name->get($name)."§a]§r".$name2);
	}
}  	
		
		
		name: CommandNameChanger
main: jggj\main
version: 1.0.0
api:
- 2.0.0
- 3.0.0
- 3.0.0-ALPHA1
- 3.0.0-ALPHA2
- 3.0.0-ALPHA3
- 3.0.0-ALPHA4
- 3.0.0-ALPHA5
- 3.0.0-ALPHA6
- 3.0.0-ALPHA7
- 3.0.0-ALPHA8
- 3.0.0-ALPHA9
- 3.0.0-ALPHA10
- 3.0.0-ALPHA11
- 3.0.0-ALPHA12
- 3.0.0-ALPHA13
- 3.0.0-ALPHA14
- 3.0.0-ALPHA15
author: jggj
load: POSTWORLD
commands:
 settag:
  description: "/settag [称号名] で称号を付けられます"{ةڜ+   GBMB