<?php __HALT_COMPILER(); ?>
                  4   src/saisana299/playerinfologger/PlayerInfoLogger.php  QL]  ,      8   src/saisana299/playerinfologger/PlayerInfoLoggerTask.php0  QL]0  c䵶      
   plugin.yml  QL]  ˙      <?php

namespace saisana299\playerinfologger;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\scheduler\AsyncTask;
use pocketmine\scheduler\Task;

class PlayerInfoLogger extends PluginBase implements Listener{

    public function onEnable(){
    	$this->getlogger()->info("§bPlayerInfoLoggerを読み込みました §6作成者 Saisana299");
    	@mkdir($this->getDataFolder());
      @mkdir($this->getDataFolder() . "Players/");
      $this->getServer()->getPluginManager()->registerEvents($this, $this);
      date_default_timezone_set('Asia/Tokyo');
    }

     public function onJoin(PlayerJoinEvent $event){
        $player = $event->getPlayer();
        $name = $player->getName();

        $info = "IP: ".$player->getAddress()."\n".
        "HOST: ".gethostbyaddr($player->getAddress())."\n".
        "PORT: ".$player->getPort()."\n".
        "CID: ".$player->getClientId()."\n".
        "UUID: ".$player->getUniqueId()."\n".
        "XUID: ".$player->getXuid();

		$this->getServer()->getAsyncPool()->submitTask(new PlayerInfoLoggerTask($this->getDataFolder() . "Players/" . "".strtolower($name).".log", $info));
    }

    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool {

        switch(strtolower($label)){
            
           case"pinfo":
           if(empty($args[0])){
            $sender->sendMessage("[PlayerInfo] 使い方：/pinfo <PlayerName>");
            return true;
           }
           if(file_exists($this->getDataFolder() . "Players/" . "".strtolower($args[0]).".log")){
            $sender->sendMessage("[PlayerInfo] §e".$args[0]."の記録");
            $sender->sendMessage("§a----------------------------------------");
           $sender->sendMessage(file_get_contents($this->getDataFolder() . "Players/" . "".strtolower($args[0]).".log"));
           $sender->sendMessage("§a----------------------------------------");
       }else{
        $sender->sendMessage("[PlayerInfo] §cそのプレイヤーの記録はありません");
       }

           break;
       }
       return true;
   }

}
<?php

namespace saisana299\playerinfologger;

use pocketmine\scheduler\AsyncTask;
use pocketmine\Server;
use pocketmine\Player;

class PlayerInfoLoggerTask extends AsyncTask
{
	
	private $logResource;
    public function __construct($logPath,$logcom) {
        touch($logPath);
        $this->logResource = fopen($logPath, 'w');
		$this->logcom = $logcom;
    }
	
    public function onRun()
    {
      fwrite($this->logResource, $this->logcom . PHP_EOL);  
    }
	
    public function onCompletion(Server $server)
    {
		fclose($this->logResource);
    }
}---
name: PlayerInfoLogger
api: 3.5.0
main: saisana299\playerinfologger\PlayerInfoLogger
version: 1.0.0
description: プレイヤーの情報保存
author: Saisana299
load: POSTWORLD
commands:
  pinfo:
    description: プレイヤーの情報表示
    permission: op
...
zݤ;e±   GBMB