I just made a small plugin but when I run the commands all it does is show the usage. Spoiler: code PHP: public function onCmd(Command $cmd, CommandSender $sender, $label, array $args){ switch(strtolower($cmd->getName())) { case 'sethealth': if($sender->hasPermission("hm.sethealth")) { $player = $this->getServer()->getPlayerExact($args[0]); if (is_numeric($args[1])) $player->setHealth($args[1]); $sender->sendMessage(TXT::GREEN . $player->getName() . "'s health set to " . TXT::RED . $args[1]); if (!is_numeric($args[1])) $sender->sendMessage(TXT::RED . "Invalid number."); if (empty($args[1]) || empty($args[0])) $sender->sendMessage(TXT::RED . "Usage: /sethealth <player> <health>"); if ($player === null) $sender->sendMessage(TXT::RED . $player->getName() . " is offline."); } return true; break; case 'savehealth': if($sender->hasPermission("hm.savehealth")) { $player = $this->getServer()->getPlayerExact($args[0]); if (is_numeric($args[1])) $player->setHealth($args[1]); $health = new Config($this->getDataFolder() . "players/" . strtolower($player->getName()) . ".yml", Config::YAML); if ($health->exists("Health")) { $health->set("Health", $args[0]); $health->save(); $sender->sendMessage(TXT::GREEN . $player->getName() . "'s health saved. When they join\n they will have the same health you set it to."); return true; } if (!is_numeric($args[1])) $sender->sendMessage(TXT::RED . "Invalid number."); if (empty($args[1]) || empty($args[0])) $sender->sendMessage(TXT::RED . "Usage: /savehealth <player> <health>"); return true; break; } case 'randhealth': if($sender->hasPermission("hm.randhealth")) { $player = $this->getServer()->getPlayerExact($args[0]); if (is_numeric($args[1]) && is_numeric($args[2]) && $args[1] < $args[2]) { $rand = $args[1]; $rand2 = $args[2]; $result = mt_rand($rand, $rand2); $player->setHealth($result); $sender->sendMessage(TXT::GREEN . $player->getName() . "'s health set to " . $result); return true; } elseif ($args[1] > $args[2]) { $sender->sendMessage(TXT::RED . "First number can't be bigger than second number."); return true; } if (!is_numeric($args[1])) $sender->sendMessage(TXT::RED . "Invalid number."); if (empty($args[1]) || empty($args[0])) $sender->sendMessage(TXT::RED . "Usage: /randhealth <player> <health> <health>"); if ($player === null) $sender->sendMessage(TXT::RED . $player->getName() . " is offline."); return true; break; } case 'gethealth': if($sender->hasPermission("hm.gethealth")){ $player = $this->getServer()->getPlayerExact($args[0]); $phealth = $player->getHealth(); $sender->sendMessage(TXT::GREEN . $player->getName() . "'s health is " . $phealth); if(empty($args[0])) $sender->sendMessage(TXT::RED . "Usage: /gethealth <player>"); if ($player === null) $sender->sendMessage(TXT::RED . $player->getName() . " is offline."); return true; break; } } }
Wait now I'm getting a new error: Declaration of HealthManager\Main:nCommand() must be compatible with pocketmine\command\CommandExecutor:nCommand(pocketmine\command\CommandSender $sender, pocketmine\command\Command $command, $label, array $args)
Also, the break statements should be outside the if statements, you will get undefined behaviour if you don't break.
It keeps saying pocketmine\command\CommandExecutor should be complatible with onCommand I don't understand that, help?
I gave like. Spoiler: Error Error: Declaration of HealthManager\Main:nCommand() must be compatible with pocketmine\command\CommandExecutor:nCommand(pocketmine\command\CommandSender $sender, pocketmine\command\Command $command, $label, array $args) File: /HealthManager/src/HealthManager/Main Line: 15 Type: E_COMPILE_ERROR THIS CRASH WAS CAUSED BY A PLUGIN Code: [6] use pocketmine\Server; [7] use pocketmine\event\Listener; [8] use pocketmine\command\Command; [9] use pocketmine\plugin\PluginBase; [10] use pocketmine\command\CommandSender; [11] use pocketmine\command\CommandExecutor; [12] use pocketmine\utils\TextFormat as TXT; [13] use pocketmine\event\player\PlayerJoinEvent; [14] [15] class Main extends PluginBase implements Listener{ [16] [17] public function onEnable(){ [18] [19] $log = $this->getLogger(); [20] [21] $log->info("Plugin successfully loaded!"); [22] [23] [24] } [25]
https://github.com/Artide/PM-1.5-Plugins/blob/master/HealthManager/src/HealthManager/Main.php P.S. it's not register events I just deleted it to test if that was the error.
Not PHP. It is just that your declaration has to be the same as its parent class(es), and in this case, the CommandExecutor interface.