
<?php
echo "PocketMine-MP plugin Airsoft v1.1.1
This file has been generated using DevTools v1.13.3 at Sat, 20 Jul 2019 09:12:48 +0000
----------------
";

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:7:"Airsoft";s:7:"version";s:5:"1.1.1";s:4:"main";s:16:"Ironingot16\Main";s:3:"api";a:3:{i:0;s:5:"4.0.0";i:1;s:5:"3.0.0";i:2;s:5:"3.5.0";}s:6:"depend";s:0:"";s:11:"description";s:9:"play pvp.";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1563613968;}
   plugin.ymlt  2]t  d=         src/Ironingot16/Main.phpJ  2]J  D+          src/Ironingot16/CallbackTask.php  2]  w      name: Airsoft
main: Ironingot16\Main
version: 1.1.1
api: [4.0.0,3.0.0,3.5.0]
author : Ironingot
load: POSTWORLD
description: play pvp.
commands:
 joinblue:
  description: "BLUEチームに参加"
  usage: " /joinblue "
 joinred:
  description: "REDチームに参加"
  usage: " /joinred "
 startc:
  description: "カウンター戦を開始"
  usage: " /startc "
 startf:
  description: "フラッグ戦を開始"
  usage: " /startf "
 spawnrc:
  description: "REDチームのカウンター戦のスポーン地点を設定"
  usage: " /spawnrc "
 spawnbc:
  description: "BLUEチームのカウンター戦のスポーン地点を設定"
  usage: " /spawnbc "
 spawnrf:
  description: "REDチームのフラッグ戦のスポーン地点を設定"
  usage: " /spawnrf "
 spawnbf:
  description: "BLUEチームのフラッグ戦のスポーン地点を設定"
  usage: " /spawnbf "<?php

namespace Ironingot16;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\utils\Config;
use pocketmine\item\Item;
use pocketmine\Player;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\CommandExecutor;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\event\player\PlayerRespawnEvent;
use pocketmine\math\Vector3;
use pocketmine\scheduler\TaskScheduler;
use pocketmine\Server;
use pocketmine\level\Level;
use pocketmine\level\Position;
use pocketmine\level\sound\AnvilUseSound;
use pocketmine\level\sound\GhastShootSound;
use pocketmine\event\block\BlockBreakEvent;

class Main extends PluginBase implements Listener{
    public function onEnable(){
        $this->getServer()->getPluginManager()->registerEvents($this, $this);

        $this->blue = 0;

        $this->red = 0;
        
        $this->bluekp = 0;
        
        $this->redkp = 0;
        
        $this->gametype = 0; //0:ゲーム中ではない状態 1:カウンター戦 2:フラッグ戦
        
        if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(),0744,true);


	$this->config = new Config($this->getDataFolder()."config.yml", Config::YAML, 
	            [

				"参加するときにタップするブロックのID" => 57,//ダイヤモンドブロック
				
				"フラッグのID" => 41,//金ブロック
				
				]);
				
	
    $this->xyzc = new Config($this->getDataFolder() . "xyzc.yml", Config::YAML, array(
        "Red"=> array(
          "x"=>217,
          "y"=>5,
          "z"=>244,
        ),
        "Blue"=> array(
          "x"=>260,
          "y"=>5,
          "z"=>247,
        ),
        "ワールド" => "world",
      )
    );
    $this->xyzf = new Config($this->getDataFolder() . "xyzf.yml", Config::YAML, array(
        "Red"=> array(
          "x"=>217,
          "y"=>5,
          "z"=>244,
        ),
        "Blue"=> array(
          "x"=>260,
          "y"=>5,
          "z"=>247,
        ),
        "ワールド" => "world",
      )
    );	
    }
    
    public function onJoin(PlayerJoinEvent $event){

        $player = $event->getPlayer();

        $name = $player->getName();

        $this->type[$name] = 3;

    }

	public function onTap(PlayerInteractEvent $event){

		$item = $this->config->get("参加するときにタップするブロックのID");

		$block = $event->getBlock();
		
		$id = $block->getId();

		if($id == $item){

					$player = $event->getPlayer();
					
					$name = $player->getName();
					
                    if($this->type[$name] !== 3){

                        $player->sendMessage("§c既に参加済みです");

                    }else{

 			            if($this->red > $this->blue){

                            $player->setNameTag("[§bBlue§fTeam§f] ".$name);

                            $player->sendMessage("§bBlue§6Teamになりました");
	
                            $this->type[$name] = 1;

                            $this->blue++;

                        }else{

                            $player->setNameTag("[§cRed§fTeam§f] ".$name);

                            $player->sendMessage("§cRed§6Teamになりました");

                            $this->type[$name] = 2;

                            $this->red++;

                        }

                    }
					
				
		}
		    
		    
    }
    
    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool{
        
    	switch (strtolower($command->getName())) {
    	
    		case "joinblue":
    		    
    		    $namea = $sender->getName();
    		    
                $sender->setNameTag("[§bBlue§fTeam§f] ".$namea);

                $sender->sendMessage("§bBlue§6Teamになりました");
	
                $this->type[$namea] = 1;

                $this->blue++;
                
                return true;
                
                break;
            
            case "joinred":
                
                $namea = $sender->getName();
                
                $sender->setNameTag("[§cRed§fTeam§f] ".$namea);

                $sender->sendMessage("§cRed§6Teamになりました");

                $this->type[$namea] = 2;

                $this->red++;

                return true;
                
    		    break;
    		
    		case "startc":
    		    
    		    if($sender->isOp()){
    		        
    		        $this->startCounter();
    		        
    		        $this->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "endCounter"]),6000);
    		        
    		    }else{
    		        $sender->sendMassage("あなたは権限者ではありません");
    		        
    		    }
    		    
    		    return true;
    		    
    		    break;
    		    
            case "startf":
    		    
    		    if($sender->isOp()){
    		        
    		        $this->startFlag();
    		        
    		    }else{
    		        $sender->sendMassage("あなたは権限者ではありません");
    		        
    		    }
    		    
    		    return true;
    		    
    		    break;
    		    
    	    case "spawnrc":
    	        
    	        if($sender->isOp()){
    	            
    	            if (!($sender instanceof Player)) {
    	                
    	                $sender->sendMessage(self::tag."§eこのコマンドはゲーム内でしか実行できません!!");
    	                
    	                return true;
    	                
    	            }
    	            
                    $level=$sender->getLevel();
                    $wname=$level->getName();
                    $x=$sender->x;
                    $y=$sender->y;
                    $z=$sender->z;
                    
                    $this->xyzc->set("Red",array("x"=>$x,"y"=>$y,"z"=>$z,));
                    $this->xyzc->set("ワールド",$wname);
                    $this->xyzc->save();
                    
                    $sender->sendMessage("カウンター戦のREDチームのスポーン地点を設定しました");
    	        }
    	        
    	        return true;
    	        
    	        break;

            case "spawnbc":
    	        
    	        if($sender->isOp()){
    	            
    	            if (!($sender instanceof Player)) {
    	                
    	                $sender->sendMessage(self::tag."§eこのコマンドはゲーム内でしか実行できません!!");
    	                
    	                return true;
    	                
    	            }
    	            
                    $level=$sender->getLevel();
                    $wname=$level->getName();
                    $x=$sender->x;
                    $y=$sender->y;
                    $z=$sender->z;
                    
                    $this->xyzc->set("Blue",array("x"=>$x,"y"=>$y,"z"=>$z,));
                    $this->xyzc->set("ワールド",$wname);
                    $this->xyzc->save();
                    
                    $sender->sendMessage("カウンター戦のBLUEチームのスポーン地点を設定しました");
    	        }
    	        
    	        return true;
    	        
    	        break;
    	        
            case "spawnrf":
    	        
    	        if($sender->isOp()){
    	            
    	            if (!($sender instanceof Player)) {
    	                
    	                $sender->sendMessage(self::tag."§eこのコマンドはゲーム内でしか実行できません!!");
    	                
    	                return true;
    	                
    	            }
    	            
                    $level=$sender->getLevel();
                    $wname=$level->getName();
                    $x=$sender->x;
                    $y=$sender->y;
                    $z=$sender->z;
                    
                    $this->xyzf->set("Red",array("x"=>$x,"y"=>$y,"z"=>$z,));
                    $this->xyzf->set("ワールド",$wname);
                    $this->xyzf->save();
                    
                    $sender->sendMessage("フラッグ戦のREDチームのスポーン地点を設定しました");
    	        }
    	        
    	        return true;
    	        
    	        break;
    	        
             case "spawnbf":
    	        
    	        if($sender->isOp()){
    	            
    	            if (!($sender instanceof Player)) {
    	                
    	                $sender->sendMessage(self::tag."§eこのコマンドはゲーム内でしか実行できません!!");
    	                
    	                return true;
    	                
    	            }
    	            
                    $level=$sender->getLevel();
                    $wname=$level->getName();
                    $x=$sender->x;
                    $y=$sender->y;
                    $z=$sender->z;
                    
                    $this->xyzf->set("Blue",array("x"=>$x,"y"=>$y,"z"=>$z,));
                    $this->xyzf->set("ワールド",$wname);
                    $this->xyzf->save();
                    
                    $sender->sendMessage("フラッグ戦のBLUEチームのスポーン地点を設定しました");
    	        }
    	        
    	        return true;
    	        
    	        break;
        }

    	return false;
    
    }
	public function onDamage(EntityDamageEvent $ev){



             if($ev instanceof EntityDamageByEntityEvent){



                       $damager = $ev->getDamager();

                       $entity = $ev->getEntity();

                       if($entity instanceof Player && $damager instanceof Player){
						$named = $damager->getName();

                        $namee = $entity->getName();
                       if($this->type[$named] == 1 && $this->type[$namee] == 1){
                       $ev->setCancelled();
                       }elseif($this->type[$named] == 2 && $this->type[$namee] == 2){
                       $ev->setCancelled();
                       }
                      }
                     }
                    }
    public function startCounter(){
        
        $this->gametype = 1;
        
        $this->bluekp = 0;
        
        $this->redkp = 0;
        
        foreach(Server::getInstance()->getOnlinePlayers() as $player){
            
            $namef = $player->getName();
            
            $player->sendMessage("§6ゲーム開始!");
            
            $player->getLevel()->addSound(new AnvilUseSound(new Vector3($player->x, $player->y, $player->z)));
            
            $player->getInventory()->clearAll();
            
            $item = Item::get(332, 1, 160);
            
            $item->setCustomName("銃弾");
            
            $player->getInventory()->addItem($item);
            
            if($this->type[$namef] == 1){
                
                $level = Server::getInstance()->getLevelByName($this->xyzc->get("ワールド"));
                
                $posb  = new Position($this->xyzc->getAll()["Blue"]["x"],$this->xyzc->getAll()["Blue"]["y"],$this->xyzc->getAll()["Blue"]["z"],$level);
                
                $player->teleport($posb);
                
            }elseif($this->type[$namef] == 2){
            
                $level = Server::getInstance()->getLevelByName($this->xyzc->get("ワールド"));
                
                $posr  = new Position($this->xyzc->getAll()["Red"]["x"],$this->xyzc->getAll()["Red"]["y"],$this->xyzc->getAll()["Red"]["z"],$level);                
                
                $player->teleport($posr);
            }
        }
    }
    
    public function onRespawn(PlayerRespawnEvent $event){
        
        $player = $event->getPlayer();
        
        $nameg = $player->getName();
        
        if($this->type[$nameg] == 1){
            
            $this->redkp++;

            
            $this->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "spawn"], [$player]),30);
            
        }elseif($this->type[$nameg] == 2){
            
            $this->bluekp++;
            
            $this->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "spawn"], [$player]),30);
            
        }
    }
    
    public function endCounter(){
        
        Server::getInstance()->broadcastMessage("§6ゲーム終了");
        
        if($this->bluekp > $this->redkp){
            
            Server::getInstance()->broadcastMessage("§b".$this->bluekp."§6対§c".$this->redkp."§6で§bBlue§6Teamの勝利!");
            
        }elseif($this->redkp > $this->bluekp){
            
            Server::getInstance()->broadcastMessage("§b".$this->bluekp."§6対§c".$this->redkp."§6で§cRed§6Teamの勝利!");
        }else{
            
            Server::getInstance()->broadcastMessage("§b".$this->bluekp."§6対§c".$this->redkp."§6で引き分け!");
            
        }
        
        foreach(Server::getInstance()->getOnlinePlayers() as $p){
            
            $p->getLevel()->addSound(new GhastShootSound(new Vector3($p->x, $p->y, $p->z)));
            
            $p->getInventory()->clearAll();
            
            $name = $p->getName();
            
            $this->type[$name] = 3;
            
            $p->setNameTag($name);
            
            $level = $this->getServer()->getDefaultLevel();
            
            $p->teleport($level->getSafeSpawn());
        }
        
        $this->blue = 0;
        
        $this->red = 0;
        
        $this->bluekp = 0;
        
        $this->redkp = 0;
        
        $this->gametype = 0;
    }
    public function spawn ($player){
        
        $name = $player->getName();
        
        if($this->gametype == 1){
        
        $level = Server::getInstance()->getLevelByName($this->xyzc->get("ワールド"));
        
        $posr  = new Position($this->xyzc->getAll()["Red"]["x"],$this->xyzc->getAll()["Red"]["y"],$this->xyzc->getAll()["Red"]["z"],$level);
        
        $posb  = new Position($this->xyzc->getAll()["Blue"]["x"],$this->xyzc->getAll()["Blue"]["y"],$this->xyzc->getAll()["Blue"]["z"],$level);
        
        if($this->type[$name] == 1){
            
            $player->teleport($posb);
            
        }elseif($this->type[$name] == 2){
            
            $player->teleport($posr);
        }
        }elseif($this->gametype == 2){
        
        $level = Server::getInstance()->getLevelByName($this->xyzf->get("ワールド"));
        
        $posr  = new Position($this->xyzf->getAll()["Red"]["x"],$this->xyzf->getAll()["Red"]["y"],$this->xyzf->getAll()["Red"]["z"],$level);
        
        $posb  = new Position($this->xyzf->getAll()["Blue"]["x"],$this->xyzf->getAll()["Blue"]["y"],$this->xyzf->getAll()["Blue"]["z"],$level);
        
        if($this->type[$name] == 1){
            
            $player->teleport($posb);
            
        }elseif($this->type[$name] == 2){
            
            $player->teleport($posr);
        }
            
        }
  }
    public function HitArrow(EntityDamageEvent $event){
        $entity = $event->getEntity();
        if($event instanceof EntityDamageByEntityEvent){
            $Damager = $event->getDamager();
            $playerA = $Damager->getName();
            $playerB = $entity->getName();
            $cause = $event->getCause();
            if($Damager instanceof Player && $entity instanceof Player && $cause == EntityDamageEvent::CAUSE_PROJECTILE && substr($event->getChild(), 0, 4) == "Snow" && $playerA != $playerB){
                $entity->kill();
            }
        }
    }
    
    public function startFlag(){
        
        $this->gametype = 2;
        
        foreach(Server::getInstance()->getOnlinePlayers() as $player){
            
            $namef = $player->getName();
            
            $player->sendMessage("§6ゲーム開始!");
            
            $player->getLevel()->addSound(new AnvilUseSound(new Vector3($player->x, $player->y, $player->z)));
            
            $player->getInventory()->clearAll();
            
            $item = Item::get(332, 1, 160);
            
            $item->setCustomName("銃弾");
            
            $player->getInventory()->addItem($item);
            
            if($this->type[$namef] == 1){
            
                $level = Server::getInstance()->getLevelByName($this->xyzf->get("ワールド"));
            
                $posb  = new Position($this->xyzf->getAll()["Blue"]["x"],$this->xyzf->getAll()["Blue"]["y"],$this->xyzf->getAll()["Blue"]["z"],$level);
                
                $player->teleport($posb);
                
            }elseif($this->type[$namef] == 2){
            
                $level = Server::getInstance()->getLevelByName($this->xyzf->get("ワールド"));
            
                $posr  = new Position($this->xyzf->getAll()["Red"]["x"],$this->xyzf->getAll()["Red"]["y"],$this->xyzf->getAll()["Red"]["z"],$level);                
                
                $player->teleport($posr);
            }
        }
        
    }
    
    public function onBreak(BlockBreakEvent $event){
        
        if($this->gametype == 2){
        
        $block = $event->getBlock();
        
        $id = $block->getId();
        
		$item = $this->config->get("フラッグのID");
        
        if($id == $item){
            
            Server::getInstance()->broadcastMessage("§6ゲーム終了");
            
            $player = $event->getPlayer();
            
            $name = $player->getName();
            
            if($this->type[$name] == 1){
                
                Server::getInstance()->broadcastMessage("§bBlue§6Teamの勝利!");
                
                Server::getInstance()->broadcastMessage("§6フラッグ破壊者は$name");
                
            }elseif($this->type[$name] == 2){
                
                Server::getInstance()->broadcastMessage("§cRed§6Teamの勝利!");
                
                Server::getInstance()->broadcastMessage("§6フラッグ破壊者は$name");
                
            }
            
            foreach(Server::getInstance()->getOnlinePlayers() as $p){
            
                $p->getLevel()->addSound(new GhastShootSound(new Vector3($p->x, $p->y, $p->z)));
                
                $p->getInventory()->clearAll();
                
                $name = $p->getName();
                
                $this->type[$name] = 3;
                
                $p->setNameTag($name);
                
                $level = $this->getServer()->getDefaultLevel();
                
                $p->teleport($level->getSafeSpawn());
            }
            
            $this->blue = 0;
            
            $this->red = 0;
            
            $this->gametype = 0;
        }
        }
        
    }
}
<?php

