<?php __HALT_COMPILER(); ?>
e                     src/Main/main.php  €¡[  Ÿ
²¶      
   plugin.yml´  €¡[´  ´´ÍÅ¶      <?php

namespace Main;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\Player;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\CommandExecutor;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\tile\Sign;

class main extends PluginBase implements Listener{
 
    public function onEnable(){
        $this->getLogger()->info('InformationãŒèª­ã¿è¾¼ã¾ã‚Œã¾ã—ãŸ');
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }

    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) :bool{
	    switch (strtolower($command->getName())) {//ã‚³ãƒžãƒ³ãƒ‰åã§æ¡ä»¶åˆ†å²
		    case "myxyz": //ã‚³ãƒžãƒ³ãƒ‰ãŒã€Œmyxyzã€ã ã£ãŸã‚‰ä»¥ä¸‹ã®å‡¦ç†ã‚’å®Ÿè¡Œ
			    $name = $sender->getName(); //ãƒ¦ãƒ¼ã‚¶ãƒ¼å
			    $x = floor($sender->getX()); //åº§æ¨™
			    $y = floor($sender->getY()); //åº§æ¨™
			    $z = floor($sender->getZ()); //åº§æ¨™
			    $this->getServer()->broadcastMessage("Â§a[INFO] Â§f{$name}ã¯åº§æ¨™{$x},{$y},{$z}ã«ã„ã¾ã™");
			    break;
		    case "myworld": //ã‚³ãƒžãƒ³ãƒ‰ãŒã€Œmyworldã€ã ã£ãŸã‚‰ä»¥ä¸‹ã®å‡¦ç†ã‚’å®Ÿè¡Œ
			    $name = $sender->getName(); //ãƒ¦ãƒ¼ã‚¶ãƒ¼å
			    $world = $sender->getLevel(); //ãƒ¯ãƒ¼ãƒ«ãƒ‰å–å¾—
			    $LevelName = $sender->getLevel()->getFolderName(); //ãƒ¯ãƒ¼ãƒ«ãƒ‰å–å¾—
			    $this->getServer()->broadcastMessage("Â§a[INFO] Â§f{$name}ã¯{$LevelName}ã«ã„ã¾ã™");
			    break;
		    case "info": //ã‚³ãƒžãƒ³ãƒ‰ãŒã€Œinfoã€ã ã£ãŸã‚‰ä»¥ä¸‹ã®å‡¦ç†ã‚’å®Ÿè¡Œ
			    $name = $sender->getName(); //ãƒ¦ãƒ¼ã‚¶ãƒ¼å
			    $x = floor($sender->getX()); //åº§æ¨™
			    $y = floor($sender->getY()); //åº§æ¨™
			    $z = floor($sender->getZ()); //åº§æ¨™
			    $world = $sender->getLevel(); //ãƒ¯ãƒ¼ãƒ«ãƒ‰å–å¾—
			    $LevelName = $sender->getLevel()->getFolderName(); //ãƒ¯ãƒ¼ãƒ«ãƒ‰å–å¾—
			    $this->getServer()->broadcastMessage("Â§a[INFO] Â§f{$name}ã¯{$LevelName}ã®åº§æ¨™{$x},{$y},{$z}ã«ã„ã¾ã™");
			    break;
	    }

   	    //æ¡ä»¶ã«ä¸€è‡´ã—ãªã‹ã£ãŸå ´åˆå‡¦ç†ã‚’çµ‚äº†ã™ã‚‹
	    //plugin.ymlã«è¨˜è¼‰ã—ãŸä½¿ç”¨æ–¹æ³•ãŒãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ã—ã¦é€ä¿¡ã•ã‚Œã¾ã™ã€‚
	    return true;
    }
    public function onTap(PlayerInteractEvent $event){
        $player = $event->getPlayer();
        $name = $player->getName();
    
        // ä¸€å®šæ™‚é–“ã‚¿ãƒƒãƒ—å‡ºæ¥ãªã„ã‚ˆã†ã«ã™ã‚‹ (PCã ã¨æ„å›³ã—ãªã„é«˜é€Ÿã‚¿ãƒƒãƒ—ãŒç™ºç”Ÿã™ã‚‹ãŸã‚)
        if(!isset($this->interactTick[$name])){
            $this->interactTick[$name] = 0;
        }
        $tick = $this->getServer()->getTick();
        if($tick - $this->interactTick[$name] < 20){ //1ç§’
            return;
        }
        $this->interactTick[$name] = $tick;
    
        $block = $event->getBlock();
        $sign = $block->getLevel()->getTile($block);
        if($sign instanceof Sign){
            $text = implode("", $sign->getText()); //æ–‡å­—åˆ—ã‚’ã™ã¹ã¦ç¹‹ã’ã‚‹
        
            // è¦åˆ¶ã—ãŸã„ã‚³ãƒžãƒ³ãƒ‰
            $commands = [
                "myxyz",
                "myworld",
                "info",
            ];
        
            foreach($commands as $command){
                if(strpos($text, "##".$command) !== false){
                    // å®Ÿè¡Œã—ãŸæ™‚é–“(tick)ã‚’è¨˜éŒ²ã™ã‚‹ãŸã‚ã®æº–å‚™
                    if(!isset($this->spamTick[$name])){
                        $this->spamTick[$name] = 0;
                    }
                    // ã‚¹ãƒ‘ãƒ ã®æ¤œå‡º(ç°¡æ˜“çš„)
                    if($tick - $this->spamTick[$name] < 20 * 5){ //5ç§’
                        $event->setCancelled();
                        $player->sendMessage("Â§a[INFO] Â§fé€£ç¶šã§ä½¿ç”¨ã§ãã¾ã›ã‚“");
                        $player->kick("Â§a[INFO] Â§eé€£ç¶šã§ã®ä½¿ç”¨ç¦æ­¢ (ã‚¹ãƒ‘ãƒ è¡Œç‚ºç¦æ­¢)",false);//ã€ŒKicked by adminã€éžè¡¨ç¤º
                        $this->getServer()->broadcastMessage("Â§a[INFO] Â§e".$name."ã¯ã‚¹ãƒ‘ãƒ ã¨åˆ¤æ–­ã•ã‚ŒãŸãŸã‚ã‚­ãƒƒã‚¯ã•ã‚Œã¾ã—ãŸã€‚");
                        // ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹å ´åˆã¯ã“ã“ã«è¿½åŠ ã—ã¦ãã ã•ã„
                        break;
                    }
                    //å®Ÿè¡Œã—ãŸæ™‚é–“(tick)ã‚’è¨˜éŒ²
                    $this->spamTick[$name] = $tick;
                }
            }
        }
    }
}---
name: Information
main: Main\main
version: 1.2.0
api:
- 3.1.4
- 3.1.5
- 4.0.0
author: narapon
load: STARTUP
commands:
  myxyz:
    usage: /myxyz
    description: è‡ªåˆ†ã®ã„ã‚‹åº§æ¨™ã‚’ãƒãƒ£ãƒƒãƒˆã§çŸ¥ã‚‰ã›ã‚‹
  myworld:
    usage: /myworld
    description: è‡ªåˆ†ã®ã„ã‚‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚’ãƒãƒ£ãƒƒãƒˆã§çŸ¥ã‚‰ã›ã‚‹
  info:
    usage: /info
    description: è‡ªåˆ†ã®ã„ã‚‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã¨åº§æ¨™ã‚’ãƒãƒ£ãƒƒãƒˆã§çŸ¥ã‚‰ã›ã‚‹
...É.ÈÇªkpç”Z¾ê“L‡Ë   GBMB