<?php echo "Altay plugin ReplenishResources v0.1\nThis file has been generated using Turanic at Mon, 11 Jun 2018 21:57:41 +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:3:"0.1";s:4:"main";s:24:"aieuo\ReplenishResources";s:3:"api";a:1:{i:0;s:13:"3.0.0-ALPHA11";}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:1528721861;}
   plugin.ymlü   Åq[ü   ¥6Ñ¶          src/aieuo/ReplenishResources.php›  Åq[›  †ÊwÒ¶      $   src/aieuo/ReplenishResources.php-tmp    Åq[        ¶      name: ReplenishResources
main: aieuo\ReplenishResources
version: 0.1
api: [3.0.0-ALPHA11]
load: POSTWORLD
author: aieuo
commands:
 reso:
  description: å¥½ããªãƒ–ãƒ­ãƒƒã‚¯ã§ãƒ¯ãƒ¼ãƒ«ãƒ‰ä½œæˆ
  usage: /reso <pos1 | pos2 | add | del>
  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);
    }

  	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 '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) and $player->isSneaking()){
    		$place = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
    		$time = $this->checkTime($player->getName(),$place);
    		if($time == false){
    			$player->sendMessage("1åˆ†ä»¥å†…ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™\nã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„");
    			return;
    		}
	    	if($this->config->exists($place)){
	    		$datas = $this->config->get($place);
	    		$count = $this->countBlocks($datas);
	    		if($count != 0){
	    			$player->sendMessage("ã¾ã ãƒ–ãƒ­ãƒƒã‚¯ãŒæ®‹ã£ã¦ã„ã¾ã™");
	    			return;
	    		}
	    		$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 <= 60){
    		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));
		    	}
	    	}
    	}
    }
}ªöUZFˆýî|lóâà„Ñb¨)   GBMB