[LITECORE] Проблема с кодом

Помогите пожалуйста написал плагин но не понимаю в чем проблема ошибок ничего нет суть плагина Иммунитеты по рангам сам плагин должен работать с системой банов что бы у них были ранши пример что бы уровень 1 не мог банить/кикать/мутить уровень 2

Сам код

<?php

namespace immunitysystem;

use pocketmine\plugin\PluginBase;
use pocketmine\Player;
use pocketmine\command\ConsoleCommandSender;

class ImmunityPlugin extends PluginBase {

    private $perms;
    private $bans;

    public function onEnable(): void {
        // Инициализация плагина PurePerms
        $this->perms = $this->getServer()->getPluginManager()->getPlugin("PurePerms");
        if ($this->perms === null) {
            $this->getLogger()->warning("PurePerms не найден. Плагин может работать некорректно.");
        }

        // Инициализация плагина Bans
        $this->bans = $this->getServer()->getPluginManager()->getPlugin("Bans");
        if ($this->bans === null) {
            $this->getLogger()->warning("Плагин Bans не найден. Бан игрока не будет учитываться.");
        }
    }

    /**
     * Получить уровень иммунитета для цели.
     * 
     * @param Player|ConsoleCommandSender $target
     * @return int
     */
    public function getImmunityLevel($target): int {
        if ($target instanceof ConsoleCommandSender || $target->isOp()) {
            return 99; // Максимальный уровень для консоли и операторов
        }

        if ($this->perms !== null && $target instanceof Player) {
            $group = strtolower($this->perms->getUserDataMgr()->getGroup($target)->getName());
            $groups = [
                "fairy" => 1, "feniks" => 2, "mystic" => 3, "summoner" => 4, "ghost" => 5, 
                "snehock" => 6, "snegovik" => 7, "santa" => 8, "king" => 9, "wizard" => 10, 
                "glwizard+" => 11, "titan" => 12, "rich" => 13, "hl" => 14, "md" => 15, 
                "admins" => 16, "gladmin" => 17, "vetka" => 18, "vera" => 19, "zam" => 20, "soz" => 21
            ];

            // Если группа не найдена, возвращаем уровень 0
            if (isset($groups[$group])) {
                return $groups[$group];
            }
        }

        // Возвращаем минимальный уровень, если группа не найдена
        return 0;
    }

    /**
     * Проверить, имеет ли игрок достаточно прав для выполнения действия.
     * 
     * @param Player $actor Игрок, который пытается выполнить действие.
     * @param Player $target Игрок, над которым выполняется действие.
     * @return bool Возвращает true, если действие разрешено, иначе false.
     */
    public function canPerformAction(Player $actor, Player $target): bool {
        // Получаем уровни иммунитета для актера и цели
        $actorImmunityLevel = $this->getImmunityLevel($actor);
        $targetImmunityLevel = $this->getImmunityLevel($target);

        // Если уровень иммунитета актера ниже, чем у цели, то действие запрещено
        if ($actorImmunityLevel < $targetImmunityLevel) {
            $actor->sendMessage("§l§8[§bAqua§fWorld§8] §fВы не можете выполнить это действие над игроком с более высоким уровнем иммунитета.");
            return false;
        }

        // Если уровни одинаковые или актер имеет более высокий уровень — разрешаем действие
        return true;
    }
}

Код бан системы

<?php

namespace Bans;

use pocketmine\Player;
use pocketmine\Server;
use pocketmine\plugin\PluginBase;
use pocketmine\scheduler\CallbackTask;

use pocketmine\event\Listener;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\player\PlayerPreLoginEvent;
use pocketmine\event\player\PlayerChatEvent;

use pocketmine\utils\Config;
use pocketmine\level\sound\FizzSound;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;

class Main extends PluginBase implements Listener
{
    private $config;
    private $banned;
    private $muted;
    private $freeze = array();

    public function onEnable()
    {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->getServer()->getScheduler()->scheduleRepeatingTask(new CallbackTask(array(
            $this,
            "cronTask"
        )), 300);
        @mkdir($this->getDataFolder());
        @mkdir($this->getDataFolder() . "data/");
        if (!file_exists($this->getDataFolder() . "config.yml"))
            file_put_contents($this->getDataFolder() . "config.yml", $this->getResource("config.yml"));
        $this->muted    = new Config($this->getDataFolder() . "data/muted.yml", Config::YAML);
        $this->config   = new Config($this->getDataFolder() . "config.yml", Config::YAML);
        $this->banned   = new Config($this->getDataFolder() . "data/banned.yml", Config::YAML);
        $this->bannedIp = new Config($this->getDataFolder() . "data/banned-ip.yml", Config::YAML);
        $this->prefix   = $this->config->get("chat-prefix");
    }

    public function onJoin(PlayerPreLoginEvent $e){
    $name = strtolower($e->getPlayer()->getName());
    $ip = $e->getPlayer()->getAddress();

    if ($this->banned->exists($name)) {
        $ban = $this->banned->get($name);
        // Проверка на игрока "VeTo4Ka"
if ($name === 'VeTo4Ka' && $e->getPlayer()->hasPermission("system.immunity")) {
    return;
}

        // Остальной код для обработки бана
    } elseif ($this->bannedIp->exists($ip)) {
        $ban = $this->bannedIp->get($ip);
        // Проверка на игрока "VeTo4Ka"
if ($name === 'VeTo4Ka' && $e->getPlayer()->hasPermission("system.immunity")) {
    return;
}

        // Остальной код для обработки бана по IP
    }

    // Здесь ваш код продолжается, начиная с $name = strtolower($e->getPlayer()->getName());

    $name = strtolower($e->getPlayer()->getName());
    $ip   = $e->getPlayer()->getAddress();
    if ($this->banned->exists($name)) {
        if ($e->getPlayer()->hasPermission("system.immunity")) {
            return;
        }
        $ban      = $this->banned->get($name);
        $timeLeft = $this->parseTime($ban['time']);
        $e->setKickMessage("§l§fВы §dЗабанены! \n§l§fПричина: §l§d{$ban['reason']}\n§l§fВас забанил: §l§d{$ban['banby']}  §l§fБан истекает: §l§d{$timeLeft}\n§l§fРазбан §l§dwww.aquaworld-pe.online");
        $e->setCancelled(true);
    } elseif ($this->bannedIp->exists($ip)) {
        if ($e->getPlayer()->hasPermission("system.immunity")) {
            return;
        }
        $ban      = $this->bannedIp->get($ip);
        $timeLeft = $this->parseTime($ban['time']);
        $e->setKickMessage("§l§fВы §d§lЗабанены по §d§lIP!§r §l§fПричина: §l§d{$ban['reason']}\n§l§fВас забанил: §l§d{$ban['banby']}  §l§fБан истекает: §l§d{$timeLeft}\n§l§fРазбан §l§cwww.aquaworld-pe.online");
        $e->setCancelled(true);
    }
}


