
<?php
echo "PocketMine-MP plugin AnywhereChat v1.0.0
This file has been generated using DevTools v1.13.3 at Fri, 20 Sep 2019 21:46:51 +0900
----------------
";

if(extension_loaded("phar")){
	$phar = new \Phar(__FILE__);
	foreach($phar->getMetadata() as $key => $value){
		echo ucfirst($key) . ": " . (is_array($value) ? implode(", ", $value) : $value) . "\n";
	}
}

__HALT_COMPILER(); ?>
P               a:9:{s:4:"name";s:12:"AnywhereChat";s:7:"version";s:5:"1.0.0";s:4:"main";s:17:"AnywhereChat\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:0:"";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1568983611;}
   plugin.yml  <ʄ]  a\         src/AnywhereChat/Main.php  <ʄ]  4޶      )   src/AnywhereChat/Tasks/GetMessageTask.php
  <ʄ]
  [˺:      0   src/AnywhereChat/Tasks/RegisterBlackListTask.php  <ʄ]  VRG      *   src/AnywhereChat/Tasks/SendMessageTask.php`  <ʄ]`  5*      name: AnywhereChat
main: AnywhereChat\Main
version: 1.0.0
api: [3.0.0, 4.0.0]
author: mixpowder
commands:
  achat:
    usage: /achat
    description: 選択メニュー表示
  blacklist:
    usage: /blacklist <register> name
    description: ブラックリスト登録<?php

namespace AnywhereChat;

use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;
use pocketmine\Player;
use pocketmine\event\Listener;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\network\mcpe\protocol\ModalFormRequestPacket;
use pocketmine\network\mcpe\protocol\ModalFormResponsePacket;
use pocketmine\command\{Command, CommandSender};

class Main extends PluginBase implements Listener{
    
    public static $instance;


    public function sendCustom(Player $player, $title, $elements, $id, $id2 = 0) {
        $pk = new ModalFormRequestPacket(); 
        $pk->formId = $id;
        $this->Id[$player->getName()] = $id2;
        $this->pdata[$pk->formId] = $player;
        $data = [ 
        'type'    => 'custom_form', 
        'title'   => $title, 
        'content' => $elements,
        ];
        $pk->formData = json_encode( $data, JSON_PRETTY_PRINT | JSON_BIGINT_AS_STRING | JSON_UNESCAPED_UNICODE );
        $player->dataPacket($pk);
    }

    public function sendForm(Player $player, $title, $come, $buttons, $id, $id2 = 0) {
        $pk = new ModalFormRequestPacket(); 
        $pk->formId = $id;
        $this->Id[$player->getName()] = $id2;
        $this->pdata[$pk->formId] = $player;
        $data = [ 
        'type'    => 'form', 
        'title'   => $title, 
        'content' => $come, 
        'buttons' => $buttons 
        ]; 
        $pk->formData = json_encode( $data, JSON_PRETTY_PRINT | JSON_BIGINT_AS_STRING | JSON_UNESCAPED_UNICODE );
        $player->dataPacket($pk);
    }
    
    public static function getInstance(){
        return self::$instance;
    }
    
    public function onLoad(){
        self::$instance = $this;
    }

    public function onEnable(){
        $this->getServer()->getPluginManager()->registerEvents($this,$this);
        $this->getLogger()->info("§aAnywhereChatを読み込みました! by mixpowder");
        if(!file_exists($this->getDataFolder())) {
            @mkdir($this->getDataFolder(), 0744, true);
        }
        $this->config = new Config($this->getDataFolder()."Config.yml",Config::YAML,["ChannelNumber" => ["765484:初期Channel"],"最大読み込み件数" => 10,"最高権限者" =>""]);
        $this->SetVariable();
    }
    
    public function SetVariable(){
        $id = 0;
        foreach($this->config->get("ChannelNumber") as $ChannelData){
            $data = explode(":",$ChannelData);
            $this->ChannelData[$id]["Name"] = $data[1];
            $this->ChannelData[$id]["ID"] = $data[0];
            $id++;
        }
    }

    public function onPrecessing(DataPacketReceiveEvent $event){
        $player = $event->getPlayer();
        $pk = $event->getPacket();
        $name = $player->getName();
        if($pk instanceof ModalFormResponsePacket){
            $data = $pk->formData;
            if(!($data == "null\n")){
                switch($pk->formId){
                    case 83485:
                    $data = json_decode($data,true);
                    switch($this->Id[$player->getName()]){
                        case 0:
                        $this->ID[$name] = $data;
                        $this->getServer()->getAsyncPool()->submitTask(new Tasks\GetMessageTask($name,$this->ChannelData[$data],$this->config->get("最大読み込み件数")));
                        break;
                    
                        case 1:
                        if(!empty($data[0])){
                            $this->getServer()->getAsyncPool()->submitTask(new Tasks\SendMessageTask($name,$this->ChannelData[$this->ID[$name]],$data[0],$this->config->get("最大読み込み件数")));
                        }else{
                            $this->getServer()->getAsyncPool()->submitTask(new Tasks\GetMessageTask($name,$this->ChannelData[$this->ID[$name]],$this->config->get("最大読み込み件数")));
                        }
                        
                        
                    }
                    break;
                   
                }
            }else{
                
            }
        }
    }
    
