<?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