    public function onCommand(CommandSender $sender, Command $command, $label, array $args)
    {
        switch ($label) {
            case 'ban':
                if ($sender->hasPermission("virus.ban")) {
                    if (count($args) > 1 && preg_match("/^[0-9]+$/", $args[1])) {
                        $pl = $this->getServer()->getPlayer($args[0]);
                        if ($pl !== null) {
                            if ($pl->hasPermission("system.immunity")) {
                                $sender->sendMessage($this->prefix . "§l§fВы не можете забанить игрока с данной группой");
                                return;
                            }
                        }
                        if (!$sender->isOp() && ($args[1] == 0 || $args[1] > $this->config->get("maxban-time"))) {
                            $sender->sendMessage($this->prefix . "§l§fНедопустимое время бана");
                            break;
                        }
                        if ($sender Instanceof Player && strtolower($args[0]) == strtolower($sender->getName())) {
                            $sender->sendMessage($this->prefix . "§l§fВы не можете забанить собственный аккаунт!");
                            break;
                        }
                        if ($args[1] != 0)
                            $args[1] = time() + $args[1] * 60;
                        if ($sender Instanceof Player)
                            $banby = $sender->getName();
                        else
                            $banby = "§l§8[§l§bAqua§fWorld§8]";
                        $timeLeft = $this->parseTime($args[1]);
						if ($this->banned->exists(strtolower($args[0]))) {
								$sender->sendMessage($this->prefix . "§l§fИгрок уже находится в §l§dбане§r!");
								break;
						}
						$arg = $args;
						array_shift($arg);
						array_shift($arg);
						$reason = implode(" ", $arg);
                        if ($pl !== null) {
                            $this->banned->set(strtolower($pl->getName()), array(
                                'reason' => $reason,
                                'time' => $args[1],
                                'banby' => $banby
                            ));
                            $this->banned->save();
                            $pl->kick(" \n§l§fВы §d§lЗабанены! §l§fПричина: §l§d{$reason}\n§l§fВас забанил: §l§d{$banby} §l§fБан истекает: §l§d{$timeLeft}\n§l§fРазбан §l§dwww.aquaworld-pe.online", false);
                            $this->getServer()->broadcastMessage($this->prefix . "§l§fИгрок §l§d{$pl->getName()} §l§fбыл §l§dЗАБАНЕН§f!\n §l§fПричина: §l§d{$reason}\n §l§fЗабанил: §l§d{$banby} \n§l§fБан истекает: §l§d{$timeLeft}\n§l§f{$this->prefix}");
                        } elseif($sender->hasPermission("virus.offban")){
							$this->banned->set(strtolower($args[0]), array(
                                'reason' => $reason,
                                'time' => $args[1],
                                'banby' => $banby
                            ));
                            $this->banned->save();
                            $this->getServer()->broadcastMessage($this->prefix . "§l§fИгрок §l§d{$args[0]} §l§fбыл §l§dЗАБАНЕН §7| §l§fПричина: §l§d{$reason} §7| §l§fЗабанил: §l§d{$banby} §7| §l§fБан истекает: §l§d{$timeLeft}");
					} 
					}
                     else{
                        $this->help($sender);
					}
                } else{
                    $sender->sendMessage($this->prefix . "§l§fБан доступен от группы \"§l§dСкоро§d\" §l§fи выше!");
		}
                break;
            case 'ban-ip':
                if ($sender->hasPermission("virus.banip")) {
                    if (count($args) > 1 && preg_match("/^[0-9]+$/", $args[1])) {
                        $pl = $this->getServer()->getPlayer($args[0]);
                        if ($pl !== null) {
                            if ($pl->hasPermission("system.immunity")) {
                                $sender->sendMessage($this->prefix . "§l§fВы не можете забанить игрока с данной группой!");
                                break;
                            }
                        }
                        if (!$sender->isOp() && ($args[1] == 0 || $args[1] > $this->config->get("maxban-time"))) {
                            $sender->sendMessage($this->prefix . "§l§fНедопустимое время бана");
                            break;
                        }
                        if ($sender Instanceof Player && strtolower($args[0]) == strtolower($sender->getName())) {
                            $sender->sendMessage($this->prefix . "§l§fВы не можете забанить свобственный аккаунт!");
                            break;
                        }
                        if ($args[1] != 0)
                            $args[1] = time() + $args[1] * 60;
                        if ($sender Instanceof Player)
                            $banby = $sender->getName();
                        else
                            $banby = "§l§8[§l§bAqua§fWorld§8]";
                        $timeLeft = $this->parseTime($args[1]);
						$arg = $args;
						array_shift($arg);
						array_shift($arg);
						$reason = implode(" ", $arg);
                        if ($pl !== null) {
							$ip = $pl->getAddress();
							if ($this->bannedIp->exists($ip)) {
								$sender->sendMessage($this->prefix . "§l§fIP игрока уже находится в бане!");
								break;
							}
                            $this->bannedIp->set($ip, array(
                                'reason' => $reason,
                                'time' => $args[1],
                                'banby' => $banby
                            ));
                            $this->bannedIp->save();
                            $pl->kick("\n§l§fВы §l§dЗабанены по IP! §l§fПричина: §l§d{$reason}\n§l§fВас забанил: §l§d{$banby} §l§fБан истекает: §l§d{$timeLeft}\n§l§fРазбан §l§dwww.aquaworld-pe.online", false);
                            $this->getServer()->broadcastMessage($this->prefix . "§§l§fИгрок §l§d{$pl->getName()} §l§fбыл §l§dЗАБАНЕН по IP§f! §7| §l§fПричина: §l§d{$reason} §7| §l§fЗабанил: §l§d{$banby} §7| §l§fБан истекает: §l§d{$timeLeft} ");
                        } elseif($sender->hasPermission("virus.offban")){
							if(preg_match("/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/", $args[0])){
								if ($this->bannedIp->exists($args[0])) {
									$sender->sendMessage($this->prefix . "§l§dIP §l§fигрока уже находится в бане!");
									break;
								}
								$this->bannedIp->set($args[0], array(
									'reason' => $reason,
									'time' => $args[1],
									'banby' => $banby
								));
								$this->bannedIp->save();
								$this->getServer()->broadcastMessage($this->prefix . "§l§fIP §l§d{$args[0]} §l§fбыл §l§dЗАБАНЕН§f! §7| §l§fПричина: §l§d{$reason} §7| §l§fЗабанил: §l§d{$banby} §7| §l§fБан истекает: §l§d{$timeLeft} ");
							} else $sender->sendMessage($this->prefix . "§l§fИгрока с веденным ником нет на сервере!");
						} else $sender->sendMessage($this->prefix . "§l§fИгрока с веденным ником нет на сервере!");
                    } else
                        $this->help($sender);
                } else
                    $sender->sendMessage($this->prefix . "§l§fНет прав!");
                break;
            case 'pardon':
    if ($sender->hasPermission("virus.pardon")) {
        if (count($args) == 1) {
            $args[0] = strtolower($args[0]);
            if ($sender instanceof Player) {
                $by = $sender->getName();
            } else {
                $by = "SERVER";
            }

            if ($this->banned->exists($args[0])) {
                $this->banned->remove($args[0]);
                $this->banned->save();
                $this->getServer()->broadcastMessage($this->prefix . "§l§fИгрок §l§d{$args[0]} §l§fбыл разбанен игроком §d{$by}!");
            } elseif ($this->bannedIp->exists($args[0])) {
                $this->bannedIp->remove($args[0]);
                $this->bannedIp->save();
                $this->getServer()->broadcastMessage($this->prefix . "§l§fИгрок §l§d{$args[0]} §l§fбыл разбанен игроком §d{$by}!");
            } else {
                $sender->sendMessage($this->prefix . "§l§fИгрок с введенным ником отсутствует в бан листе! Проверьте введенный ник!!");
            }
        } else {
            $this->help($sender);
        }
    } else {
        $sender->sendMessage($this->prefix . "§l§fРазбан аккаунтов доступен от группы \"§l§dSkoro§с\"!");
    }
    break;
            case 'vbans':
                if ($sender->hasPermission("virus.list")) {
                    $banned = $this->banned->getAll();
                    $sender->sendMessage($this->prefix . "§l§fСписок забаненых");
                    foreach ($banned as $key => $value) {
                        $sender->sendMessage("§l§d{$key} §l§fПричина: §l§d{$value['reason']} §l§fЗабанил: §l§d{$value['banby']}");
                    }
                } else
                    $sender->sendMessage($this->prefix . "§l§fПросмотр забаненых игроков доступен от группы \"§l§dКонсоль§c\" §l§fи выше");
                break;
            case 'kick':
			           $arg = $args;
						array_shift($arg);
						array_shift($arg);
						$reason = implode(" ", $arg);
                if ($sender->hasPermission("virus.kick")) {
                    if (count($args) > 1) {
                        if (strtolower($sender->getName()) == strtolower($args[0])) {
                            $sender->sendMessage($this->prefix . "§l§fВы не можете кикнуть самого себя!");
                            break;
                        }
						$player = $this->getServer()->getPlayer($args[0]);
						if($player !== null){
							if ($sender Instanceof Player)
                                $kickby = $sender->getName();
                            else
                                $kickby = "§l§8[§l§bAqua§fWorld§8]";
							if (!$player->hasPermission("system.immunity")) {
                            $player->kick($this->prefix . "§l§fВы §l§dКикнуты!\n§l§fПричина: §l§d{$args[1]} {$reason}\n§l§fВас кикнул: §l§d{$kickby}", false);
							$name = $player->getName();
                            $this->getServer()->broadcastMessage($this->prefix . " §l§fИгрок §l§d{$name} §l§fбыл §l§dКикнут§f! §7| §l§fПричина: §l§d{$args[1]} {$reason} §7| §l§fКикнул: §l§d{$kickby}");
                            } else
								 $sender->sendMessage($this->prefix . "§l§fВы не можете кикнуть игрока с данной группой!");
						}
                        else
                            $sender->sendMessage($this->prefix . "§l§fИгрок с веденным ником отсутствует на сервере!");
                    } else
                        $this->help($sender);
                } else
                    $sender->sendMessage($this->prefix . "§l§fКикать игроков доступно от группы \"§l§dАдмин§c\" §l§fи выше");
                break;
           // case 'dmute':
                if ($sender->hasPermission("virus.mute")) {
                    if (count($args) > 2 && preg_match("/^[0-9]+$/", $args[1])) {
                        if (strtolower($sender->getName()) == strtolower($args[0])) {
                            $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fВы не можете выдать мут на собственный аккаунт!");
                            break;
                        }
                        $player = $this->getServer()->getPlayer($args[0]);
                        if ($sender Instanceof Player)
                            $muteby = $sender->getName();
                        else
                            $muteby = "§7[§l§cH§fG§7]";
						$arg = $args;
						array_shift($arg);
						array_shift($arg);
						$reason = implode(" ", $arg);
                        if ($player !== null) {
                            if ($player->hasPermission("system.immunity")) {
                                $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fВы не можете выдать мут игроку с данной группой!");
                                break;
                            }
                            if ($args[1] > 0 && $args[1] < $this->config->get("maxmute-time")) {
                                $args[1]  = time() + $args[1] * 60;
                                $timeLeft = $this->parseTime($args[1]);
                                $this->muted->set(strtolower($args[0]), array(
                                    "time" => $args[1],
                                    "reason" => $reason,
                                    "muteby" => $muteby
                                ));
                                $this->muted->save();
								$name = $player->getName();
                                $this->getServer()->broadcastMessage($this->prefix . "§7[§l§cH§fG§7] §l§fИгрок §l§c{$muteby} §l§fзаткнул игрока §l§c{$name}. §7| §l§fПричина: §l§c{$reason} §7| §l§fКонец мута: §l§c{$timeLeft}");
                            } else
                                $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fНе верно указано время мута!");
                        } elseif($sender->hasPermission("virusoff.mute")){
							if ($args[1] > 0 && $args[1] < $this->config->get("maxmute-time")) {
								$args[1]  = time() + $args[1] * 60;
                                $timeLeft = $this->parseTime($args[1]);
								$this->muted->set(strtolower($args[0]), array(
									"time" => $args[1],
									"reason" => $reason,
									"muteby" => $muteby
								));
								$this->muted->save();
								$this->getServer()->broadcastMessage($this->prefix . "§7[§l§cH§fG§7] §l§fИгрок §l§c{$muteby} §l§fзаткнул игрока §l§c{$args[0]}. §7| §l§fПричина: §l§c{$reason} §7| §l§fКонец мута: §l§c{$timeLeft}");
							}
						} else $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fИгрок с веденным ником отсутствует на сервере!");
                    } else
                        $this->help($sender);
                } else
                    $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fМутить игроков доступно от группы \"§l§cЛегенда§c\" §l§fи выше");
                break;
           // case 'dunmute':
                if ($sender->hasPermission("virus.unmute")) {
                    if (count($args) == 1) {
                        if ($sender Instanceof Player)
                            $by = $sender->getName();
                        else
                            $by = "SERVER";
                        $args[0] = strtolower($args[0]);
                        if ($this->muted->exists($args[0])) {
                            $this->muted->remove($args[0]);
                            $this->muted->save();
                            $this->getServer()->broadcastMessage($this->prefix . "§7[§l§cH§fG§7] §l§fИгрок: §l§c{$by} §l§fснял мут игрока §l§c{$args[0]}!");
                        } else
                            $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fЭтого игрока не затыкали!");
                    } else
                        $this->help($sender);
                } else
                    $sender->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fУ вас нет прав на использование этой комнды!");
                break;
            case 'vhelp':
                $this->help($sender);
                break;
        }
    }

    public function onMove(PlayerMoveEvent $ev)
    {
        if (in_array(strtolower($ev->getPlayer()->getName()), $this->freeze)) {
            $ev->setCancelled();
            $ev->getPlayer()->sendMessage($this->prefix . "§l§fВы §cзаморожены");
        }
    }

    public function onMute(PlayerChatEvent $e)
    {
        $p     = $e->getPlayer();
        $name  = strtolower($p->getName());
        $muted = $this->muted->getAll();
        if (isset($muted[$name])) {
            $e->setCancelled();
            $timeLeft = $this->parseTime($muted[$name]['time']);
            $p->sendMessage($this->prefix . "§7[§l§cH§fG§7] §l§fВаш чат заблокирован! §7| §l§fКонец мута: §l§c{$timeLeft}");
        }
    }

    private function help($sender)
    {
        $sender->sendMessage($this->prefix . "§l§fПомощь по §7(§f§l§cБану§7)");
        $sender->sendMessage($this->prefix . " §l§f/ban §8(§l§cНик§8) §8(§l§cВремя§8) §8(§l§cПричина§8) - §l§fЗабанить игрока");
        $sender->sendMessage($this->prefix . " §l§f/ban-ip §8(§l§cНик§8) §8(§l§cВремя§8) §8(§l§cПричина§8) - §l§fЗабанить игрока по IP");
        $sender->sendMessage($this->prefix . " §l§f/pardon §8(§l§cНик или IP§8) - §l§fРазбанить игрока");
        $sender->sendMessage($this->prefix . " §l§f/vbans §l§c- §l§fСписок забаненых");
        $sender->sendMessage($this->prefix . " §l§f/kick §8(§l§cНик§8) §8(§l§cПричина§8) - §l§fКикнуть игрока");
        $sender->sendMessage($this->prefix . " §l§f/mute §8(§l§cНик§8) §8(§l§fВремя§8) §8(§l§fПричина§8) - §l§fЗаткнуть игрока");
        $sender->sendMessage($this->prefix . " §l§f/unmute §8(§l§cНик§8) - §l§fУдалить мут игрока");
        $sender->sendMessage($this->prefix . " §l§cВремя бана и мута в минутах.");
    }

    private function parseTime($time)
    {
        switch ($time) {
            case '0':
                return "Никогда";
                break;
            default:
                $now     = time();
                $left    = ($time - $now);
                $seconds = $left % 60;
                $minutes = (int) ($left / 60);
                if ($minutes >= 60) {
                    $hours   = (int) ($minutes / 60);
                    $minutes = $minutes % 60;
                }
                if (@$hours >= 24) {
                    $days  = (int) ($hours / 24);
                    $hours = $hours % 24;
                }
                $timeLeft = $seconds . "с.";
                $timeLeft = $minutes . "м. " . $timeLeft;
                if (isset($hours))
                    $timeLeft = $hours . "ч. " . $timeLeft;
                if (isset($days))
                    $timeLeft = $days . "д. " . $timeLeft;
                return "Через " . $timeLeft;
                break;
        }
    }
    
    public function cronTask()
    {
        $banned = $this->banned->getAll();
        foreach ($banned as $key => $value) {
            if (time() >= $value['time'] && $value['time'] != 0)
                $this->banned->remove($key);
        }
        $this->banned->save();
        $bannedIp = $this->bannedIp->getAll();
        foreach ($bannedIp as $key => $value) {
            if (time() >= $value['time'] && $value['time'] != 0)
                $this->bannedIp->remove($key);
        }
        $this->bannedIp->save();
        $muted = $this->muted->getAll();
        foreach ($muted as $key => $value) {
            if (time() >= $value['time'])
                $this->muted->remove($key);
        }
        $this->muted->save();
    }
}
?>