    public function SelectChat($player){
        $config = $this->config->get("ChannelNumber");
        if(!(json_encode($config) == "[]")){
            foreach($config as $Channel){
                $ChannelName = explode(":",$Channel);
                $buttons[] = ['text' => $ChannelName[1]];
            }
            $this->sendForm($player,"Channel選択メニュー","",$buttons,83485,0);
        }else{
            $player->sendMessage("Channelが設定されていません\n鯖主に頼んでChannelを設定してもらってください");
        }
    }

    public function onCommand(CommandSender $sender, Command $cmd, string $label, array $args): bool{
        switch ($cmd->getName()){
            case "achat":
            $this->SelectChat($sender);
            break;
        
            case "blacklist":
            if($sender->getName() == $this->config->get("最高権限者")){
                if(isset($args[0],$args[1])){
                    if($args[0] == "register"){
                        $this->getServer()->getAsyncPool()->submitTask(new Tasks\RegisterBlackListTask($args[1],$sender->getName()));
                    }else{
                        $sender->sendMessage("コマンドが違います");
                    }
                }else{
                    $sender->sendMessage("/blacklist <register> name");
                }
            }else{
                $sender->sendMessage("最高権限者ではないと使用できません");
            }
        }
        return true;
    }
}<?php

namespace AnywhereChat\Tasks;

use pocketmine\scheduler\AsyncTask;
use AnywhereChat\Main;

class GetMessageTask extends AsyncTask{
    
    public function __construct($name,$ChannelData,$count){
        $this->ChannelData = $ChannelData;
        $this->name = $name;
        $this->count = $count;
    }

    public function onRun(): void {
        $ch = curl_init();
        $options = [
	CURLOPT_URL => 'http://mix2.starfree.jp/global/AnywhereChat/AllMessage.php',
        CURLOPT_HEADER => false,
        CURLOPT_POST => true,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => [
            'type' => 'BlackList',
            'name' => $this->name
        ]];
        curl_setopt_array($ch, $options);
	$response = curl_exec($ch);
        if($response == 'false'){
            $options = [
            CURLOPT_URL => 'http://mix2.starfree.jp/global/AnywhereChat/AllMessage.php',
            CURLOPT_HEADER => false,
            CURLOPT_POST => true,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => [
                'type' => 'GETMessage',
                'ChannelNumber' => $this->ChannelData["ID"]
            ]];
            curl_setopt_array($ch, $options);
            $response = curl_exec($ch);
            curl_close($ch);
            $response = explode("<:;>",$response);
            if($this->count*3 < count($response)-1){
                $num = (count($response)-1)-$this->count*3;
                $line = $this->count;
            }else{
                $num = 0;
                $line = (count($response)-1)/3;
            }
            for($id = 0; $id < $line; $id++){
                if(empty($data)){
                    $data = "[".$response[$num++]." / ".$response[$num++]."]\n".$response[$num++]."\n";
                }else{
                    $data .= "[".$response[$num++]." / ".$response[$num++]."]\n".$response[$num++]."\n";
                }
            }
            $this->setResult($data);
        }else{
            $this->setResult('Black');
        }
        
        
    }
    
    public function onCompletion(\pocketmine\Server $server): void {
        $player = $server->getPlayer($this->name);
        if(!($this->getResult() == "Black")){
            $elements[] = ['type' => "input",'text' => $this->getResult()];
            Main::getInstance()->sendCustom($player,$this->ChannelData['Name'],$elements,83485,1);
        }else{
            $player->sendMessage("あなたはブラックリストに登録されています");
        }
    }
}<?php

namespace AnywhereChat\Tasks;

use pocketmine\scheduler\AsyncTask;

class RegisterBlackListTask extends AsyncTask{
    
    public function __construct($blackname,$playername){
        $this->blackname = $blackname;
        $this->playername = $playername;
    }

    public function onRun(): void {
        $ch = curl_init();
        $options = [
        CURLOPT_URL => 'http://mix2.starfree.jp/global/AnywhereChat/AllMessage.php',
        CURLOPT_HEADER => false,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => [
            'type' => 'RegisterBlackList',
            'name' => $this->blackname
        ]];
        curl_setopt_array($ch, $options);
        curl_exec($ch);
        curl_close($ch);
    }
    
    public function onCompletion(\pocketmine\Server $server): void {
        $player = $server->getPlayer($this->playername);
        $player->sendMessage("送信しました");
    }
}<?php

namespace AnywhereChat\Tasks;

use pocketmine\scheduler\AsyncTask;
use AnywhereChat\Main;

class SendMessageTask extends AsyncTask{
    
    public function __construct($name,$ChannelData,$Message,$config){
        $this->ChannelData = $ChannelData;
        $this->name = $name;
        $this->Message = $Message;
        $this->config = $config;
    }

    public function onRun(): void {
        $ch = curl_init();
	$options = [
	CURLOPT_URL => 'http://mix2.starfree.jp/global/AnywhereChat/AllMessage.php',
        CURLOPT_HEADER => false,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => [
            'type' => 'SendMessage',
            'ChannelNumber' => $this->ChannelData["ID"],
            'Message' => date("y/m/d H:i:s")."<:;>".$this->name."<:;>".$this->Message."<:;>"
        ]];
        curl_setopt_array($ch, $options);
	curl_exec($ch);
	curl_close($ch);
    }
    
    public function onCompletion(\pocketmine\Server $server): void {
        $server->getAsyncPool()->submitTask(new GetMessageTask($this->name,$this->ChannelData,$this->config));
    }
}5:@Vj{q߹Xk1   GBMB