<?php echo "Altay plugin ReplenishResources v1\nThis file has been generated using Turanic at Sun, 05 Aug 2018 18:15:44 +0900.\n----------------\n";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(); ?>
‡               a:9:{s:4:"name";s:18:"ReplenishResources";s:7:"version";s:1:"1";s:4:"main";s:24:"aieuo\ReplenishResources";s:3:"api";a:1:{i:0;s:5:"3.0.0";}s:6:"depend";a:0:{}s:11:"description";s:0:"";s:7:"authors";a:1:{i:0;s:5:"aieuo";}s:7:"website";s:0:"";s:12:"creationDate";i:1533460544;}
   plugin.ymlþ   @Àf[þ   "Í:¶          src/aieuo/ReplenishResources.php;'  @Àf[;'  µ</ò¶      name: ReplenishResources
main: aieuo\ReplenishResources
version: 1.0
api: [3.0.0]
load: POSTWORLD
author: aieuo
commands:
 reso:
  description: å¥½ããªãƒ–ãƒ­ãƒƒã‚¯ã§ãƒ¯ãƒ¼ãƒ«ãƒ‰ä½œæˆ
  usage: /reso <pos1 | pos2 | add | del | setting>
  permission: op<?php
namespace aieuo;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\Player;
use pocketmine\block\Block;
use pocketmine\utils\Config;
use pocketmine\math\Vector3;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\ConsoleCommandSender;

class ReplenishResources 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->setting = new Config($this->getDataFolder()."setting.yml", Config::YAML, [
    		"wait" => 60,
    		"sneak" => true,
    		"announcement" => false
    	]);
    	$this->wait = $this->setting->get("wait");
    	$this->sneak = (int)$this->setting->get("sneak");
    	$this->announce = $this->setting->get("announcement");
    }

    public function onDisable(){
    	$this->setting->save();
    }

  	public function onCommand(CommandSender $sender, Command $command,string $label, array $args):bool{
        $cmd = $command->getName();
    	if($cmd == "reso"){
    		if(!$sender instanceof Player){
    			$sender->sendMessage("ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‹ã‚‰ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“");
    			return true;
    		}
    		if(!$sender->isOp()){
    			return false;
    		}
    		if(!isset($args[0])){
    			return false;
    		}
        	$name = $sender->getName();
    		switch ($args[0]) {
    			case 'setting':
    				if(!isset($args[2])){
    					$sender->sendMessage("/reso setting <wait | sneak | announce>");
    					return true;
    				}
    				switch ($args[1]) {
    					case 'wait':
    						$wait = (int)$args[2];
    						if($wait < 0){
    							$sender->sendMessage("0ç§’ä»¥ä¸Šã§æŒ‡å®šã—ã¦ãã ã•ã„");
    							return true;
    						}
    						$this->setting->set("wait", $wait);
    						$sender->sendMessage($wait."ç§’ã«è¨­å®šã—ã¾ã—ãŸ");
    						$this->wait = $wait;
    						break;
    					case 'sneak':
    						if($args[2] == "on"){
    							$this->setting->set("sneak", true);
    							$sender->sendMessage("ã‚¹ãƒ‹ãƒ¼ã‚¯ã—ãªã„ã¨è£œå……ã§ããªã„ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸ");
    							$this->sneak = true;
    						}elseif($args[2] == "off"){
    							$this->setting->set("sneak", false);
    							$sender->sendMessage("ã‚¹ãƒ‹ãƒ¼ã‚¯ã—ãªãã¦ã‚‚è£œå……ã§ãã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸ");
    							$this->sneak = false;
    						}
    						break;
    					case 'announce':
    						if($args[2] == "on"){
    							$this->setting->set("announcement", true);
    							$sender->sendMessage("è£œå……ã™ã‚‹ã¨ãã«ã‚µãƒ¼ãƒãƒ¼ã«ã„ã‚‹å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã‚ˆã†ã«ã—ã¾ã—ãŸ");
    							$this->announce = true;
    						}elseif($args[2] == "off"){
    							$this->setting->set("announcement", false);
    							$sender->sendMessage("è£œå……ã™ã‚‹ã¨ãã«å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‰ãªã„ã‚ˆã†ã«ã—ã¾ã—ãŸ");
    							$this->announce = false;
    						}
    						break;
    					default:
	    					$sender->sendMessage("/reso setting <wait | sneak | anounce>");
	    					break;
    				}
    				return true;
				case 'cancel':
					unset($this->tap[$name],$this->break[$name],$this->pos1[$name],$this->pos2[$name]);
					$sender->sendMessage("ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã—ã¾ã—ãŸ");
					return true;
				case 'pos1':
					$this->break[$name] = "pos1";
					unset($this->pos2[$name]);
					$sender->sendMessage("ãƒ–ãƒ­ãƒƒã‚¯ã‚’å£Šã—ã¦ãã ã•ã„");
					return true;
				case 'pos2':
					if(!isset($this->pos1[$name])){
						$sender->sendMessage("ã¾ãšpos1ã‚’è¨­å®šã—ã¦ãã ã•ã„");
						return true;
					}
					$this->break[$name] = "pos2";
					$sender->sendMessage("ãƒ–ãƒ­ãƒƒã‚¯ã‚’å£Šã—ã¦ãã ã•ã„");
					return true;
				case 'add':
					if(!isset($args[1])){
						$sender->sendMessage("/reso add <id>");
						return true;
					}
					if(!isset($this->pos1[$name]) or !isset($this->pos2[$name])){
						$sender->sendMessage("ã¾ãšposã‚’è¨­å®šã—ã¦ãã ã•ã„");
						return true;
					}
					$this->tap[$name] = [
						"type" => "add",
						"id" => $args[1]
					];
					$sender->sendMessage("è¿½åŠ ã™ã‚‹çœ‹æ¿ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„");
					return true;
				case 'del':
					$this->tap[$name]["type"] = "del";
					$sender->sendMessage("å‰Šé™¤ã™ã‚‹çœ‹æ¿ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„");
					return true;
    		}
    		return true;
		}
	}

	public function onBreak(BlockBreakEvent $event){
		$player = $event->getPlayer();
		$name = $player->getName();
		if(isset($this->break[$name])){
			$block = $event->getBlock();
			$event->setCancelled();
			switch ($this->break[$name]) {
				case 'pos1':
					$this->pos1[$name] = [
						"x" => $block->x,
						"y" => $block->y,
						"z" => $block->z,
						"level" => $block->level->getFolderName()
					];
					$player->sendMessage("è¨­å®šã—ã¾ã—ãŸ(".$this->pos1[$name]["x"].",".$this->pos1[$name]["y"].",".$this->pos1[$name]["z"].",".$this->pos1[$name]["level"].")");
					break;
				case 'pos2':
					if($this->pos1[$name]["level"] != $block->level->getFolderName()){
						$player->sendMessage("pos1ã¨åŒã˜ãƒ¯ãƒ¼ãƒ«ãƒ‰ã«è¨­å®šã—ã¦ãã ã•ã„");
						return;
					}
					$this->pos2[$name] = [
						"x" => $block->x,
						"y" => $block->y,
						"z" => $block->z,
						"level" => $block->level->getFolderName()
					];
					$player->sendMessage("è¨­å®šã—ã¾ã—ãŸ");
					break;
			}
			unset($this->break[$name]);
		}
	}

    public function onTouch(PlayerInteractEvent $event){
    	$player = $event->getPlayer();
    	$block = $event->getBlock();
    	$name = $player->getName();
    	if(isset($this->tap[$name])){
    		switch ($this->tap[$name]["type"]) {
    			case 'add':
					if(!($block->getId() == 63 or $block->getId() == 68)){
						$player->sendMessage("çœ‹æ¿ã‚’è§¦ã£ã¦ãã ã•ã„");
						return;
					}
					$event->setCancelled();
					$ids = explode(":",$this->tap[$name]["id"]);
					if(!isset($ids[1]))$ids[1] = 0;
					$this->config->set($block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName(),[
						"startx" => min($this->pos1[$name]["x"],$this->pos2[$name]["x"]),
						"starty" => min($this->pos1[$name]["y"],$this->pos2[$name]["y"]),
						"startz" => min($this->pos1[$name]["z"],$this->pos2[$name]["z"]),
						"endx" => max($this->pos1[$name]["x"],$this->pos2[$name]["x"]),
						"endy" => max($this->pos1[$name]["y"],$this->pos2[$name]["y"]),
						"endz" => max($this->pos1[$name]["z"],$this->pos2[$name]["z"]),
						"level" => $this->pos1[$name]["level"],
						"id" => [
							"id" => $ids[0],
							"damage" => $ids[1]
						]
					]);
					$this->config->save();
					$player->sendMessage("è¿½åŠ ã—ã¾ã—ãŸ");
    				break;
    			case 'del':
					if(!($block->getId() == 63 or $block->getId() == 68)){
						$player->sendMessage("çœ‹æ¿ã‚’è§¦ã£ã¦ãã ã•ã„");
						return;
					}
		    		$place = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
					if($this->config->exists($place)){
						$this->config->remove($place);
						$this->config->save();
						$player->sendMessage("å‰Šé™¤ã—ã¾ã—ãŸ");
					}else{
						$player->sendMessage("ãã®å ´æ‰€ã«ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“");
					}
					break;
    		}
    		unset($this->tap[$name]);
    		return;
    	}
    	if(($block->getId() == 63 or $block->getId() == 68)){
    		if($this->sneak == true and !$player->isSneaking()){
    			$player->sendMessage("ã‚¹ãƒ‹ãƒ¼ã‚¯ã—ãªãŒã‚‰ã‚¿ãƒƒãƒ—ã™ã‚‹ã¨è£œå……ã—ã¾ã™");
    			return;
    		}
    		$place = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
    		if($this->wait !== 0){
	    		$time = $this->checkTime($player->getName(), $place);
	    		if($time == false){
	    			$player->sendMessage($this->wait."ç§’ä»¥å†…ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™\nã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„");
	    			return;
	    		}
	    	}
	    	if($this->config->exists($place)){
	    		$datas = $this->config->get($place);
	    		$count = $this->countBlocks($datas);
	    		if($count != 0){
	    			$player->sendMessage("ã¾ã ãƒ–ãƒ­ãƒƒã‚¯ãŒæ®‹ã£ã¦ã„ã¾ã™");
	    			return;
	    		}
	    		if($this->announce == true)$this->getServer()->broadcastMessage($name."ã•ã‚“ãŒè³‡æº(".$place.")ã®è£œå……ã‚’è¡Œã„ã¾ã™");
	    		$this->setBlocks($datas);
	    	}
	    }
    }

    public function checkTime($name,$type){
    	if(!isset($this->time[$name][$type])){
			$this->time[$name][$type] = microtime(true);
			return true;
    	}
    	$time = microtime(true) -$this->time[$name][$type];
    	if($time <= $this->wait){
    		return false;
    	}
		$this->time[$name][$type] = microtime(true);
    	return true;
    }

    public function countBlocks($datas){
    	$sx = $datas["startx"];
    	$sy = $datas["starty"];
    	$sz = $datas["startz"];
    	$ex = $datas["endx"];
    	$ey = $datas["endy"];
    	$ez = $datas["endz"];
    	$level = $this->getServer()->getLevelByName($datas["level"]);
    	$count = 0;
    	for ($x = $sx; $x <= $ex; $x++) {
	    	for ($y = $sy; $y <= $ey; $y++) {
		    	for ($z = $sz; $z <= $ez; $z++) {
		    		$block = $level->getBlock(new Vector3($x,$y,$z));
		    		if($block->getId() !== 0){
		    			$count ++;
		    		}
		    	}
	    	}
    	}
    	return $count;
    }

    public function setBlocks($datas){
    	$sx = $datas["startx"];
    	$sy = $datas["starty"];
    	$sz = $datas["startz"];
    	$ex = $datas["endx"];
    	$ey = $datas["endy"];
    	$ez = $datas["endz"];
    	$level = $this->getServer()->getLevelByName($datas["level"]);
    	$id = $datas["id"]["id"];
    	$meta = $datas["id"]["damage"];
    	for ($x = $sx; $x <= $ex; $x++) {
	    	for ($y = $sy; $y <= $ey; $y++) {
		    	for ($z = $sz; $z <= $ez; $z++) {
		    		$level->setBlock(new Vector3($x,$y,$z),Block::get($id,$meta));
		    	}
	    	}
    	}
    }
}{@B¾ôð@9;AÂ’>}Ìa¯   GBMB