Как привязать это?

я UpdateTag сделал но не до конца понял как привязать Ranks
код:

public function updateTag($p){
		$level = $this->ls->getLevel($p);
		//$ping = $p->getPing();
		$cps = $this->getClicks($p);
		$group = $this->getServer()->getPluginManager()->getPlugin("PurePerms")->getUserDataMgr()->getGroup($p);
		$health = $p->getHealth();
		if($group == "Player"){
			$p->setNameTag("§f[§e{$level}§f] ". $p->getName() ."\n§e{$this->getDeviceOS($p->getName())} §f| §e{$health}");
			$p->setDisplayName("§f". $p->getName());

как заменить PurePerms на Ranks?
код:

public const RANK_PERMISSIONS = [
		'Player' => [],
]

код самого setrank:

final class SetRankCommand extends Command{
    private const GROUPS = ['Player', 'Moderator', 'Admin', 'Owner'];

    /**
     * SetRankCommand constructor.
     *
     * @return void
    */
    public function __construct(){
        parent::__construct('setrank');
        $this->addCommandParameter(new CommandParameter('player', CommandParameter::ARG_TYPE_PLAYER));
        $this->addCommandParameter(new CommandParameter('rank', CommandParameter::ARG_TYPE_RAW_TEXT, true));
    }
    
    /**
     * @param CommandSender $sender
     * @param string $commandLabel
     * @param array $args
     * 
     * @return bool
    */
    final public function execute(CommandSender $sender, string $commandLabel, array $args) : bool{
        if(!$sender->isOp())
        {
            return false;
        }
        if(!isset($args[0]) || !isset($args[1])) {
            $sender->sendMessage('§l§9» §r§fUsage: §d/setrank <name> <rank>');
            return false;
        }
        $args[1] = str_replace('_', ' ', $args[1]);
        if(!in_array($args[1], self::GROUPS)) {
            return false;
        }
        if(($player = $sender->getServer()->getPlayer($args[0])) !== null){
            $player->setProperty('group', $args[1]);
            $player->close('', 'Generic reason');
        }else{
            $sender->getServer()->getPluginManager()->getPlugin('Users')->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);
        }
        $sender->sendMessage('§l§9» §r§fRank has been changed');
        return true;
$group = $this->getServer()->getPluginManager()->getPlugin('Ranks')->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);

попробывал это неробит

наверное не поняли, я сперва думал что буду ставить PurePerms, и этот UpdateTag привязал к PurePerms, потом я передумал и в качестве теста взял Ranks из саинта, ядро призма

теперь этот UpdateTag не могу привязать к Ranks

Код который ты дал полный?

это команда для сервера, а не апи для разработчика

А… А я то туплю

Крч, там есть отдельная функция для получения ранга игрока, поройся в плагине хорошенько

шяс

Я нашел в плагине Users(пришел вместе с Ranks) код он взаимопривязан с Ranks?
вот код Users:

<?php

declare(strict_types=1);

namespace users\manager;

use pocketmine\Player;

use function is_dir;
use function mkdir;

use const SQLITE3_ASSOC;

final class UserManager{
	private $users;

	public function __construct(string $path){
		if(!is_dir($path)){
			mkdir($path, 0775, true);
		}
		$this->users = new \SQLite3($path . 'users.db');
		$this->users->exec("CREATE TABLE IF NOT EXISTS `users`(
			`nickname` TEXT PRIMARY KEY NOT NULL,
			`originalname` TEXT NOT NULL,
			`cape` TEXT NOT NULL,
			`group` TEXT NOT NULL,
			`deatheffect` TEXT NOT NULL,
			`particle` TEXT NOT NULL,
			`kills` INTTEGER default 0 NOT NULL,
			`wins` INTEGER default 0 NOT NULL,
			`level` INTEGER default 1 NOT NULL,
			`experience` INTEGER default 0 NOT NULL,
			`deaths` INTEGER default 0 NOT NULL
		)");
   //$this->destroy();
	}

	final public function destroy() : void{
		$sql = $this->users->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 200000");
		while($element = $sql->fetchArray(SQLITE3_ASSOC)){
			$name = $element['nickname'];
			$this->users->query("UPDATE `users` SET `wins` = 0 WHERE `nickname` = '$name'");
			$this->users->query("UPDATE `users` SET `kills` = 0 WHERE `nickname` = '$name'");
			$this->users->query("UPDATE `users` SET `level` = 1 WHERE `nickname` = '$name'");
			$this->users->query("UPDATE `users` SET `experience` = 0 WHERE `nickname` = '$name'");
    if($element['group'] === 'Devilish' or $element['group'] === 'Mysterio' or $element['group'] === 'Samurai'){
        $d = 'Player';
        $this->users->query("UPDATE `users` SET `group` = '$d' WHERE `nickname` = '$name'");
    }
		}
		echo PHP_EOL . 'cleared!' . PHP_EOL;
	}

	final public function perenos() : void{
	    $old = new \SQLite3('/root/pvp/plugins/Users/users.db');
        $sql = $old->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 65000");
        while($element = $sql->fetchArray(SQLITE3_ASSOC)){
            $name = $element['originalname'];
            $lname = $element['nickname'];
            $rank = $element['group'];
            $cape = 'none';
            $deatheffect = 'none';
            $particle = 'none';
            $this->users->query("INSERT INTO `users`(`nickname`, `originalname`, `cape`, `group`, `deatheffect`, `particle`) VALUES('$lname', '$name', '$cape', '$rank', '$deatheffect', '$particle')");
        }
        echo PHP_EOL . 'cleared!' . PHP_EOL;
    }

	final public function getProperties(Player $player){
		$name = strtolower($player->getName());
		$result = $this->users->query("SELECT * FROM `users` WHERE `nickname` = '$name'")->fetchArray(SQLITE3_ASSOC);
		return $result;
	}

	final public function setPropertyByName(string $name, string $property, $value) : void{
		$name = strtolower($name);
		$this->users->query("UPDATE `users` SET '$property' = '$value' WHERE `nickname` = '$name'");
	}

	final public function registerPlayer(Player $player) : void{
		if($this->getProperties($player) !== false){
			return;
		}

		$lname = strtolower($player->getName());
		$name = $player->getName();
		$rank = 'Player';
		$cape = 'none';
		$deatheffect = 'none';
		$particle = 'none';
		$this->users->query("INSERT INTO `users`(`nickname`, `originalname`, `cape`, `group`, `deatheffect`, `particle`) VALUES('$lname', '$name', '$cape', '$rank', '$deatheffect', '$particle')");
		$prop = $this->getProperties($player);
		$player->setProperties($this->getProperties($player));
	}

	final public function descKills(){
		return $this->users->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 5");
	}

	final public function descWins(){
		return $this->users->query("SELECT * FROM `users` ORDER BY `wins` DESC LIMIT 5");
	}

	final public function save(Player $player) : void{
		$name = strtolower($player->getName());
		foreach($player->getProperties() as $key => $value){
			$this->users->query("UPDATE `users` SET '$key' = '$value' WHERE `nickname` = '$name'");
		}
	}
}

а вот код с Ranks:

final class SetRankCommand extends Command{
    private const GROUPS = ['Player', 'Moderator', 'Admin', 'Owner'];

    /**
     * SetRankCommand constructor.
     *
     * @return void
    */
    public function __construct(){
        parent::__construct('setrank');
        $this->addCommandParameter(new CommandParameter('player', CommandParameter::ARG_TYPE_PLAYER));
        $this->addCommandParameter(new CommandParameter('rank', CommandParameter::ARG_TYPE_RAW_TEXT, true));
    }
    
    /**
     * @param CommandSender $sender
     * @param string $commandLabel
     * @param array $args
     * 
     * @return bool
    */
    final public function execute(CommandSender $sender, string $commandLabel, array $args) : bool{
        if(!$sender->isOp())
        {
            return false;
        }
        if(!isset($args[0]) || !isset($args[1])) {
            $sender->sendMessage('§l§9» §r§fUsage: §d/setrank <name> <rank>');
            return false;
        }
        $args[1] = str_replace('_', ' ', $args[1]);
        if(!in_array($args[1], self::GROUPS)) {
            return false;
        }
        if(($player = $sender->getServer()->getPlayer($args[0])) !== null){
            $player->setProperty('group', $args[1]);
            $player->close('', 'Generic reason');
        }else{
            $sender->getServer()->getPluginManager()->getPlugin('Users')->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);
        }
        $sender->sendMessage('§l§9» §r§fRank has been changed');
        return true;
    }
}

если так я пробывал

$group = $this->getServer()->getPluginManager()->getPlugin('Users')->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);

ошибка:

ErrorException: "Undefined variable: args" (EXCEPTION)

через пару лет попробуй когда научишься нормально программировать

blya

это было лишнее

$this->getServer()->getPluginManager()->getPlugin('Users')->getUserManager()->setPropertyByName($player->getName(), 'group', 'MVP');
$ranks = Server::getInstance()->getPluginManager()->getPlugin("Users");
$ranks->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);

Лучше бы переписать на статистическую функцию, так удобнее

Мусор + флажок

Ну я типо не удивлён

+флажок

Такие ядра уже сливались