-
Notifications
You must be signed in to change notification settings - Fork 0
Examples
Remminiscent edited this page Jun 26, 2026
·
1 revision
Creates:
/sudo <player> <message/command>
If the message starts with /, PocketMine treats it as a command because this uses Player::chat().
use pocketmine\player\Player;
use remmi\PMCommandTree\argument\PlayerArgumentType;
use remmi\PMCommandTree\argument\TextArgumentType;
use remmi\PMCommandTree\command\tree\CommandContext;
use remmi\PMCommandTree\command\tree\CommandResult;
use remmi\PMCommandTree\command\tree\CommandRouteTree;
use remmi\PMCommandTree\command\tree\RouteCommand;
use remmi\PMCommandTree\command\tree\node\CommandRouteNode;
final class SudoCommand extends RouteCommand
{
public function __construct()
{
parent::__construct("sudo", self::createTree(), "Force a player to chat or run a command");
}
private static function createTree(): CommandRouteTree
{
$tree = new CommandRouteTree("sudo");
$root = $tree->getRoot();
$root->permission("example.sudo");
$root->then(
CommandRouteNode::argument("player", PlayerArgumentType::player())->then(
CommandRouteNode::argument("message", TextArgumentType::text())->exec(
static function (CommandContext $context): CommandResult {
$target = $context->getArg("player");
if (!$target instanceof Player) return $context->fail("Player not found.");
$target->chat($context->getArg("message"));
return $context->success();
}
)
)
);
return $tree;
}
}Register:
$this->getServer()->getCommandMap()->register("sudo", new SudoCommand());Permission:
permissions:
example.sudo:
default: opMade with hate by Remminiscent ❤️