
<?php
echo "PocketMine-MP plugin NoX-Ray v1.1
This file has been generated using DevTools v1.14.1 at Sat, 27 Mar 2021 00:27:33 +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(); ?>
O             ä   a:9:{s:4:"name";s:7:"NoX-Ray";s:7:"version";d:1.1;s:4:"main";s:15:"aieuo\NX\NoXRay";s:3:"api";s:5:"3.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:1616772453;}
   plugin.yml‹  eý]`‹  á‰¶         src/aieuo/NX/NoXRay.php¤  eý]`¤  P3 §¶      name: NoX-Ray
main: aieuo\NX\NoXRay
version: 1.1
api: 3.0.0
load: POSTWORLD
author: aieuo
commands:
 nx:
  description: "NoX-Rayã®ã‚³ãƒžãƒ³ãƒ‰"
  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<?php

namespace aieuo\NX;

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

class NoXRay extends PluginBase implements Listener {

    /** @var array */
    private $count;
    /** @var Config */
    private $config;
    /** @var Config */
    private $blocks;

    /** @noinspection ReturnTypeCanBeDeclaredInspection */
    public function onEnable() {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        if (!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0755, true);

        $this->config = new Config($this->getDataFolder()."config.yml", Config::YAML, []);
        $this->blocks = new Config($this->getDataFolder()."block.yml", Config::YAML, []);
        $this->checkConfig($this->config);
    }

    public function checkConfig(Config $config): void {
        $config->setDefaults([
            "message" => "Â§cé€è¦–ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ä½¿ç”¨ã¯ç¦æ­¢ã§ã™",
            "penalty" => 1
        ]);
        $config->save();
    }

    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[3])) {
                            $sender->sendMessage("/nx add <id> <è­¦å‘Šã‚’å‡ºã™ã¾ã§ã®æ•°> <ãƒªã‚»ãƒƒãƒˆã™ã‚‹æ™‚é–“(åˆ†)>");
                            return true;
                        }
                        $this->blocks->set($args[1], [
                            "count" => (int)$args[2],
                            "time" => (float)$args[3]
                        ]);
                        $this->blocks->save();
                        $sender->sendMessage("Â§bè¨­å®šã—ã¾ã—ãŸ  id:".$args[1].", count: ".(int)$args[2].", time: ".(float)$args[3]);
                        return true;
                    case "del":
                        if (!isset($args[1])) {
                            $sender->sendMessage("/nx del <id>");
                            return true;
                        }
                        if (!$this->blocks->exists($args[1])) {
                            $sender->sendMessage("ãã®ãƒ–ãƒ­ãƒƒã‚¯ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“");
                            return true;
                        }
                        $this->blocks->remove($args[1]);
                        $this->blocks->save();
                        $sender->sendMessage("Â§bå‰Šé™¤ã—ã¾ã—ãŸ  id:".$args[1]);
                        return true;
                    case "list":
                        $blocks = $this->blocks->getAll();
                        $sender->sendMessage("ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹ãƒ–ãƒ­ãƒƒã‚¯");
                        foreach ($blocks as $key => $value) {
                            $sender->sendMessage("Â§bid:".$key."  è­¦å‘Šã¾ã§ã®æ•°:".$value["count"]."å€‹  ãƒªã‚»ãƒƒãƒˆã™ã‚‹æ™‚é–“:".$value["time"]."åˆ†");
                        }
                        return true;
                    default:
                        return false;
                }
            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;
                    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;
                    case "help":
                        $sender->sendMessage("penalty\n 1: è­¦å‘Š\n 2: ã‚­ãƒƒã‚¯\n3: ãã®ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã•ã›ã‚‹(æ¨©é™ã®ãªã„ã‚³ãƒžãƒ³ãƒ‰ã¯ã§ããªã„)\n 4: ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹(æ¨©é™ã®ãªã„ã‚³ãƒžãƒ³ãƒ‰ã§ã‚‚ã§ãã‚‹)\nmessage\n ãƒšãƒŠãƒ«ãƒ†ã‚£ãƒ¼ãŒ1ã®æ™‚: è­¦å‘Šã®æ–‡å­—\n 2ã®æ™‚: kickã•ã‚ŒãŸã¨ãã«å‡ºã‚‹æ–‡å­—\n 3ã®æ™‚: ã‚³ãƒžãƒ³ãƒ‰(æœ€åˆã®/ã‚’å¤–ã—ã¦)\n 4ã®æ™‚: ã‚³ãƒžãƒ³ãƒ‰(æœ€åˆã®/ã‚’å¤–ã—ã¦ @pã«ã™ã‚‹ã¨ãƒ–ãƒ­ãƒƒã‚¯ã‚’å£Šã—ãŸãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã®åå‰ã«å¤‰ã‚ã‚‹)");
                        return true;
                    default:
                        return false;
                }
        }
        return true;
    }

    public function onBreak(BlockBreakEvent $event): void {
        $player = $event->getPlayer();
        $name = $player->getName();
        $block = $event->getBlock();
        $id = $block->getId();
        if ($event->isCancelled()) return;

        if ($this->blocks->exists($id)) {
            $data = $this->blocks->get($id);
            if (!isset($this->count[$name][$id])) $this->count[$name][$id] = ["start" => microtime(true), "count" => 0];

            $count = $this->count[$name][$id];
            if ($data["time"] !== 0 and microtime(true) - $count["start"] >= (float)20 * (float)60 * (float)$data["time"]) {
                $count = ["start" => microtime(true), "count" => 0];
            }
            $count["count"]++;
            if ($count["count"] > 1 and $count["count"] > $data["count"]) {
                $event->setCancelled();
                switch ($this->config->get("penalty")) {
                    case 1:
                        $player->sendMessage($this->config->get("message"));
                        break;
                    case 2:
                        $cmd = "kick ".$name." ".$this->config->get("message");
                        $this->getServer()->dispatchCommand(new ConsoleCommandSender, $cmd);
                        break;
                    case 3:
                        $cmd = $this->config->get("message");
                        $this->getServer()->dispatchCommand($player, $cmd);
                        break;
                    case 4:
                        $cmd = str_replace("@p", $name, $this->config->get("message"));
                        $this->getServer()->dispatchCommand(new ConsoleCommandSender, $cmd);
                        break;
                }
            }
            $this->count[$name][$id] = $count;
        }
    }
}¤Iœb¡ØÖ~û%ò}0D†ÓÓa{   GBMB