
<?php
echo "PocketMine-MP plugin PlayerJoinQuitMessage v1.3.0
This file has been generated using DevTools v1.15.0 at Wed, 15 Dec 2021 18:07:04 +0800
----------------
Name: PlayerJoinQuitMessage
Version: 1.3.0
Main: yutarou\\Main
Api: 3.0.0, 4.0.0
Depend: 
Description: プレイヤーが参加した時にメッセージをサーバーに送信します
Authors: 
Website: 
CreationDate: 1639562824
";
__HALT_COMPILER(); ?>
             e  a:9:{s:4:"name";s:21:"PlayerJoinQuitMessage";s:7:"version";s:5:"1.3.0";s:4:"main";s:12:"yutarou\Main";s:3:"api";a:2:{i:0;s:5:"3.0.0";i:1;s:5:"4.0.0";}s:6:"depend";s:0:"";s:11:"description";s:84:"プレイヤーが参加した時にメッセージをサーバーに送信します";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1639562824;}
   plugin.yml  Ha  HEm         src/yutarou/Main.php  Ha  %      name: PlayerJoinQuitMessage
main: yutarou\Main
version: 1.3.0
api:
  - 3.0.0
  - 4.0.0
load: POSTWORLD
author: yutarou1241477
description: プレイヤーが参加した時にメッセージをサーバーに送信します
commands:
 msg_reload:
  description: "[PJoinQuitMessage]Configをリロードします"
  usage: "/msg_reload"
  permission: message.command
permissions:
 message.command:
  default: op<?php

namespace yutarou;

use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerQuitEvent;

use pocketmine\plugin\PluginBase;

use pocketmine\command\Command;
use pocketmine\command\CommandSender;

use pocketmine\Player;

use pocketmine\utils\Config;

class Main extends PluginBase implements Listener {
    
    public function onEnable():void {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->getLogger()->info("§eプラグインを有効にしました");
        $this->getLogger()->info("§a作成者 yutarou1241477");

        if(!file_exists($this->getDataFolder())){mkdir($this->getDataFolder(), 0744, true);}
		$this->config = new Config($this->getDataFolder() . "message.yml", Config::YAML, array(
		    "鯖主ID" => "yutarou1241477",
		    "鯖主参加メッセージ" => "§l【鯖主】§6%nameさんがサーバーに参加しました",
		    "鯖主退出メッセージ" => "§l【鯖主】§7%nameさんがサーバーから退出しました §7(理由:%reason)",
		    "参加メッセージ" => "§l【鯖民】§a%nameさんがサーバーに参加しました",
		    "退出メッセージ" => "§l【鯖民】§7%nameさんがサーバーから退出しました §7(理由:%reason)",
		    "権限者参加メッセージ" => "§l【権限者】§a%nameさんがサーバーに参加しました",
		    "権限者退出メッセージ" => "§l【権限者】§7%nameさんがサーバーから退出しました §7(理由:%reason)",
		    "初参加メッセージ" => "§l【初参加】§6%nameさんが初めてサーバーに参加しました"
		));
		$this->reason = new Config($this->getDataFolder() . "reason.yml", Config::YAML, array(
			"timeout" => "タイムアウト",
			"client disconnect" => "切断",
			"Internal server error" => "Server Error"
		));
    }
  
	public function onJoin(PlayerJoinEvent $event){
	    $player = $event->getPlayer();
	    $name = $event->getPlayer()->getName();

	    $Owner = $this->config->get("鯖主ID");
	    $message = $this->config->get("参加メッセージ") ;
	    $messageOp = $this->config->get("権限者参加メッセージ");
	    $messageFirst = $this->config->get("初参加メッセージ");
	    $messageOwner = $this->config->get("鯖主参加メッセージ");
	    $message = str_replace("%name", $name, $message);
	    $messageOp = str_replace("%name", $name, $messageOp);
	    $messageFirst = str_replace("%name" , $name, $messageFirst);
	    $messageOwner = str_replace("%name" , $name, $messageOwner);
	    
	    if(!$player->hasPlayedBefore()){
	        $event->setJoinMessage($messageFirst);
	    }else if ($name == $Owner) {
	        $event->setJoinMessage($messageOwner);
	    }else if ($this->getServer()->isOp($name)){
	        $event->setJoinMessage($messageOp);
	    }else{
	        $event->setJoinMessage($message);
	    }
	}
	
	public function onQuit(PlayerQuitEvent $event){
	    $player = $event->getPlayer();
	    $name = $event->getPlayer()->getName();
	    $Owner = $this->config->get("鯖主ID");
	    $message = $this->config->get("退出メッセージ") ;
	    $messageOp = $this->config->get("権限者退出メッセージ");
	    $messageOwner = $this->config->get("鯖主退出メッセージ");
	    $message = str_replace("%name", $name, $message);
	    $messageOp = str_replace("%name", $name, $messageOp);
		$messageOwner = str_replace("%name" , $name, $messageOwner);

		$reason = $event->getQuitReason();
		$reasons = "その他";

		foreach($this->reason->getAll() as $key => $value){
			if(strpos($reason,$key) !== false){
				$reasons = $this->reason->get($key);
			}
		}
	    
	    if ($name == $Owner) {
			$messageOwner = str_replace("%reason", $reasons, $messageOwner);
	        $event->setQuitMessage($messageOwner);
	    }else if ($this->getServer()->isOp($name)){
			$messageOp = str_replace("%reason", $reasons, $messageOp);
	        $event->setQuitMessage($messageOp);
	    }else{
			$message = str_replace("%reason", $reasons, $message);
	        $event->setQuitMessage($message);
	    }
	}
	
	public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool{
	    switch ($command->getName()){
	        case "msg_reload":
                $name = $sender->getName();
	            if($name == 'CONSOLE' or $this->getServer()->isOp($name)){
					$this->config->reload();
					$this->reason->reload();
					$sender->sendMessage("Configをリロードしました");
	            }
	            break;
		}
		return true;
	}
}%`vNK45(   GBMB