<?php __HALT_COMPILER(); ?>
f                     src/Sdash/Main.php  [  [      
   plugin.yml  [  1      <?php

namespace Sdash;

use pocketmine\Player;
use pocketmine\entity\Entity;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\utils\Config;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\level\Level;
use pocketmine\block\Block;
use pocketmine\math\Vector3;
use pocketmine\event\player\PlayerMoveEvent;

class Main extends PluginBase implements Listener{
    public function onEnable(){
        if(!file_exists($this->getDataFolder())){mkdir($this-dataFolder, 0744, true);}
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->getLogger()->notice("§5Sdash has been enabled.§7| §r§ecreated by fuuko");
        $this->config = new Config($this->getDataFolder() . "config.yml", Config::YAML, array(
            "dashblock" => "133:0",
            "dashpower" => "3",
            "jumppower" => "0.1"
            ));
            $this->SVector = new Vector3();
    }
    public function onCommand(CommandSender $sender, Command $command, string $label, array $args):bool {
        switch (strtolower($command->getName())) {

        case "dash": 
        if(!isset($args[0])) return false;
        if(!isset($args[1])) return false;
        if($args[0] == "block"){
            if(!isset($args[2]) || $args[2] == ""){$args[2] = "0";}
            if (!ctype_digit($args[1]) || !ctype_digit($args[2])){
                $sender->getPlayer()->sendMessage("[§dSdash§r] IDは数字で入力してください。");
            }elseif($this->config->exists("dashblock") && $this->config->get("dashblock") == "$args[1]:$args[2]"){
                $sender->getPlayer()->sendMessage("[§dSdash§r] ID§e$args[1]:$args[2]§rはすでに登録されています。");
            }elseif($this->config->exists("dashblock") && $this->config->get("dashblock") != "$args[1]:$args[2]"){
                $this->config->remove("dashblock");
                $this->config->set("dashblock", "$args[1]:$args[2]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] ID§e$args[1]:$args[2]§rを登録しました。");
            }else{
                $this->config->set("dashblock", "$args[1]:$args[2]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] ID§e$args[1]:$args[2]§rを登録しました。"); 
            }
        }elseif($args[0] == "power"){
            if(!isset($args[2]) || $args[2] == ""){
                if(!is_numeric($args[1])){
                    $sender->getPlayer()->sendMessage("[§dSdash§r] Powerは数値で入力してください。");
                }elseif($this->config->exists("dashpower") && $this->config->get("dashpower") == "$args[1]"){
                    $sender->getPlayer()->sendMessage("[§dSdash§r] すでにPower§e$args[1]§rに設定されています。");
                }elseif($this->config->exists("dashpower") && $this->config->get("dashpower") != "$args[1]"){
                    $this->config->remove("dashpower");
                    $this->config->set("dashpower", "$args[1]");
                    $this->config->save();
                    $sender->getPlayer()->sendMessage("[§dSdash§r] Power§e$args[1]§rに設定しました。");
                }else{
                    $this->config->set("dashpower", "$args[1]");
                    $this->config->save();
                    $sender->getPlayer()->sendMessage("[§dSdash§r] Power§e$args[1]§rに設定しました。");
                }
            }elseif(isset($args[2])){
            if(!is_numeric($args[1]) || !is_numeric($args[2])){
                $sender->getPlayer()->sendMessage("[§dSdash§r] PowerとJumpは数値で入力してください。");
            }elseif($this->config->exists("dashpower") && $this->config->exists("jumppower") && $this->config->get("dashpower") == "$args[1]" && $this->config->get("jumppower") == "$args[2]"){
                $sender->getPlayer()->sendMessage("[§dSdash§r] すでにPower§e$args[1]§rJump§e$args[2]§rに設定されています。");
            }elseif($this->config->exists("dashpower") && $this->config->exists("jumppower") && $this->config->get("dashpower") != "$args[1]" && $this->config->get("jumppower") == "$args[2]"){
                $this->config->remove("dashpower");
                $this->config->set("dashpower", "$args[1]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] Power§e$args[1]§rに設定しました。");
            }elseif($this->config->exists("dashpower") && $this->config->exists("jumppower") && $this->config->get("dashpower") == "$args[1]" && $this->config->get("jumppower") != "$args[2]"){
                $this->config->remove("jumppower");
                $this->config->set("jumppower", "$args[2]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] Jump§e$args[2]§rに設定しました。");
            }elseif($this->config->exists("dashpower") && $this->config->exists("jumppower") && $this->config->get("dashpower") != "$args[1]" && $this->config->get("jumppower") != "$args[2]"){
                $this->config->remove("dashpower");
                $this->config->set("dashpower", "$args[1]");
                $this->config->remove("jumppower");
                $this->config->set("jumppower", "$args[2]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] Power§e$args[1]§rJump§e$args[2]§rに設定しました。");
            }else{
                $this->config->set("dashpower", "$args[1]");
                $this->config->set("jumppower", "$args[2]");
                $this->config->save();
                $sender->getPlayer()->sendMessage("[§dSdash§r] Power§e$args[1]§rJump§e$args[2]§rに設定しました。");
                }
            }
        }else{
            $sender->getPlayer()->sendMessage("[§dSdash§r] /dash <block> または <power> と入力してください。");
            }
            return true;
        }
        return false;
    }
    public function Move(PlayerMoveEvent $event){
        $player = $event->getPlayer();
        $block = $player->getLevel()->getBlockAt($player->x, $player->y - 1, $player->z, true, false);
        $blockid = $block->getId();
        $blockda = $block->getDamage();
        $dash = $this->config->get("dashblock");
        $idda = "$blockid:$blockda";
		if($idda == $dash){
            $pos = $player->getDirectionVector();
            $power = $this->config->get("dashpower");
            $jump = $this->config->get("jumppower");
			$this->SVector->setComponents($pos->x * $power, 0 + $jump, $pos->z * $power);
            $player->setMotion($this->SVector);
        }
    }
}name: Sdash
api: 4.0.0
main: Sdash\Main
version: 1.0.11
commands:
 dash:
  usage: /dash <block> <blockid> <blockdamage> or /dash <power> <Power> <Junp>
  description: ダッシュするブロックとダッシュのパワーを指定します。
  permission: command.op.permission
description: 指定したブロックに乗ると、飛んでいきます。
author: fuuko
load: POSTWORLD
糬4cU)U] ,   GBMB