Версия 1.09.3
Еще одно небольшое обновление:
1. Исправлена проблема ошибка при загрузке PacketEventsAPI на новых версиях
2. Исправлено пару найденных багов
3. Изменена методика блокировки команд(в файле commands-limiter.yml)
Теперь метод проверки указывается для каждой команды отдельно! (Тестируется)
Пример:YAML:global: deny-message: "&cДанная команда заблокирована" use-as-whitelist: false group: default: - /commands[checkMode=first_arg] # Если вы установите неизвестный метод проверки, будет использован метод "first_arg" - /to # Если "[checkMode={mode}" не установено, автоматически используется "first_arg" - /ban ALis[checkMode=all_args] # Если длина команды больше одного слова, стоит использовать метод "all_args" moder: - /be[checkMode=first_arg] - /blocked[checkMode=first_arg]
Версия 1.09.2
- Исправлено пару моментов с текстом без цвета
- Исправлено в уведомлении о ошибке плагина 'UnknownException' (вроде)
- Исправлены проблемы с запуском на низких версиях
- Еще немного асинхрона.
Версия 1.09.1
Что изменилось:
- Исправлен баг с командой /cheatcheck
- Добавил ресурс на spigotmc.org и с его API через другое API добавил проверку новых версий плагина
Прежде всего, хотелось бы сказать что эта версия наврядли стабильная и тут для меня правда важно чтобы вы сообщали о найденых ошибках!
И так, что изменилось:
- ProtocolLib теперь нужен лишь для новой функции item-fixer, позже не будет нужен вообще(Но если он присутствует на сервере, плагин будет автоматически использовать его в любом случае)
- Добавлена возможность ограничить кол-во пакетов исходящих от игрока за определенный период
- Возможность защиты аккаунтов с использованием IP-адресов(Используйте только если у Вас статический IP-адрес)
- Контроль пинга игрока
- Защита от краша с помощью бага кафедры(не требуется на версиях выше 1.18)
- Защита от "читерских" предметов(ItemFixer от Leymooo, требуется ProtocolLib
Права:Еще раз попрошу сообщать о найденных багах.
- functionalservercontrol.protection.packets.bypass - игрок с данным правом может отправлять неограниченное кол-во пакетов на сервер
- functionalservercontrol.notification.player-over-packets - игроки с данным правом получат уведомление при превышении игроком максимального кол-ва пакетов
- functionalservercontrol.notification.protected-account - игроки с этим правом получает уведомление, когда на защищенный аккаунт попытается зайти игрок с другим IP-адресом
- functionalservercontrol.itemfixer.enchantments.bypass - игроки с данным правом могут использовать все нестандартные зачарования
- functionalservercontrol.itemfixer.<enchant>.bypass - игроки с данным правом могут использовать указанные в праве нестандартные зачарования
- functionalservercontrol.itemfixer.nbt.bypass - у игроков с данным правом предмет не проверяется на нестандартные NBT теги
- functionalservercontrol.notification.plugin-error - игроки с данным правом получат уведомление при нахождении ошибки в плагине(но это не точно =D )
- functionalservercontrol.notification.lectern-crash - игроки с данным правом получат уведомление при попытке каким-либо игроков "крашнуть" при помощи бага кафедры
- functionalservercontrol.itemfixer.potion.bypass - у игроков с данным правом не будут проверяться зелья на нестандартные эффекты, длительность
Опять таки, если ничего не забыл, то все
Чтож, теперь файлы обновлять самостоятельно НЕ НУЖНО! Этим займется встроенное автообновление файлов.Правда, оно еще в тестировании, возможен неверный сбор конфигурации.
Что убрано:
1. Флаг '-a' так как использовался только в команде /ban и не особо нужен,если нужно, сделаю /banall
Что добавлено:
1. Право functionalservercontrol.unmute.offline - т.е. теперь игроки без этого права не смогут размутить оффлайн игроков
2. Команда /fsc inetspeed - которая подсчитает скорость интернета на вашем сервере
3. Право functionalservercontrol.inetspeed - доступ к команде "/fsc inetspeed"
4. Право functionalservercontrol.clients.bypass - игроки с этим правом могут заходить используя запрещенный клиент
5. В конфиг добавлена возможность включить асинхронный режим проверки, но при нем естественно проверка займет немного больше времени
6. Команда /deviceinfo <server/machine> - с помощью данной команды можно узнать некоторую информацию о Вашем сервере или машине на которой он стоит
7. Право functionalservercontrol.deviceinfo - доступ к команде "/deviceinfo"
8. Добавлена возможность блокировать клиенты Lunar, Badlion
9. Добавлена возможность разбанить/размутить игроков используя ID блокировки/мута, примеры:
/unmute -id 101010, /unmute -id -s 121212, /unban -id 102321, /unban -s -id 2134
Насчет подсчета TPS для команды /deviceinfo server, подсчет ведется в асинхронном режиме, т.к. я решил что нагрузка былая не плохая во время синхронного подсчета, так что я бы не сильно доверял показаниям TPS из этой команды(могут быть погрешности)
И просто чтобы было, те кто используют команду /reload или Plugman для перезагрузки данного плагина, можете даже не писать об ошибках которые возникают после перезагрузки!!!
Если я чего-то не забыл, то пока все!)
Собсна, из нового только поддержка MySQL
Пересоздайте файлы, или добавьте в конфиге general.yml рядом с storage-method: "sqlite"(а точнее под ним) вот это:
Код:Для начала использования MySQL достаточно в параметре storage-method установить значение 'mysql'Код:mysql: host: "127.0.0.1" port: "3306" username: "root" password: "password" database_name: "name"
Т.е.: storage-method: "mysql"
И прежде чем репортить об ошибках с MySQL убедитесь что вы все верно ввели в конфиге.
Это не то что бы обновление, ничего нового в плагин я не внедрил, лишь исправил пару недочетов
Больше это обновление связано с API
А точнее теперь оно не только в ивентах заключается.
Тем кто будет его использовать(вдруг), оно находится в паке
by.alis.functionalservercontrol.api.FunctionalAPI <- класс самого API(интерфейс точнее)
by.alis.functionalservercontrol.api.events <- здесь находятся ивенты.
Функционал у этой версии API не велик, но все же пробегимся по этой паре функций
Пример получения API:Java:public class SomeYourClass { private FunctionalApi api; //Создаем глобальнуя переменную API для дальнейшего ее получения public boolean setupFunctionalApi() { api = FunctionalApi.get(); //Получаем API return api != null ? true : false; //Проверяем, удались ли получить api и если да, возвращаем true //Проверять на null обязательно, так как оно может быть отключено конфигом } //Создаем getter для апи public FunctionalApi getFunctionalApi() { return this.api; } }
Пример работы с банами(с мутами также только FunctionalMuteEntry и api.getMutes(); ):Пример работы со статистикой:Java:public class YourSomeClass { public void unbanPlayerIfHeALis() { FunctionalApi api = FunctionalApi.get(); //Получаем FunctionalApi if(api != null) { //Проверяем не равно ли api нулю(null) for(FunctionalBanEntry banEntry : api.getBans()) { //Перебираем список банов if(banEntry.getName().equalsIgnoreCase("ALis")) { //Проверяем, является ли имя забанненого игрока в данном спике ALis banEntry.unban(); //И если является, снимаем бан return; } } } else { getConsoleSender().sendMessage("Не удалось получить FunctionalApi!"); //Выводим сообщение, о том что не удалось получить FunctionalApi return; } } }
Java:public class YourSomeClass { public String sendStatisctic(Player player) { FunctionalApi api = FunctionalApi.get(); if(api != null) { String wasBanned = api.getPlayerStatistics().getAsPlayer(player).get(StatsType.Player.STATS_BANS); String preformBan = api.getPlayerStatistics().getAsAdmin(player).get(StatsType.Administrator.STATS_BANS) String advertiseAttempts = api.getPlayerStatistics().getAsPlayer(player).get(StatsType.Player.ADVERTISE_ATTEMPTS) return "Был забанен " + wasBanned + " раз; Банил: " + preformBan + " раз; Пытался рекламировать: " + advertiseAttempts + " раз;" //Это не все виды статистики, просто не думаю что есть смысл все тут перечислять } else { getConsoleSender().sendMessage("Не удалось получить FunctionalApi"); return; } } }
Так же в интерфейсе есть метод FunctionalApi#getCoreAdapter();
Но, думаю от него смысла особо нет, он просто ничего нового не добавляет, нужен скорее самому плагину, он позволяет использовать некоторые функции которых нету в Spitog/Paper API на очень низких версиях сервера
Сразу хочется сказать, что нововведений не будет до того момента, пока я не сделаю данную версию максимально стабильной, по этому просьба отписывать при нахождении багов и т.п., неважно куда.
Необходимо пересоздать файлы конфигурации, или по примеру с GitHub дополнить старые(что не очень легко думаю)
Новые команды:
- /fsc getstatistic <player/admin> <игрок> - показывает статистику игрока в качестве администратора или обычного игрока
- /clearchat <игрок/all> очищает чат игроку/всем
Новые возможности:Новые права:
- Теперь, если забаненный(не по IP игрок) зайдет на сервер под другим ником, администраторы с соответствующим правом получат об этом уведомление
- Достаточно функциональная защита от рекламы(была помещена в новый конфигурационный файл chat-settings.yml, что не логично немного вышло): с помощью которой можно предотвратить рекламирование IP-адресом или доменом в сообщениях чата, командах, названиях/лорах предметов, в книгах и на табличках
- Защита чата от спама(т.е. ограничение сообщений за определенное кол-во времени), возможность ограничения повторяющихся сообщений, возможность замены определенного текста в сообщении на указанный текст в конфиге
- В истории теперь сохраняется дата и время записи в историю(в конфиге соответствующие плейсхолдеры)
- Теперь в большинстве уведомлениий(если версия сервера от 1.16) при наведении на них, доступна информация о игроке(сколько раз был забанен, кикнут и т.п.)
- Переделан функционал кнопок в уведомлениях, теперь если админ имеет право например банить + банить без причины - то при нажатии на кнопку, игрок сразу забанен, а если админ может банить, но не может банить без причины - то кнопка просто введет команду в чат, где админ сам допишет причину(так же и с мутами/киками)
- В API добавлен ивент PlayerAdvertiseEvent который вызывается при попытке игрока прорекламировать что-либо с помощью IP/домена
- Исправлены некоторые старые баги
- По классике добавлна куча новых.
- functionalservercontrol.notification.same-ip - игрок с данным правом получит уведомление, когда забаненный игрок зайдет под другим ником
- functionalservercontrol.clearchat - доступ к команде /clearchat
- functionalservercontrol.clearchat.bypass -для игрока с данным правом нельзя очистить чат
- functionalservercontrol.clearchat.all - разрешает использовать /clearchat all
- functionalservercontrol.chat.messages-replaces.bypass - у данного игрока слова в сообщении которые должны замениться, не будут заменены.
- functionalservercontrol.chat.delay.bypass - на игрока с данным правом не действует задержка чата
- functionalservercontrol.chat.repeating-message.bypass - игрок с данным правом может писать повторяющиеся сообщения в чате
- functionalservercontrol.chat.blocked-words.bypass - игрок с данным правом может использовать запрещенные слова в чате
- functionalservercontrol.books.blocked-words.bypass - игрок с данным правом может использовать запрещенные слова в книгах
- functionalservercontrol.signs.blocked-words.bypass - игрок с данным правом может использовать запрещенные слова на табличках
- functionalservercontrol.commands.blocked-words.bypass - игрок с данным правом может использовать запрещенные слова в командах
- functionalservercontrol.items.blocked-words.bypass - игрок с данным правом может использовать запрещенные слова в названии/лоре предмета
- functionalservercontrol.notification.blocked-word - игрок с данным правом получит уведомление когда кто-то попытается использовать запрещенное слово
- functionalservercontrol.notification.blocked-command - игрок с данным правом получит уведомление когда кто-то попытается использовать запрещенную команду
- functionalservercontrol.notification.advertise - игрок с данным правом получит уведомлениие когда кто-то попытается прорекламировать IP/Домен
- functionalservercontrol.getstatistic - доступ к команде /fsc getstatistic
- functionalservercontrol.advertise.chat.bypass - игрок с данным правом может использовать айпи/домен в чате
- functionalservercontrol.advertise.signs.bypass - игрок с данным правом может использовать айпи/домен на табличке
- functionalservercontrol.advertise.items.bypass - игрок с данным правом может использовать айпи/домен в названии/лорах предметов
- functionalservercontrol.advertise.commands.bypass - игрок с данным правом может использовать айпи/домен в командах
- functionalservercontrol.advertise.books.bypass - игрок с данным правом может использовать айпи/домен в книгах