Last active
April 26, 2020 15:36
-
-
Save PJZ9n/4a67fe8f5a810616d3b1b9bc4a17e458 to your computer and use it in GitHub Desktop.
PMMPでPluginCommandを使うときの例
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
namespace sample; | |
use pocketmine\command\Command; | |
use pocketmine\command\CommandExecutor; | |
use pocketmine\command\CommandSender; | |
use pocketmine\command\PluginCommand; | |
use pocketmine\permission\Permission; | |
use pocketmine\permission\PermissionManager; | |
use pocketmine\Player; | |
use pocketmine\plugin\Plugin; | |
use pocketmine\plugin\PluginBase; | |
use pocketmine\utils\TextFormat; | |
class Main extends PluginBase | |
{ | |
public function onEnable(): void | |
{ | |
//パーミッション | |
$permission = new Permission( | |
"sample.command.what",//プラグイン名.command.コマンド名 などがおすすめ | |
"whatコマンドの権限です。", | |
Permission::DEFAULT_OP//参考: https://github.com/pmmp/PocketMine-MP/blob/stable/src/pocketmine/permission/Permission.php#L38-L41 | |
); | |
PermissionManager::getInstance()->addPermission($permission);//パーミッションを登録する | |
//コマンド | |
$this->getServer()->getCommandMap()->register("プラグイン名", new WhatCommand("コマンド名(ここではwhat)", $this));//コマンドを登録する | |
} | |
} | |
class WhatCommand extends PluginCommand implements CommandExecutor | |
{ | |
public function __construct(string $name, Plugin $owner) | |
{ | |
parent::__construct($name, $owner); | |
$this->setDescription("what?!と言います");//説明 | |
$this->setUsage("/what [red:blue:help]");//使用方法: ~~で出るメッセージ | |
$this->setPermission("sample.command.what");//登録したパーミッション(25行目) | |
$this->setExecutor($this); | |
} | |
public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool | |
{ | |
//コマンドが実行された時の処理 | |
//return falseでfalseを返すと、使用方法が送信される。return trueでtrueを返すと、なにも送信されない。 | |
//権限を持っているかの確認は、PMMP側で自動的に行われます。 | |
//プレイヤーかどうか確認 | |
if (!$sender instanceof Player) { | |
//プレイヤーではなかった場合 | |
$sender->sendMessage(TextFormat::RED . "あなたはプレイヤーではないので、このコマンドを実行できません。"); | |
return true;//正常に処理が完了したので、trueを返して処理を終了する。 | |
} | |
//コマンドの書式が合っているか検証 | |
if (count($args) < 1) { | |
//パラメータの数が1未満だった場合(ここでは/whatだけだった場合) | |
return false;//使用方法が間違っているので、falseを返して処理を終了する。使用方法が自動で送信される。 | |
} | |
//コマンドのパラメータによって分岐する | |
switch ($args[0]) {//0(1)番目の値によって処理(/what >ここ<の部分) | |
case "red":// /what red だった場合 | |
$sender->chat(TextFormat::RED . "What?!?!?!?!?!"); | |
return true;//正常に処理が完了したので、trueを返して処理を終了する。 | |
case "blue":// /what blue だった場合 | |
$sender->chat(TextFormat::BLUE . "What?!?!?!?!?!"); | |
return true;//正常に処理が完了したので、trueを返して処理を終了する。 | |
case "help":// /what help だった場合 | |
//使用方法の表示だけで十分な場合もあるので、help等を実装する必要があるかは場合による。 | |
$sender->sendMessage("-- /whatコマンドのヘルプ --"); | |
$sender->sendMessage("/what red - " . TextFormat::RED . "What?!?!?!?!?!" . TextFormat::RESET . "と発言する"); | |
$sender->sendMessage("/what blue - " . TextFormat::BLUE . "What?!?!?!?!?!" . TextFormat::RESET . "と発言する"); | |
$sender->sendMessage("/help - /whatコマンドのヘルプを表示する"); | |
return true;//正常に処理が完了したので、trueを返して処理を終了する。 | |
} | |
return false;//最後には必ずreturn falseを置いておく。 | |
//ここでonCommand()関数の処理は終了 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment