<?php echo "PocketMine-MP plugin SignEdit v1.7\nThis file has been generated using DevTools v1.12.1 at Fri, 05 Jan 2018 15:33:42 +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(); ?>
â             O  a:9:{s:4:"name";s:8:"SignEdit";s:7:"version";s:3:"1.7";s:4:"main";s:19:"otorisan\Sedit\Main";s:3:"api";a:2:{i:0;s:5:"3.0.0";i:1;s:13:"3.0.0-ALPHA10";}s:6:"depend";a:0:{}s:11:"description";s:45:"看板を編集できるようになります";s:7:"authors";a:1:{i:0;s:8:"otorisan";}s:7:"website";s:0:"";s:12:"creationDate";i:1515134022;}
   plugin.yml  FOZ  /•�¶         src/otorisan/Sedit/Main.phpô8  FOZô8  ˻?¶         word.yml   FOZ   îzT¶      name: SignEdit
main: otorisan\Sedit\Main
version: 1.7
api: [3.0.0, 3.0.0-ALPHA10]
load: POSTWORLD
author: otorisan
description: 看板を編集できるようになります
commands:
 .set:
  permission: set.sedit
  description: 看板に文字を書き込む
 .copy:
  permission: copy.sedit
  description: 看板の文字をコピー
 .paste:
  permission: paste.sedit
  description: 看板に文字を貼り付ける
 .clear:
  permission: clear.sedit
  description: 看板を白紙に
 .help:
  permission: help.sedit
  description: 看板編集コマンドの使い方
 .addword:
  permission: addword.sedit
  description: 書き込み禁止文字を追加
 .delword:
  permission: delword.sedit
  description: 特定の書き込み禁止文字を消す
 .listword:
  permission: listword.sedit
  description: 書き込み禁止文字リスト

permissions:
 set.sedit:
  default: true
 copy.sedit:
  default: true
 paste.sedit:
  default: true
 clear.sedit:
  default: true
 help.sedit:
  default: true
 addword.sedit:
  default: op
 delword.sedit:
  default: op
 listword.sedit:
  default: op
<?php
/*
**
**
**    ███████╗██╗ ██████╗ ███╗   ██╗███████╗██████╗ ██╗████████╗
**    ██╔════╝██║██╔════╝ ████╗  ██║██╔════╝██╔══██╗██║╚══██╔══╝
**    ███████╗██║██║  ███╗██╔██╗ ██║█████╗  ██║  ██║██║   ██║
**    ╚════██║██║██║   ██║██║╚██╗██║██╔══╝  ██║  ██║██║   ██║
**    ███████║██║╚██████╔╝██║ ╚████║███████╗██████╔╝██║   ██║
**    ╚══════╝╚═╝ ╚═════╝ ╚═╝  ╚═══╝╚══════╝╚═════╝ ╚═╝   ╚═╝
**
**        バージョン: v1.7
**         製作者: OtorisanVardo
**        Twitter: @10ripon_obs
**
**
**
 */

namespace otorisan\Sedit;

use pocketmine\Player;
use pocketmine\Server;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\utils\TextFormat;
use pocketmine\item\Item;
use pocketmine\block\Block;
use pocketmine\tile\Tile;
use pocketmine\tile\Sign;
use pocketmine\math\Vector3;
use pocketmine\utils\Config;
use pocketmine\level\Level;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\command\CommandSender;
use pocketmine\command\Command;

class Main extends PluginBase implements Listener
{

    //プラグイン読み込み時
    public function onEnable()
    {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->getLogger()->info("§bSignEditが読み込まれました");
        if (!file_exists($this->getDataFolder()))@mkdir($this->getDataFolder(), 0744, true);
        $this->cfg = new Config($this->getDataFolder()."word.yml", Config::YAML);
    }

    //ブロックタッチ時のイベント
    public function onTouch(PlayerInteractEvent $event)
    {
        $block = $event->getBlock();
        $player = $event->getPlayer();
        $item = $player->getInventory()->getItemInHand();
        $action = $event->getAction();
        if ($action == 1) {
            if ($item->getId() === 288) {
                $name = $player->getName();
                $level = $player->getLevel();
                $x = $block->x;
                $y = $block->y;
                $z = $block->z;
                $pos = new Vector3($x, $y, $z);
                $tile = $level->getTile($pos);
                if ($tile instanceof Sign) {
                    if (isset($this->words[$name]))if (isset($this->dansu[$name])) {
                        $tmp1 = $this->words[$player->getName()];
                        $tmp2 = $this->dansu[$player->getName()];
                        $this->SetSign($player, $name, $tile, $tmp1, $tmp2);
                    }

                    if (isset($this->cp[$name])) {
                        $lines = $tile->getText();
                        $this->CopySign($player, $name, $lines);
                    }

                    if (isset($this->ps[$name])) {
                        $this->PasteSign($player, $name, $tile);
                    }

                    if (isset($this->cr[$name])) {
                        $this->ClearSign($player, $name, $tile);
                    }
                }
            }
        }
    }

