Доработка плагина BanGUI [ PM5 ]

Недавно слили плагин BanGUI (Этот плагин я заказал у 1 группы)

Вот его код:

<?php

namespace NewPlugin\NewBans;

use jojoe77777\FormAPI\CustomForm;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerChatEvent;
use pocketmine\event\player\PlayerPreLoginEvent;
use pocketmine\player\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\Server;
use pocketmine\utils\Config;

class Main extends PluginBase implements Listener {
	private Config $config;
	private Config $database;

	public function onEnable(): void {
		$this->config = new Config($this->getDataFolder() . "config.yml", Config::YAML, [
			"permissions" => [
				"mute" => [
					"newplugin.first" => 60,
					"newplugin.second" => 70
				],
				"ban" => [
					"newplugin.first" => 5,
					"newplugin.second" => 10
				]
			]
		]);
		$this->database = new Config($this->getDataFolder() . "database.yml", Config::JSON);
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
	}

	public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool {
		if (!($sender instanceof Player)) {
			return TRUE;
		}

		switch ($command->getName()) {
			case "unmute":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					if ($this->database->getNested("mutes." . $data[0]) === NULL) {
						$player->sendMessage("Игрок не замучен!");
						return;
					}

					$this->database->remove("mutes." . $data[0]);
					$this->database->save();

					$player->sendMessage("Игрок $data[0] был успешно размучен");
				});

				$form->setTitle("Размутить игрока");
				$form->addInput("Ник игрока", "Введите ник игрока");
				$sender->sendForm($form);
				return TRUE;
			}

			case "sunban":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					if ($this->database->getNested("bans." . $data[0]) === NULL) {
						$player->sendMessage("Игрок не заблокирован!");
						return;
					}

					$this->database->remove("bans." . $data[0]);
					$this->database->save();

					$player->sendMessage("Игрок $data[0] был успешно разблокирован");
				});

				$form->setTitle("Разблокировать игрока");
				$form->addInput("Ник игрока", "Введите ник игрока");
				$sender->sendForm($form);
				return TRUE;
			}

			case "unwarn":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					if (!$this->database->getNested("warns." . $data[0])) {
						$player->sendMessage("Игрок не имеет варнов!");
						return;
					}

					$get = $this->database->getNested("warns." . $data[0], 0);
					if ($get === 0) {
						$player->sendMessage("Игрок не имеет варнов!");
						return;
					}

					$this->database->setNested("warns." . $data[0], $get - 1);
					$this->database->save();

					$player->sendMessage("У игрока $data[0] был снят варн");
				});

				$form->setTitle("Снять варн");
				$form->addInput("Ник игрока", "Введите ник игрока");
				$sender->sendForm($form);
				return TRUE;
			}

			case "sban":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					$to = Server::getInstance()->getPlayerByPrefix($data[0]);
					if ($to === NULL) {
						$player->sendMessage("Игрок не найден!");
						return;
					}

					$time = (int)$data[1];
					if ($time < 1 || $time > 30) {
						$player->sendMessage("Обнаружена попытка взлома.");
						return;
					}

					$max = 0;
					foreach ($this->config->getNested("permissions")["ban"] as $perm => $value) {
						if ($player->hasPermission($perm)) {
							$max = $value;
						}
					}

					if ($time > $max) {
						$player->sendMessage("Вы не можете банить на такое большое рвемя, ваш лимит: $max");
						return;
					}

					$expire = time() + $time * 24 * 60 * 60;
					$this->database->setNested("bans.{$to->getName()}", [
						"by" => $player->getName(),
						"reason" => $data[2],
						"time" => $expire
					]);
					$this->database->save();

					$to->kick($this->getKickMessage($data[2], $expire));

					if (!isset($data[3]) || $data[3] === FALSE) {
						Server::getInstance()->broadcastMessage("Игрок {$player->getDisplayName()} заблокировал игрока {$to->getDisplayName()} по причине: {$data[2]} на $time дней");
					}
				});

				$form->setTitle("Заблокировать игрока");
				$form->addInput("Ник игрока", "Введите ник игрока");
				$form->addSlider("Выберите время (дни)", 1, 30);
				$form->addInput("Причина", "Введите причину");
				if ($sender->hasPermission("newplugin.nomessage")) {
					$form->addToggle("Не оповещать");
				}
				$sender->sendForm($form);
				return TRUE;
			}

			case "warn":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					$to = Server::getInstance()->getPlayerByPrefix($data[0]);
					if ($to === NULL) {
						$player->sendMessage("Игрок не найден!");
						return;
					}

					$get = $this->database->getNested("warns." . $to->getName(), 0);
					$this->database->setNested("warns." . $to->getName(), $get + 1);
					$this->database->save();

					if ($get === 2) {
						$expire = time() + 7 * 24 * 60 * 60; // 7 дней за 3 предупреждения
						$this->database->setNested("bans.{$to->getName()}", [
							"by" => $player->getName(),
							"reason" => $reason = "Превышено количество предупреждений",
							"time" => $expire
						]);
						$this->database->save();
						$to->kick($this->getKickMessage($reason, $expire));
						return;
					}

					if (!isset($data[1]) || $data[1] === FALSE) {
						Server::getInstance()->broadcastMessage("Игрок {$player->getDisplayName()} выдал варн игроку {$to->getDisplayName()}, теперь у него " . ($get + 1) . " варнов");
					}
				});

				$form->setTitle("Выдать предупреждение");
				$form->addInput("Ник игрока", "Введите ник игрока");
				if ($sender->hasPermission("newplugin.nomessage")) {
					$form->addToggle("Не оповещать");
				}
				$sender->sendForm($form);
				return TRUE;
			}

			case "mute":
			{
				$form = new CustomForm(function (Player $player, ?array $data) {
					if ($data === NULL) return;

					$to = Server::getInstance()->getPlayerByPrefix($data[0]);
					if ($to === NULL) {
						$player->sendMessage("Игрок не найден!");
						return;
					}

					$time = (int)$data[1];
					if ($time < 1 || $time > 3600) {
						$player->sendMessage("Обнаружена попытка взлома.");
						return;
					}

					$max = 0;
					foreach ($this->config->getNested("permissions")["mute"] as $perm => $value) {
						if ($player->hasPermission($perm)) {
							$max = $value;
						}
					}

					if ($time > $max) {
						$player->sendMessage("Вы не можете мутить на такое большое рвемя, ваш лимит: $max");
						return;
					}

					$this->database->setNested("mutes.{$to->getName()}", [
						"by" => $player->getName(),
						"reason" => $data[2],
						"time" => time() + $time * 60
					]);
					$this->database->save();

					if (!isset($data[3]) || $data[3] === FALSE) {
						Server::getInstance()->broadcastMessage("Игрок {$player->getDisplayName()} замутил игрока {$to->getDisplayName()} по причине: {$data[2]} на $time минут");
					}
				});

				$form->setTitle("Замутить игрока");
				$form->addInput("Ник игрока", "Введите ник игрока");
				$form->addSlider("Выберите время (минуты)", 1, 3600);
				$form->addInput("Причина", "Введите причину");
				if ($sender->hasPermission("newplugin.nomessage")) {
					$form->addToggle("Не оповещать");
				}
				$sender->sendForm($form);
				return TRUE;
			}
		}

		return TRUE;
	}

	public function onJoin(PlayerPreLoginEvent $event): void {
		$player = $event->getPlayerInfo()->getUsername();

		$val = $this->database->getNested("bans." . $player);
		if ($val !== NULL) {
			if ($val["time"] > time()) {
				$event->setKickFlag(PlayerPreLoginEvent::KICK_FLAG_BANNED, $this->getKickMessage($val["reason"], $val["time"]));
			} else {
				$this->database->remove("bans." . $player);
			}
		}
	}

	public function onChat(PlayerChatEvent $event): void {
		$player = $event->getPlayer();

		$val = $this->database->getNested("mutes." . $player->getName());
		if ($val !== NULL) {
			if ($val["time"] > time()) {
				$player->sendMessage("Вы находитесь в муте, истечет через: " . round(($val["time"] - time()) / 60) . " минут");
				$event->cancel();
			} else {
				$this->database->remove("mutes." . $player->getName());
				$this->database->save();
				$player->sendMessage("У вас истек срок мута");
			}
		}
	}

	private function getKickMessage(string $reason, int $time): string {
		return "Вы были заблокированы\nПричина: $reason\nВы будете разблокированы через " . round(($time - time()) / 60 / 60) . " часов";
	}
}

Все работает хорошо но есть 1 НО. При выборе времени бана/мута ползунок может тянуться 1 - 30 или 1 - 3600 при этом максимально время на которое может игрок забанить или замутить не больше 5.

В общем, надо сделать так что бы ползунок подстраивался под максимально кол-во времени которое даётся в конфиге через разрешения а не до 3600 для каждого и при этом если больше 5 указать выйдет ошибка с лимитом.

Кто знает как это сделать?

Скинь плагин в формате .zip

А нет возможность появилась вот плагин
BanGUI.zip (3,1 КБ)

Вот

Хороший плагин заказал я смотрю

Ок

ужас, а не код

код ваще топчик, буду пользоваться плагином, спасибо)

Хороший конечно но фиксить надо этот ползунок (Работает все с FormAPI PM5) не знаешь как?

Знаю как, но не буду это делать. Учи php

Скажешь где ты учил PHP и API PM5?

в интернете, по официальной документации

Тупой вопрос