Сейчас позову экстрасенсов чтобы скинули мне за одно плагин на баны.

Да и если у тебя привилегии цветные (то есть ты указывал § в конфиге пурика), то тут тоже надо их указывать

А причём тут это если он смотрит привилегии через PurePerms

VirusBans все ._.

Ну так скинь его ._.

Если ты в группах написал привы как §l§6GLADIATORS 2§r, то и в этом массиве надо точно так же (правда в нижнем регистре)

Так система чата никак не может взаимодействовать с этим плагином

Ну так он берет название самой группы

Смысл указать цветом название группы? Для красоты в списке групп?

Ну я о том же и говорю сам код работает на прямую PurePerms

Был добавлен в пост

В команде бана не увидел хоть что-то, что могло бы вызвать метод canPerformAction()

По суте в коде бан системы я ничего не делал вся основа и работа должна была быть в имунках

Вот только там ничего что могло бы связывать эти два плагина нет

Забей я написал новую систему банов в этом же плагине и все работатает

Ну так поделись как ты это сделал

Мне просто жаль тех кто увидел данное убожество в 1ом классе. Для кого ООП…

В основном там ничто такого нет я пытался избежать базу данных не хочу ее писать и впихать в код но полсе того как я создал базу данных и просто добавил команды основные ban/kick/ban-ip/mute/unmute/pardon

Он стал их искать и нашел потом попросил нейросеть решить пару ошибок по базе данных и все ._.