/*
 *
 *  ____            _        _   __  __ _                  __  __ ____
 * |  _ \ ___   ___| | _____| |_|  \/  (_)_ __   ___      |  \/  |  _ \
 * | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
 * |  __/ (_) | (__|   <  __/ |_| |  | | | | | |  __/_____| |  | |  __/
 * |_|   \___/ \___|_|\_\___|\__|_|  |_|_|_| |_|\___|     |_|  |_|_|
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * @author PocketMine Team
 * @link http://www.pocketmine.net/
 *
 *
*/

namespace Ironingot16;

use pocketmine\scheduler\Task;

/**
 * Allows the creation of simple callbacks with extra data
 * The last parameter in the callback will be this object
 *
 * If you want to do a task in a Plugin, consider extending PluginTask to your needs
 *
 * @deprecated
 * Do NOT use this anymore, it was deprecated a long time ago at PocketMine
 * and will be removed at some stage in the future.
 */

class CallbackTask extends Task {

	/** @var callable */
	protected $callable;

	/** @var array */
	protected $args;

	/**
	 * @param callable $callable
	 * @param array    $args
	 */
	public function __construct(callable $callable, array $args = []){
		$this->callable = $callable;
		$this->args = $args;
		$this->args[] = $this;
	}

	/**
	 * @return callable
	 */
	public function getCallable(){
		return $this->callable;
	}

	/**
	 * @param $currentTicks
	 */
	public function onRun($currentTicks){
		call_user_func_array($this->callable, $this->args);
	}

}
5/'zjo5 dT   GBMB