
<?php
echo "PocketMine-MP plugin ConsoleChat v3.1.0
This file has been generated using DevTools v1.13.0 at Sat, 26 Dec 2020 02:02:14 +0900
----------------
";

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:11:"ConsoleChat";s:7:"version";s:5:"3.1.0";s:4:"main";s:22:"saito\ConsoleChat\Main";s:3:"api";s:5:"3.0.0";s:6:"depend";s:0:"";s:11:"description";s:35:"ConsoleからChatができます。";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1608915734;}
   plugin.yml#  _#  Ż      (   src/saito/ConsoleChat/Form/InputForm.php  _           src/saito/ConsoleChat/Main.php  _  W1      name: ConsoleChat
main: saito\ConsoleChat\Main
version: 3.1.0
api: 3.0.0
load: POSTWORLD
author: saito
description: ConsoleからChatができます。

commands:
  ch:
    description: opが疑似的にConsoleからチャットできます。
    usage: /ch
    permission: op
<?php
namespace saito\ConsoleChat\Form;

use pocketmine\Player;
use pocketmine\Server;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\form\Form;
use pocketmine\command\ConsoleCommandSender;

class InputForm implements Form {

    public function handleResponse(Player $player, $data): void {

        if ($data === null || !isset($data[0])) {
            return;
        }
        $msg = $data[0];
        $step = ['say', 'me', 'コマンド'];
        $push = $step[$data[1]];

        switch ($push) {

            case 'say':
                Server::getInstance()->getCommandMap()->dispatch(new ConsoleCommandSender(), "say {$msg}");
            break;

            case 'me':
                Server::getInstance()->getCommandMap()->dispatch(new ConsoleCommandSender(), "me {$msg}");
            break;
            
            case 'コマンド':
                Server::getInstance()->getCommandMap()->dispatch(new ConsoleCommandSender(), $msg);
            break;
        }
    }

    public function jsonSerialize() {
        return [
            'type' => 'custom_form',
            'title' => 'InputForm',
            'content' => [
                [
                    'type' => 'input',
                    'text' => '打ちたい言葉またはコマンド',
                    'placeholder' => '言葉'

                ],
                [
                    'type' => 'step_slider',
                    'text' => '実行形態',
                    'steps' => ['say', 'me', 'コマンド'],
                    'default' => 0
                ]
            ]
        ];
    }
}

<?php
namespace saito\ConsoleChat;

use pocketmine\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\Server;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use saito\ConsoleChat\Form\InputForm;

class Main extends PluginBase implements Listener {

  public function onEnable() {

    $this->getServer()->getPluginManager()->registerEvents($this, $this);
  }
  public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool {

    if ($sender instanceof Player) {

      $sender->sendForm(new InputForm());
      return true;
    } else {

      $sender->sendMessage("ゲーム内から実行してください。");
      return false;
    }
  } 
}

Mg\&==   GBMB