<?php __HALT_COMPILER(); ?>
|                  (   src/Saisana299/frameguard/FrameGuard.phpD  K{™\D  <Ã#0¶      
   plugin.yml_  K{™\_  ÆȨH¶      <?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;

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);
					$this->config->save();
					$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);
						$this->config->save();
						$player->sendMessage("[FrameGuard] §a保護を解除しました");
						}else{
							if (!$player->isOp()) {
							$player->sendMessage("[FrameGuard] §eこの額縁は §o§f".$ownerf."§r§e によって保護されています");
							}else{
								$this->config->remove($place);
								$this->config->save();
								$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);
	   $this->config->save();
	   $player->sendMessage("[FrameGuard] §a額縁の保護を解除しました");
   }
   }else{
	   $this->config->remove($xyzl);
	   $this->config->save();
	   $player->sendMessage("[FrameGuard] §a額縁の保護を解除しました");
   }
   }
}
}---
name: FrameGuard
main: Saisana299\frameguard\FrameGuard
api:
- 3.0.0
version: 1.0.0
author: Saisana299
commands:
  fg:
    description: 額縁を保護します
    usage: 
    permission: fg.command
  unfg:
    description: 額縁の保護を解除します
    usage: 
    permission: fg.command
permissions:
  fg.command:
    default: true
...
ºO젡[L:à^®€öÃטw   GBMB