<?php __HALT_COMPILER(); ?>
h                     src/aieuo/NoXRay.phpÌ  Ûï{ZÌ  @Ã/u¶      
   plugin.yml€  Ûï{Z€  ‰µ×i¶      <?php
namespace aieuo;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\Player;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\utils\Utils;
use pocketmine\utils\Config;
use pocketmine\scheduler\CallbackTask;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\ConsoleCommandSender;

class NoXRay extends PluginBase implements Listener{

    public function onEnable(){
            $this->getServer()->getPluginManager()->registerEvents($this,$this);
            if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0721, true);
            $this->config = new Config($this->getDataFolder() . "config.yml", Config::YAML, []);
            $this->b = new Config($this->getDataFolder() . "block.yml", Config::YAML, []);
            $this->CheckFile($this->config);
    }

    public function onCommand(CommandSender $sender, Command $command,string $label, array $args):bool{
        switch($command->getName()){
            case "nx":
                if(!isset($args[0]))return false;
                switch($args[0]){
                    case "add":
                        if(!isset($args[1]) or !isset($args[2]) or !isset($args[3])){
                            $sender->sendMessage("nx add <id> <è­¦å‘Šã‚’å‡ºã™ã¾ã§ã®æ•°> <ãƒªã‚»ãƒƒãƒˆã™ã‚‹æ™‚é–“>");
                            return true;
                        }
                        $this->b->set($args[1],[
                            "count"=>(int)$args[2],
                            "time"=>(float)$args[3]
                        ]);
                        $this->b->save();
                        $sender->sendMessage("Â§bè¿½åŠ ã—ã¾ã—ãŸ  id=".$args[1]);
                        return true;
                    break;
                    case "del":
                        if(!isset($args[1])){
                            $sender->sendMessage("/nx del <id>");
                            return true;
                        }
                        if($this->b->exists($args[1])){
                            $this->b->remove($args[1]);
                            $this->b->save();
                            $sender->sendMessage("Â§bå‰Šé™¤ã—ã¾ã—ãŸ  id=".$args[1]);
                        }else{
                            $sender->sendMessage("ãã®ãƒ–ãƒ­ãƒƒã‚¯ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“");
                        }
                        return true;
                    break;
                    case "list":
                        $blocks = $this->b->getAll();
                        $sender->sendMessage("ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹ãƒ–ãƒ­ãƒƒã‚¯");
                        foreach ($blocks as $key => $value) {
                            $sender->sendMessage("Â§bid:".(string)$key."  è­¦å‘Šã¾ã§ã®æ•°:".(string)$value["count"]."å€‹  ãƒªã‚»ãƒƒãƒˆã™ã‚‹æ™‚é–“:".(string)$value["time"]."åˆ†");
                        }
                        return true;
                    break;
                    default:
                        return false;
                    break;
                }            
            break;
            case "setnx":
                if(!isset($args[0]))return false;
                switch($args[0]){
                    case "m":
                    case "message":
                        if(!isset($args[1])){
                            $sender->sendMessage("setnx mes <ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸>");
                            return true;
                        }
                        $this->config->set("message",$args[1]);
                        $this->config->save();
                        $sender->sendMessage("Â§bè¨­å®šã—ã¾ã—ãŸ  ".$args[1]);
                        return true;
                        break;
                    case "p":
                    case "penalty":
                        if(!isset($args[1]) or ((int)$args[1] < 1 and (int)$args[1] > 4)){
                            $sender->sendMessage("setnx penalty <1~4>");
                            return true;
                        }
                        $this->config->set("penalty",(int)$args[1]);
                        $this->config->save();
                        $sender->sendMessage("Â§bè¨­å®šã—ã¾ã—ãŸ  ".$args[1]);
                        return true;
                        break;
                    case "help":
                        $sender->sendMessage("penalty\n1: è­¦å‘Š\n2: ã‚­ãƒƒã‚¯\n3: ãã®ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã•ã›ã‚‹(æ¨©é™ã®ãªã„ã‚³ãƒžãƒ³ãƒ‰ã¯ã§ããªã„)\n4: ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹(æ¨©é™ã®ãªã„ã‚³ãƒžãƒ³ãƒ‰ã§ã‚‚ã§ãã‚‹)\nmessage\nãƒšãƒŠãƒ«ãƒ†ã‚£ãƒ¼ãŒ1ã®æ™‚: è­¦å‘Šã®æ–‡å­—\n2ã®æ™‚: kickã•ã‚ŒãŸã¨ãã«å‡ºã‚‹æ–‡å­—\n3ã®æ™‚: ã‚³ãƒžãƒ³ãƒ‰(æœ€åˆã®/ã‚’å¤–ã—ã¦)\n4ã®æ™‚: ã‚³ãƒžãƒ³ãƒ‰(æœ€åˆã®/ã‚’å¤–ã—ã¦ @pã«ã™ã‚‹ã¨ãƒ–ãƒ­ãƒƒã‚¯ã‚’å£Šã—ãŸãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã®åå‰ã«å¤‰ã‚ã‚Šã¾ã™)");
                        return true;
                    break;
                    default:
                        return false;
                    break;
                }             break;
        }
     }

    public function onBreak(BlockBreakEvent $event){
        $player = $event->getPlayer();
        $name = $player->getName();
        $block = $event->getBlock();
        $id = $block->getId();
        if($this->b->exists($id)){
            $data = $this->b->get($id);
            if(!isset($this->dc[$name][$id]))$this->dc[$name][$id] =0;
            $this->dc[$name][$id] ++;
            if($this->dc[$name][$id] == 1){
                if($data["time"] ==0)return;
                $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this,"RDC"],[$name,$id]), 20*60*$data["time"]);
            }elseif($this->dc[$name][$id] > $data["count"]){
                    $event->setCancelled();
                    if($data["time"] == 0) $this->dc[$name][$id] =0;
                    switch ($this->config->get("penalty")) {
                        case 1:
                            $player->sendMessage($this->config->get("message"));
                            break;
                        case 2:
			    $cmd = $this->config->get("message");
                            $cmd = "kick ".$player->getName()." ".$cmd;
                            $this->getServer()->dispatchCommand(new ConsoleCommandSender,$cmd);
                            break;
                        case 3:
                            $cmd = $this->config->get("message");
                            $this->getServer()->dispatchCommand($player,$cmd);
                            break;
                        case 4:
                            $cmd = $this->config->get("message");
                            $cmd = str_replace("@p",$player->getName(),$cmd);
                            $this->getServer()->dispatchCommand(new ConsoleCommandSender,$cmd);
                            break;
                    }
            }
        }
    }

    public function RDC($name,$id){
            $this->dc[$name][$id] =0;
    }

    public function CheckFile($config){
        if($config->exists("message") === false){
            $config->set("message","Â§cé€è¦–ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ä½¿ç”¨ã¯ç¦æ­¢ã§ã™");
        }
        if($config->exists("penalty") === false){
            $config->set("penalty",1);
        }
        $config->save();
    }
}name: NoX-Ray
main: aieuo\NoXRay
version: 0.1
api: [3.0.0]
load: POSTWORLD
author: aieuo
commands:
 nx:
  description: "ã“ã¾ã‚“ã©"
  usage: "usage /nx <add | del | list>"
  permission: nx.command
 setnx:
  description: "è¨­å®šã‚³ãƒžãƒ³ãƒ‰"
  usage: "usage /setnx <message | penalty>"
  permission: setnx.command
permissions:
 nx.command:
  default: op
 setnx.command:
  default: op&.ÍÕÅPæ–±¤@ºñ"ËªR   GBMB