<?php __HALT_COMPILER(); ?>
ö                 
   plugin.yml¤      ¤   zÜüܶ         src/xtakumatutix/               ¶         src/xtakumatutix/flotingchat/               ¶      "   src/xtakumatutix/flotingchat/Form/               ¶      .   src/xtakumatutix/flotingchat/Form/ChatForm.php6     6  hr#¶      %   src/xtakumatutix/flotingchat/Main.php¾     ¾  Ɗ›ž¶      &   src/xtakumatutix/flotingchat/particle/               ¶      1   src/xtakumatutix/flotingchat/particle/Floting.php¶     ¶  íÏfU¶      ---
name: FlotingChat
main: xtakumatutix\flotingchat\Main
version: 1.0.0
api: 3.0.0
commands:
  fchat:
    description: 浮き文字を召喚します
...
<?php
namespace xtakumatutix\flotingchat\Form;

use pocketmine\form\Form;
use pocketmine\Player;
use xtakumatutix\flotingchat\particle\Floting;

class ChatForm implements Form
{
    public function handleResponse(Player $player, $data): void
    {
        if ($data === null) {
            return;
        }
        $length = mb_strlen($data[0]);
        if ($length == 0){
            $player->sendMessage("§c >> §f言葉を入力してください");
        }
        if($length < 11){
            Floting::particle($player,$data);
            return;
        }
        if($length > 12){
            $player->sendMessage("§c >> §f文字は11字以内でしてください。");
            return;
        }
     }

    public function jsonSerialize()
    {
        return [
            'type' => 'custom_form',
            'title' => '浮き文字',
            'content' => [
                [
                    'type' => 'input',
                    'text' => '浮き文字で入力したい言葉をうってください。'
                ],
                [
                    'type' => 'step_slider',
                    'text' => '何秒表示しますか？',
                    'steps' => ['5', '10', '15', '20', '25', '30'],
                    'default' => 0
                ]
            ]
        ];
    }
}<?php

namespace xtakumatutix\flotingchat;

use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\Player;
use xtakumatutix\flotingchat\Form\ChatForm;
use xtakumatutix\flotingchat\particle\Floting;

Class Main extends PluginBase 
{

    public function onEnable() 
    {
        $this->getLogger()->notice("読み込み完了_ver.1.0.0");
    }

    public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool
    {
        if (!($sender instanceof Player)) {
            return true;
        }

        $sender->sendForm(new ChatForm());

        return true;
    }
}<?php
namespace xtakumatutix\flotingchat\particle;

use pocketmine\Player;
use pocketmine\level\Level;
use pocketmine\math\Vector3;
use pocketmine\level\particle\FloatingTextParticle;
use pocketmine\plugin\Plugin;
use pocketmine\scheduler\ClosureTask;
use pocketmine\Server;

class Floting
{
    public static function particle(Player $player, $data)
    {
        $basePos = $player->asVector3();
        $basePos = $basePos->add(0, 1, 0);//高さ上げ
        switch ($player->getDirection()) {
            case 3:
                $pos = $basePos->add(1, 0, 0);
                break;
            case 0:
                $pos = $basePos->add(0, 0, 1);
                break;
            case 1:
                $pos = $basePos->add(-1, 0, 0);
                break;
            case 2:
                $pos = $basePos->add(0, 0, -1);
                break;
            }
        $level = $player->getLevel();
        $name = $player->getName();
        $particle = new FloatingTextParticle($pos, "§7by.{$name}", "{$data[0]}");
        $level->addParticle($particle);

        $task = new ClosureTask(function (int $currentTick) use ($particle, $level): void {
            $particle->setInvisible(true);//パーティクルを見えなくする(これ以外に消す方法あるかも)
            $level->addParticle($particle);//見えなくしたのを反映させる
        });
        $plugin = Server::getInstance()->getPluginManager()->getPlugin("reaction");
        /** @var Plugin $plugin */
        $plugin->getScheduler()->scheduleDelayedTask($task, 20 * ($data[1] + 1) * 5);//時間指定×20(1秒)×5(スライドバー)※0からだから+1する
    }
}
¡ãC&‚¨Â(ï„}K"ÑvÕ"   GBMB