
<?php
echo "PocketMine-MP plugin ItemEditor v0.1
This file has been generated using DevTools v1.13.2 at Fri, 15 Mar 2019 19:49:28 +1030
----------------
";

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:10:"ItemEditor";s:7:"version";d:0.1;s:4:"main";s:21:"aieuo\itemEditor\Main";s:3:"api";s:5:"3.0.0";s:6:"depend";s:0:"";s:11:"description";s:0:"";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1552641568;}
   plugin.ymlÔ    n‹\Ô   øÌHš¶      	   README.md    n‹\   Ö(óU¶         src/aieuo/itemEditor/Main.php+   n‹\+  o@Hø¶      ---
name: ItemEditor
main: aieuo\itemEditor\Main
version: 0.1
api: 3.0.0
author: aieuo
commands:
 edititem:
  description: ã‚¢ã‚¤ãƒ†ãƒ ã®æƒ…å ±ã‚’å¤‰æ›´ã™ã‚‹
  usage: /edititem
  permission: op
...
# ItemEditor<?php

namespace aieuo\itemEditor;

use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\item\Durable;
use pocketmine\item\enchantment\Enchantment;
use pocketmine\item\enchantment\EnchantmentInstance;
use pocketmine\network\mcpe\protocol\ModalFormResponsePacket;
use pocketmine\network\mcpe\protocol\ModalFormRequestPacket;
use pocketmine\plugin\PluginBase;

class Main extends PluginBase implements Listener {

    private $forms = [];

    public function onEnable() {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }

    public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool {
        if(!$command->testPermission($sender)) return true;
        $item = $sender->getInventory()->getItemInHand();
        if($item->getId() === 0) {
            $sender->sendMessage("ã‚¢ã‚¤ãƒ†ãƒ ã‚’æŒã£ã¦ã„ã¾ã›ã‚“");
            return true;
        }
        $form = [
            "type" => "form",
            "title" => "é¸æŠž",
            "content" => "Â§7ãƒœã‚¿ãƒ³ã‚’æŠ¼ã—ã¦ãã ã•ã„",
            "buttons" => [
                ["text" => "åå‰"],
                ["text" => "èª¬æ˜Ž"],
                ["text" => "ãƒ¡ã‚¿å€¤"],
                ["text" => "å€‹æ•°"],
                ["text" => "ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆ"]
            ]
        ];
        $this->sendForm($sender, $form, [$this, "onMenu"]);
        return true;
    }

    public function onMenu($player, $data) {
        if($data === null) return;
        $item = $player->getInventory()->getItemInHand();
        switch($data) {
            case 0:
                $form = [
                    "type" => "custom_form",
                    "title" => "åå‰å¤‰æ›´",
                    "content" => [
                        [
                            "type" => "input",
                            "text" => "åå‰",
                            "default" => $item->getName()
                        ]
                    ]
                ];
                $this->sendForm($player, $form, [$this, "onChangeName"]);
                break;
            case 1:
                $lore = $item->getLore();
                $form = [
                    "type" => "form",
                    "title" => "é¸æŠž",
                    "content" => "Â§7ãƒœã‚¿ãƒ³ã‚’æŠ¼ã—ã¦ãã ã•ã„",
                    "buttons" => array_map(function($str) { return ["text" => $str]; }, $lore)
                ];
                $form["buttons"][] = ["text" => "<è¿½åŠ ã™ã‚‹>"];
                $this->sendForm($player, $form, [$this, "onSelectLore"], $lore);
                break;
            case 2:
                $max = $item instanceof Durable ? $item->getMaxDurability() : 15;
                $form = [
                    "type" => "custom_form",
                    "title" => "ãƒ¡ã‚¿å€¤å¤‰æ›´",
                    "content" => [
                        [
                            "type" => "input",
                            "text" => "ãƒ¡ã‚¿å€¤",
                            "default" => (string)$item->getDamage(),
                            "placeholder" => "0~".$max
                        ]
                    ]
                ];
                $this->sendForm($player, $form, [$this, "onChangeDamage"]);
                break;
            case 3:
                $max = $item->getMaxStackSize();
                $form = [
                    "type" => "custom_form",
                    "title" => "å€‹æ•°å¤‰æ›´",
                    "content" => [
                        [
                            "type" => "input",
                            "text" => "å€‹æ•°",
                            "default" => (string)$item->getCount(),
                            "placeholder" => "1~".$max
                        ]
                    ]
                ];
                $this->sendForm($player, $form, [$this, "onChangeCount"]);
                break;
            case 4:
                $enchantments = $item->getEnchantments();
                $form = [
                    "type" => "form",
                    "title" => "é¸æŠž",
                    "content" => "Â§7ãƒœã‚¿ãƒ³ã‚’æŠ¼ã—ã¦ãã ã•ã„",
                    "buttons" => array_map(function($enchant) {
                        return ["text" => $enchant->getType()->getName().":".$enchant->getLevel()];
                    }, $enchantments)
                ];
                $form["buttons"][] = ["text" => "<è¿½åŠ ã™ã‚‹>"];
                $this->sendForm($player, $form, [$this, "onSelectEnchant"], $enchantments);
                break;
        }
    }

    public function onChangeName($player, $data) {
        if($data === null) return;
        $item = $player->getInventory()->getItemInHand();
        $item->setCustomName($data[0]);
        $player->getInventory()->setItemInHand($item);
        $player->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ");
    }

    public function onSelectLore($player, $data, $lore) {
        if($data === null) return;
        $form = [
            "type" => "custom_form",
            "title" => "èª¬æ˜Žå¤‰æ›´",
            "content" => [
                [
                    "type" => "input",
                    "text" => "èª¬æ˜Ž",
                    "default" => isset($lore[$data]) ? $lore[$data] : ""
                ],
                [
                    "type" => "toggle",
                    "text" => "å‰Šé™¤ã™ã‚‹"
                ]
            ]
        ];
        $this->sendForm($player, $form, [$this, "onChangeLore"], $lore, $data);
    }

    public function onChangeLore($player, $data, $lore, $num) {
        if($data === null) return;
        $item = $player->getInventory()->getItemInHand();
        if($data[1]) {
            unset($lore[$num]);
        } else {
            $lore[$num] = $data[0];
        }
        $item->setLore($lore);
        $player->getInventory()->setItemInHand($item);
        $player->sendMessage($data[1] ? "å‰Šé™¤ã—ã¾ã—ãŸ" : "å¤‰æ›´ã—ã¾ã—ãŸ");
    }

    public function onChangeDamage($player, $data) {
        if($data === null) return;
        $item = $player->getInventory()->getItemInHand();
        $max = $item instanceof Durable ? $item->getMaxDurability() : 15;
        $damage = (int)$data[0];
        if($damage < 0 or $max < $damage) {
            $player->sendMessage("0~".$max."ã®ç¯„å›²ã§è¨­å®šã—ã¦ãã ã•ã„");
            return;
        }
        $item->setDamage($damage);
        $player->getInventory()->setItemInHand($item);
        $player->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ");
    }

    public function onChangeCount($player, $data) {
        if($data === null) return;
        $item = $player->getInventory()->getItemInHand();
        $max = $item->getMaxStackSize();
        $count = (int)$data[0];
        if($count < 1 or $max < $count) {
            $player->sendMessage("1~".$max."ã®ç¯„å›²ã§è¨­å®šã—ã¦ãã ã•ã„");
            return;
        }
        $item->setCount($count);
        $player->getInventory()->setItemInHand($item);
        $player->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ");
    }

    public function onSelectEnchant($player, $data, $enchantments) {
        if($data === null) return;
        if(!isset($enchantments[$data])) {
            $form = [
                "type" => "custom_form",
                "title" => "ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆ",
                "content" => [
                    [
                        "type" => "input",
                        "text" => "ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã®åå‰ã‹id"
                    ],
                    [
                        "type" => "input",
                        "text" => "ãƒ¬ãƒ™ãƒ«"
                    ]
                ]
            ];
            $this->sendForm($player, $form, [$this, "onAddEnchant"]);
        } else {
            $enchant = $enchantments[$data];
            $form = [
                "type" => "custom_form",
                "title" => "ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆ",
                "content" => [
                    [
                        "type" => "label",
                        "text" => $enchant->getType()->getName()."  id:".$enchant->getId()
                    ],
                    [
                        "type" => "input",
                        "text" => "ãƒ¬ãƒ™ãƒ«",
                        "default" => (string)$enchant->getLevel()
                    ],
                    [
                        "type" => "toggle",
                        "text" => "å‰Šé™¤ã™ã‚‹"
                    ]
                ]
            ];
            $this->sendForm($player, $form, [$this, "onAddEnchant"], $enchant->getId());
        }
    }

    public function onAddEnchant($player, $data, $id = null) {
        if($data === null) return;
        if($id === null) $id = $data[0];
        if(is_numeric($id)) {
            $enchant = Enchantment::getEnchantment((int)$id);
        } else {
            $enchant = Enchantment::getEnchantmentByName($id);
        }
        if(!($enchant instanceof Enchantment)) {
            $player->sendMessage("ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“");
            return;
        }
        $level = (int)$data[1];
        $item = $player->getInventory()->getItemInHand();
        $item->addEnchantment(new EnchantmentInstance($enchant, $level));
        $player->getInventory()->setItemInHand($item);
        $player->sendMessage("å¤‰æ›´ã—ã¾ã—ãŸ");
    }






    public function encodeJson($data){
        $json = json_encode($data, JSON_PRETTY_PRINT | JSON_BIGINT_AS_STRING | JSON_UNESCAPED_UNICODE);
        return $json;
    }

    public function sendForm($player, $form, $callable = null, ...$datas){
        while(true) {
            $id = mt_rand(0, 999999999);
            if(!isset($this->forms[$id])) break;
        }
        $this->forms[$id] = [$callable, $datas];
        $pk = new ModalFormRequestPacket();
        $pk->formId = $id;
        $pk->formData = $this->encodeJson($form);
        $player->dataPacket($pk);
    }

    public function Receive(DataPacketReceiveEvent $event){
        $pk = $event->getPacket();
        $player = $event->getPlayer();
        if($pk instanceof ModalFormResponsePacket){
            if(isset($this->forms[$pk->formId])) {
                $json = str_replace([",]",",,"], [",\"\"]",",\"\","], $pk->formData);
                $data = json_decode($json);
                if(is_callable($this->forms[$pk->formId][0])) {
                    call_user_func_array($this->forms[$pk->formId][0], array_merge([$player, $data], $this->forms[$pk->formId][1]));
                }
                unset($this->forms[$pk->formId]);
            }
        }
    }
}5„7K•ÃÚj$;îš“Ïþ¶˜   GBMB