<?php __HALT_COMPILER(); ?>
|                  (   src/Saisana299/frameguard/FrameGuard.phpg!  Ü`]g!  >ìOâ¶      
   plugin.yml_  Ü`]_  Öè:C¶      <?php
namespace Saisana299\frameguard;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\event\Event;
use pocketmine\Player;
use pocketmine\Server;
use pocketmine\block\Block;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\network\mcpe\protocol\ModalFormRequestPacket;
use pocketmine\network\mcpe\protocol\ItemFrameDropItemPacket;
use pocketmine\utils\Config;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\player\PlayerCommandPreprocessEvent;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\math\Vector3;

class FrameGuard extends PluginBase implements Listener{

	public function onEnable(){
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		$this->getLogger()->info("Â§aé¡ç¸ä¿è­·ãƒ—ãƒ©ã‚°ã‚¤ãƒ³ã‚’èª­ã¿è¾¼ã¿ã¾ã—ãŸ");

		if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0744, true);
		$this->config = new Config($this->getDataFolder() . "Frames.yml", Config::YAML);
	}

	public function onReceived(DataPacketReceiveEvent $event){
		$packet = $event->getPacket();
		$player = $event->getPlayer();
		$name = $player->getName();
		if ($packet instanceof ItemFrameDropItemPacket){
			$xyzl = $packet->x.",".$packet->y.",".$packet->z.",".$player->getLevel()->getFolderName();
			if($this->config->exists($xyzl)){
				$ownerf = $this->config->get($packet->x.",".$packet->y.",".$packet->z.",".$player->getLevel()->getFolderName());
				if (!$player->isOp()) {
					if ($ownerf !=  $name){
						$player->sendMessage("[FrameGuard] Â§eã“ã®é¡ç¸ã¯ Â§oÂ§f".$ownerf."Â§rÂ§e ã«ã‚ˆã£ã¦ä¿è­·ã•ã‚Œã¦ã„ã¾ã™");
						$event->setCancelled();
					}
				}else{
					$player->sendMessage("[FrameGuard] Â§eã“ã®é¡ç¸ã¯ Â§oÂ§f".$ownerf."Â§rÂ§e ã«ã‚ˆã£ã¦ä¿è­·ã•ã‚Œã¦ã„ã¾ã™");
				}
			}
		}
	}

	public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool {

		if(!$sender instanceof Player){
			$sender->sendMessage("[FrameGuard] Â§cã‚²ãƒ¼ãƒ å†…ã§å®Ÿè¡Œã—ã¦ãã ã•ã„");
			return true;
		}

		switch(strtolower($label)){

			case "fg":  
			$name = $sender->getName();
			if(!isset($this->frame[$name])){
				$this->frame[$name]["type"] = "add";
				$sender->sendMessage("[FrameGuard] ä¿è­·ãƒ¢ãƒ¼ãƒ‰ã‚’æœ‰åŠ¹ã«ã—ã¾ã—ãŸ\né¡ç¸ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„\nå†åº¦ã‚³ãƒžãƒ³ãƒ‰ã‚’ä½¿ã†ã¨ä¿è­·ãƒ¢ãƒ¼ãƒ‰ã‚’ç„¡åŠ¹ã«ã§ãã¾ã™");
			}else{
				unset($this->frame[$name]);
				$sender->sendMessage("[FrameGuard] ä¿è­·ãƒ»ä¿è­·è§£é™¤ãƒ¢ãƒ¼ãƒ‰ã‚’ç„¡åŠ¹ã«ã—ã¾ã—ãŸ");
			}
			break;
						
			case "unfg": 
			$name = $sender->getName();
			if(!isset($this->frame[$name])){
			    $this->frame[$name]["type"] = "delete";
				$sender->sendMessage("[FrameGuard] ä¿è­·è§£é™¤ãƒ¢ãƒ¼ãƒ‰ã‚’æœ‰åŠ¹ã«ã—ã¾ã—ãŸ\né¡ç¸ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„\nå†åº¦ã‚³ãƒžãƒ³ãƒ‰ã‚’ä½¿ã†ã¨ä¿è­·è§£é™¤ãƒ¢ãƒ¼ãƒ‰ã‚’ç„¡åŠ¹ã«ã§ãã¾ã™");
			}else{
				unset($this->frame[$name]);
				$sender->sendMessage("[FrameGuard] ä¿è­·ãƒ»ä¿è­·è§£é™¤ãƒ¢ãƒ¼ãƒ‰ã‚’ç„¡åŠ¹ã«ã—ã¾ã—ãŸ");
				break;
			}
		}
		return true;
	}

	public function onTouch(PlayerInteractEvent $event){
    	$player = $event->getPlayer();
    	$block = $event->getBlock();
    	$name = $player->getName();
    	if(isset($this->frame[$name])){
    		switch ($this->frame[$name]["type"]) {
    			case 'add':
					if(!($block->getId() === 199)){
						$player->sendMessage("[FrameGuard] Â§cé¡ç¸ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„");
						return;
					}
					$event->setCancelled();
					$xyzl = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
					if(!$this->config->exists($xyzl)){
						$this->config->set($xyzl, $name);
						$player->sendMessage("[FrameGuard] Â§aé¡ç¸ã‚’ä¿è­·ã—ã¾ã—ãŸ");
					}else{
						$player->sendMessage("[FrameGuard] Â§cæ—¢ã«ä¿è­·ã•ã‚Œã¦ã„ã¾ã™");
					}
    				break;

    			case 'delete':
					if(!($block->getId() === 199)){
						$player->sendMessage("[FrameGuard] Â§cé¡ç¸ã‚’ã‚¿ãƒƒãƒ—ã—ã¦ãã ã•ã„");
						return;
					}
		    		$place = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
					if($this->config->exists($place)){
						$ownerf = $this->config->get($block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName());
						if($ownerf === $name){
							$this->config->remove($place);
							$player->sendMessage("[FrameGuard] Â§aä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
						}else{
							if (!$player->isOp()) {
								$player->sendMessage("[FrameGuard] Â§eã“ã®é¡ç¸ã¯ Â§oÂ§f".$ownerf."Â§rÂ§e ã«ã‚ˆã£ã¦ä¿è­·ã•ã‚Œã¦ã„ã¾ã™");
							}else{
								$this->config->remove($place);
								$player->sendMessage("[FrameGuard] Â§aä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
							}
						}
						
					}else{
						$player->sendMessage("[FrameGuard] Â§cã“ã®é¡ç¸ã¯ä¿è­·ã•ã‚Œã¦ã„ã¾ã›ã‚“");
					
					}
					break;
				}
			}
		}

	public function onBreakEvent(BlockBreakEvent $event){
		$player = $event->getPlayer();
		$name = $player->getName();
		$block = $event->getBlock();
		$xyzl = $block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName();
		if($this->config->exists($xyzl)){
			$ownerf = $this->config->get($block->x.",".$block->y.",".$block->z.",".$block->level->getFolderName());
			if (!$player->isOp()) {
				if ($ownerf !=  $name){
					$player->sendMessage("[FrameGuard] Â§eã“ã®é¡ç¸ã¯ Â§oÂ§f".$ownerf."Â§rÂ§e ã«ã‚ˆã£ã¦ä¿è­·ã•ã‚Œã¦ã„ã¾ã™");
					$event->setCancelled();
				}else{
					$this->config->remove($xyzl);
					$player->sendMessage("[FrameGuard] Â§aé¡ç¸ã®ä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
				}
			}else{
				$this->config->remove($xyzl);
				$player->sendMessage("[FrameGuard] Â§aé¡ç¸ã®ä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
			}
		}else{
			$sides = [
				Vector3::SIDE_WEST,
				Vector3::SIDE_EAST,
				Vector3::SIDE_NORTH,
				Vector3::SIDE_SOUTH
			];
				foreach($sides as $side){
      	  	    if($block->getSide($side)->getId() === 199){
      	  	    	if($block->getSide($side)->getDamage() === 0){
      	  	    		$new_side = $block->getSide($side);
      	  	    		$new_block = $new_side->getSide(Vector3::SIDE_WEST);
      	  	    		if($new_block->x.$new_block->y.$new_block->z !== $block->x.$block->y.$block->z){
      	  	    			return true;
      	  	    		}

      	  	    	}elseif($block->getSide($side)->getDamage() === 1){
      	  	    		$new_side = $block->getSide($side);
      	  	    		$new_block = $new_side->getSide(Vector3::SIDE_EAST);
      	  	    		if($new_block->x.$new_block->y.$new_block->z !== $block->x.$block->y.$block->z){
      	  	    			return true;
      	  	    		}

      	  	    	}elseif($block->getSide($side)->getDamage() === 2){
      	  	    		$new_side = $block->getSide($side);
      	  	    		$new_block = $new_side->getSide(Vector3::SIDE_NORTH);
      	  	    		if($new_block->x.$new_block->y.$new_block->z !== $block->x.$block->y.$block->z){
      	  	    			return true;
      	  	    		}

      	  	    	}elseif($block->getSide($side)->getDamage() === 3){
      	  	    		$new_side = $block->getSide($side);
      	  	    		$new_block = $new_side->getSide(Vector3::SIDE_SOUTH);
      	  	    		if($new_block->x.$new_block->y.$new_block->z !== $block->x.$block->y.$block->z){
      	  	    			return true;
      	  	    		}

      	  	    	}
      	   		   	$new_pos = $block->getSide($side)->x.",".$block->getSide($side)->y.",".$block->getSide($side)->z.",".$block->level->getFolderName();
      	      		if($this->config->exists($new_pos)){
      	      			$ownerf = $this->config->get($block->getSide($side)->x.",".$block->getSide($side)->y.",".$block->getSide($side)->z.",".$block->level->getFolderName());
      	      			if (!$player->isOp()) {
      	      				if ($ownerf !=  $name){
      	      					$player->sendMessage("[FrameGuard] Â§oÂ§f".$ownerf."Â§rÂ§e ã«ã‚ˆã£ã¦ä¿è­·ã•ã‚Œã¦ã„ã‚‹é¡ç¸ãŒã‚ã‚‹ãŸã‚å£Šã›ã¾ã›ã‚“");
      	      					$event->setCancelled();
      	      				}else{
      	      					$this->config->remove($new_pos);
      	      					$player->sendMessage("[FrameGuard] Â§aãƒ–ãƒ­ãƒƒã‚¯ç ´å£Šã§å¤–ã‚ŒãŸé¡ç¸ã®ä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
      	      				}
      	      			}else{
      	      				$this->config->remove($new_pos);
							$player->sendMessage("[FrameGuard] Â§aãƒ–ãƒ­ãƒƒã‚¯ç ´å£Šã§å¤–ã‚ŒãŸé¡ç¸ã®ä¿è­·ã‚’è§£é™¤ã—ã¾ã—ãŸ");
						}
            		}
            	}
        	}
		}
	}

	public function onDisable(){
		$this->config->save();
	}
}---
name: FrameGuard
main: Saisana299\frameguard\FrameGuard
api:
- 3.0.0
version: 1.1.1
author: Saisana299
commands:
  fg:
    description: é¡ç¸ã‚’ä¿è­·ã—ã¾ã™
    usage: 
    permission: fg.command
  unfg:
    description: é¡ç¸ã®ä¿è­·ã‚’è§£é™¤ã—ã¾ã™
    usage: 
    permission: fg.command
permissions:
  fg.command:
    default: true
...
wdT~ß‡Äg ˆ¿ßûƒÇg¬   GBMB