    //看板処理:set
    public function SetSign($player, $name, $tile, $mozi, $dan)
    {
            $word = $tile->getText();
            switch ($dan) {
                case "1":
                    $tile->setText($mozi, $word[1], $word[2], $word[3]);
                    $tile->saveNBT();
                break;

                case "2":
                    $tile->setText($word[0], $mozi, $word[2], $word[3]);
                    $tile->saveNBT();
                break;

                case "3":
                    $tile->setText($word[0], $word[1], $mozi, $word[3]);
                    $tile->saveNBT();
                break;

                case "4":
                    $tile->setText($word[0], $word[1], $word[2], $mozi);
                    $tile->saveNBT();
                break;
            }
            $player->sendMessage("§b[Sedit] §r§a書き込みが終了しました");
            unset($this->words[$name], $this->dansu[$name]);
    }

    //看板処理:copy
    public function CopySign($player, $name, $lines)
    {
        if (is_array($lines)) {
            $this->copy[$name] = $lines;
            $player->sendMessage("§b[Sedit] §r§aコピーが完了しました");
            unset($this->cp[$name]);
        }
    }

    //看板処理:clear
    public function ClearSign($player, $name, $tile)
    {
        $tile->setText("", "", "", "");
        $tile->saveNBT();
        $player->sendMessage("§b[Sedit] §r§a白紙にする処理が終了しました");
        unset($this->cr[$name]);
    }

    //看板処理:paste
    public function PasteSign($player, $name, $tile)
    {
        $lines = $this->copy[$name];
        if (isset($lines)) {
            $tile->setText($lines[0], $lines[1], $lines[2], $lines[3]);
            $tile->saveNBT();
            $player->sendMessage("§b[Sedit] §r§aペーストが完了しました");
            unset($this->ps[$name]);
        }
    }

    //コンフィグの設定文字と照らし合わせ
    public function canWord($text)
    {
        $word_list = $this->cfg->getAll();
        foreach ($word_list as $num => $word) {
            if (strpos($text, $word) !== false) {
                return false;
            }
        }
        return true;
    }

    //コマンド処理
    public function onCommand(CommandSender $sender, Command $command, string $label, array $params):bool
    {
        if ($sender->getName() === "CONSOLE") {
            $sender->sendMessage("§cゲーム内よりコマンドを実行してください");
            return false;
        } else {
            switch ($command->getName()) {
                case ".copy":
                    $this->cp[$sender->getName()] = true;
                    $sender->sendMessage("§b[Sedit] §r§aコピーする看板を羽でタッチしてください");
                    return true;
                    break;

                case ".paste":
                    $this->ps[$sender->getName()] = true;
                    if (isset($this->copy[$sender->getName()])) {
                        $sender->sendMessage("§b[Sedit] §r§aペーストをします。張り付ける看板を羽でタッチしてください");
                        return true;
                    }
                    else{
                        $sender->sendMessage("§b[Sedit] §r§cコピーがされていません");
                        return false;
                    }
                    break;

                case ".clear":
                    $this->cr[$sender->getName()] = true;
                    $sender->sendMessage("§b[Sedit] §r§a白紙にしたい看板を羽でタッチしてください");
                    return true;
                    break;

                case ".set":
                    if (!isset($params[0])) {
                        $sender->sendMessage("§b[Sedit] §r§c看板の文字を記入してください");
                        $sender->sendMessage("§b[Sedit] §r§c/.set <文字> <段数>");
                        return false;
                    } else {
                        if ($this->canWord($params[0])) {
                            if (isset($params[1])) {
                                if ((int)$params[1] >= 1 && (int)$params[1] < 5) {
                                    if (!isset($this->words[$sender->getName()]))
                                    if (!isset($this->dansu[$sender->getName()])) {
                                        $this->words[$sender->getName()] = $params[0];
                                        $this->dansu[$sender->getName()] = $params[1];
                                        $sender->sendMessage("§b[Sedit] §r§a書き込む看板を羽でタッチしてください");
                                        $sender->sendMessage("§b[Sedit] §r§a既に書き込まれている場合は、上書きします");
                                        return true;
                                    }
                                } else {
                                    $sender->sendMessage("§b[Sedit] §r§c段数が既定の範囲にありません");
                                    $sender->sendMessage("§b[Sedit] §r§c/.set <文字> <段数1,2,3,4>");
                                    return false;
                                }
                            } else {
                                $sender->sendMessage("§b[Sedit] §r§cセットする段数を記入してください");
                                $sender->sendMessage("§b[Sedit] §r§c/.set <文字> <段数1,2,3,4>");
                                return false;
                            }
                        } else {
                            $sender->sendMessage("§b[Sedit] §r§c禁止ワードが含まれています");
                            return false;
                        }
                    }
                    break;

                case ".addword":
                    if ($sender->isOp()) {
                        if (!isset($params[0])) {
                            $sender->sendMessage("§b[Sedit] §r§c禁止ワードを記入してください");
                            $sender->sendMessage("§b[Sedit] §r§c/.addword <文字>");
                        } else {
                            $badWord = $params[0];
                            $all = $this->cfg->getAll();
                            $num = count($all);
                            $this->cfg->set($num, $badWord);
                            $this->cfg->save();
                            $sender->sendMessage("§b[Sedit] §r§a禁止ワードを登録しました");
                          return true;
                        }
                    } else {
                        $sender->sendMessage("§b[Sedit] §r§cOpのみ使用できます");
                        return false;
                    }
                    break;

                case ".listword":
                    if ($sender->isOp()) {
                        $all = $this->cfg->getAll();
                        if ($all == null) {
                            $sender->sendMessage("§b[Sedit] §r§c禁止ワードがありません");
                             return true;
                        } else {
                            $sender->sendMessage("§bxxxxxxx[Sedit禁止ワード]xxxxxxx");
                            foreach ($all as $num=>$xxx) {
                                $sender->sendMessage("§l§e>§r §7".$num."§r: §a".$xxx);
                            }
                            return true;
                         }
                    } else {
                        $sender->sendMessage("§b[Sedit] §r§cOpのみ使用できます");
                        return true;
                    }
                    break;

                case ".delword":
                    if ($sender->isOp()) {
                        if (!isset($params[0])) {
                            $sender->sendMessage("§b[Sedit] §r§c削除する禁止ワード番号を記入してください");
                            $sender->sendMessage("§b[Sedit] §r§c/.delword <番号>");
                            return false;
                        } else {
                            $num = $params[0];
                            if ($this->cfg->exists($num)) {
                                $this->cfg->remove($num);
                                $this->cfg->save();
                                $sender->sendMessage("§b[Sedit] §r§a指定した禁止ワードを削除しました");
                                return true;
                            } else {
                                $sender->sendMessage("§b[Sedit] §r§c指定した番号の禁止ワードはありません");
                                return false;
                            }
                        }
                    } else {
                        $sender->sendMessage("§b[Sedit] §r§cOpのみ使用できます");
                        return false;
                    }
                    break;

                default;
                case ".help":
                    $sender->sendMessage("§b----------------------------");
                    $sender->sendMessage("§b /.copy §a:");
                    $sender->sendMessage("§a      看板の内容をコピー");
                    $sender->sendMessage("§b /.paste §a:");
                    $sender->sendMessage("§a      看板の内容をペースト");
                    $sender->sendMessage("§b /.clear §a:");
                    $sender->sendMessage("§a      看板の内容を削除");
                    $sender->sendMessage("§b /.set <文字> <段数1,2,3,4> §a:");
                    $sender->sendMessage("§a      看板の内容のセット");
                    $sender->sendMessage("§b /.help §a:");
                    $sender->sendMessage("§a      SignEdit使えるコマンドの表示");
                    $sender->sendMessage("§b /.addword <文字>§a:");
                    $sender->sendMessage("§a      禁止ワードの設定 §7(OP限定)");
                    $sender->sendMessage("§b /.delword <番号>§a:");
                    $sender->sendMessage("§a      <番号>の禁止ワードを削除 §7(OP限定)");
                    $sender->sendMessage("§b /.listword §a:");
                    $sender->sendMessage("§a      禁止ワードの表示 §7(OP限定)");
                    $sender->sendMessage("§b----------------------------");
                    return true;
                    break;
            }
        }
    }
}
--- []
...
]®þdŽ¿€’‘T^ö«Žæ×,)ä   GBMB