Devive Опубликовано 7 мая Поделиться Опубликовано 7 мая InternationalBans — это современный плагин для централизованного управления наказаниями на серверах Minecraft версии 1.21+. Он позволяет объединить несколько серверов в единую сеть и синхронизировать баны, муты и предупреждения между ними через MySQL. Идеальное решение для проектов с несколькими игровыми режимами или лобби. 🔥 Ключевые возможности · Синхронизация наказаний. Бан на одном сервере автоматически блокирует вход нарушителю на всех серверах сети, подключенных к общей базе данных. · Гибкий арсенал команд. Поддерживаются как перманентные, так и временные баны, IP-баны, муты, кики и предупреждения с автобаном (/ban, /tempban, /mute, /warn и др.). · Двойное хранилище. Вы можете использовать быстрый MySQL для синхронизации или простой YAML для локального использования на одном сервере. · Причины с ID. Вместо ввода длинного текста модераторы используют короткие ID (например, 1.1), а плагин сам подставляет готовую причину и настройки из конфига. · Дружелюбный интерфейс. HEX-цвета (&#RRGGBB) в сообщениях, информативный /history, табуляция для всех команд и подробные комментарии в конфигах на русском языке. 🎯 Для кого этот плагин · Владельцы сетей серверов (MiniGames, RPG, SkyBlock и т.д.), где нужна единая система наказаний. · Администраторы отдельных проектов, которым нужен мощный, но понятный инструмент для модерации. · Все, кто ищет альтернативу платным аналогам без потери функциональности. 📥 Установка 1. Поместите .jar-файл в папку plugins каждого сервера сети. 2. Настройте подключение к вашей MySQL базе данных в файле database.yml. 3. Перезапустите серверы или перезагрузите плагин командой /reload. ⚙️ Системные требования · Minecraft Server: версии 1.21+ (Paper, Purpur). · Java: 17 или новее для сервера. · MySQL: версии 5.7+ или 8.0+. 📜 Лицензия Проект защищен пользовательской лицензией. Вы можете бесплатно использовать плагин на своих серверах, включая коммерческие проекты, и даже изменять код под себя. Однако запрещено выкладывать готовый .jar-файл или исходный код на сторонних ресурсах без разрешения автора. 🔗 Ссылки · Скачать плагин (Releases): https://github.com/MrDevive/InternationalBans/releases · Исходный код и документация: https://github.com/MrDevive/InternationalBans Ссылка на комментарий Поделиться на другие сайты Поделиться
BeastMark Опубликовано 2 августа Поделиться Опубликовано 2 августа А у вас плагин через IDE нейросетевую сделан) Объяснение: Комментарий только на одной строке с функцией public FileConfiguration getPluginConfig() { // Возвращаем FileConfiguration return pluginConfig; } Исправление без коммита а чисто комментарием private FileConfiguration pluginConfig; // Исправлено: FileConfiguration вместо YamlConfiguratio Возможно притянуто за уши, но форматирование очень похожее на обычный закос под MD getLogger().info("========================================="); getLogger().info("InternationalBans успешно загружен!"); getLogger().info("Версия: " + getDescription().getVersion()); getLogger().info("База данных: " + (databaseConfig.getBoolean("mysql.enabled") ? "MySQL" : "YAML")); getLogger().info("========================================="); Ну самый весомый аргумент Эмодзи в README.MD Вишенка Custom License в репозитории GIT. Конкретно под ваш случай вам подходит хммм....ЛЮБАЯ. Лучше всего GNU GPL. Цитата Если вы используете хоть строчку кода под GPL, свой итоговый проект вы тоже обязаны сделать открытым (публичным) под той же лицензией. Либо MIT Цитата Разрешает делать с кодом всё (даже продавать), нужно лишь сохранить имя автора Ссылка на комментарий Поделиться на другие сайты Поделиться
BeastMark Опубликовано 2 августа Поделиться Опубликовано 2 августа Что касается самого кода, может быть напишу вам issues Начнем с простого какого-то лешего JoinListener.onPlayerLogin на главном потоке вызывает isBanned...синхронно....на высоком приоритете... Т.е включаем MySQL и получаем гарантированные лаги из-за блокировки JDBC-запроса. getActiveIpBan -- заглушка removeActivePunishmentsByIp -- не реализован Кеш? хммм...пусть нейросеть объяснит Цитата Несогласованность кэша и БД в DatabaseManager. updateCache() при добавлении наказания всегда ставит bannedStatusCache.put(uuid, true), если тип банного — даже если punishment.isActive()==false не проверяется корректно (снятие статуса не отражается локально до вызова invalidateCache), а invalidateCache делает лишний повторный синхронный SQL-запрос сразу после updatePunishmentStatus, увеличивая число блокирующих обращений к БД. Первых вход после старта сервера будет насиловать вашу систему. databaseManager.loadAllPunishments().thenRun( грузит асинхронно данные в фоне при этом великий onEnable по какой то причине не ждёт завершения загрузки. Чем черевато? Ну например тем что если игрок заходит сразу после старта сервера, проверка бана может пройти по неполному кэшу. Это лишь малая часть того что я бегло заметил. Будьте умнее сер, если используете нейроны IDE, используйте и свои. На крайний случай поставьте дополнительного агента который будет рулить не состыковками кода и безопасности. Делайте плагин модульно. Помните модель деградирует с каждым запросом из-за того что токен контекстного окна кушает много чисто на память о том что оно сделало раньше. Новый модуль==новое окно чата. Как избежать проблем сжирания контекста на изучение структуры? Описывайте файлом IDE например для cursor это .cursor для TRAE это как не странно .trae Помещайте туда rules.md В корне проекта создайте AGENTS.MD где опишите то где находятся файлы документации для игрока, разработчика, администратора. Если IDE не умеет то пропишите там же правила, что можно что нельзя. Ссылка на комментарий Поделиться на другие сайты Поделиться
Shomen Опубликовано 3 августа Поделиться Опубликовано 3 августа 8 часов назад, BeastMark сказал: Что касается самого кода, может быть напишу вам issues Начнем с простого какого-то лешего JoinListener.onPlayerLogin на главном потоке вызывает isBanned...синхронно....на высоком приоритете... Т.е включаем MySQL и получаем гарантированные лаги из-за блокировки JDBC-запроса. getActiveIpBan -- заглушка removeActivePunishmentsByIp -- не реализован Кеш? хммм...пусть нейросеть объяснит Первых вход после старта сервера будет насиловать вашу систему. databaseManager.loadAllPunishments().thenRun( грузит асинхронно данные в фоне при этом великий onEnable по какой то причине не ждёт завершения загрузки. Чем черевато? Ну например тем что если игрок заходит сразу после старта сервера, проверка бана может пройти по неполному кэшу. Это лишь малая часть того что я бегло заметил. Будьте умнее сер, если используете нейроны IDE, используйте и свои. На крайний случай поставьте дополнительного агента который будет рулить не состыковками кода и безопасности. Делайте плагин модульно. Помните модель деградирует с каждым запросом из-за того что токен контекстного окна кушает много чисто на память о том что оно сделало раньше. Новый модуль==новое окно чата. Как избежать проблем сжирания контекста на изучение структуры? Описывайте файлом IDE например для cursor это .cursor для TRAE это как не странно .trae Помещайте туда rules.md В корне проекта создайте AGENTS.MD где опишите то где находятся файлы документации для игрока, разработчика, администратора. Если IDE не умеет то пропишите там же правила, что можно что нельзя. ахахаххах вот кому-то рил занятся нечем, ноунейм плагины разбирать BeastMark 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BeastMark Опубликовано 3 августа Поделиться Опубликовано 3 августа 8 часов назад, Shomen сказал: ахахаххах вот кому-то рил занятся нечем, ноунейм плагины разбирать )))) Ну блин на форуме тыщу лет не был надо же с чего то начинать обрусок завидует келси 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
В теме 5 сообщений
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти