Releases: pnFolder/pnClans
Release list
Каналы обновлений определяются только по тегу
Каналы обновлений определяются только по тегу
Обновление упрощает логику каналов: pnClans больше не зависит от GitHub-флага Pre-release и определяет STABLE/BETA/ALPHA только по тегу версии.
Новое
- Добавлена независимая от GitHub Pre-release классификация каналов обновлений.
Улучшено
- Упрощено определение канала:
vX.Y.Zсчитается STABLE,vX.Y.Z-beta.N— BETA,vX.Y.Z-alpha.N— ALPHA. - GitHub-флаг
prereleaseтеперь влияет только на отображение релиза на GitHub и не влияет на работу автообновления pnClans.
Исправлено
- Исправлен случай, когда beta/alpha-релиз с правильным тегом игнорировался после ручного снятия GitHub-флага Pre-release.
- Исправлен случай, когда канал релиза мог зависеть одновременно от тега и состояния GitHub-флага.
Важно
1.2.2-beta.2публикуется как GitHub Prerelease для совместимости с уже выпущенным1.2.2-beta.1. Начиная с этой версии галочку Pre-release можно включать или выключать без влияния на канал обновления.
Настраиваемые интерфейсы и безопасные обновления
Настраиваемые интерфейсы и безопасные обновления
Администраторы получают более предсказуемую конфигурацию, безопасные миграции и каналы обновлений, а игроки — исправленные и более гибко настраиваемые клановые интерфейсы.
Новое
- Добавлены каналы обновлений
STABLE,BETAиALPHA. - Добавлен параметр
updateChannelс русским описанием назначения каждого канала. - Добавлен выбор самой новой допустимой версии по SemVer внутри выбранного канала.
- Добавлена автоматическая публикация GitHub prerelease для версий
-beta.Nи-alpha.N. - Добавлена скрытая настройка
autoUpdate: при отсутствии ключа автоматическое обновление включено; для отключения администратор может вручную добавитьautoUpdate: false. - Добавлена метрика выбранного канала обновлений.
- Добавлен
MenuConfigValidator, который проверяет обязательные GUI-ID, материалы, слоты, названия, описания и списки слотов. - Добавлен общий
ConfigValidatorдля опасных и противоречивых значений магазина, квестов, битв и казны. - Добавлены резервные
.bak-копии старыхquests.ymlиbattles.ymlперед schema migration. - Добавлены конфигурируемые параметры быстрых операций казны: суммы, слоты, timeout ввода и слова отмены.
- Добавлены конфигурационные меню
noClanMenu,clanColorMenuиtreasuryHistoryMenu. - Добавлены отдельные GUI-ID для заблокированного слота и декоративных элементов кланового сундука.
- Добавлены отдельные GUI-ID предупреждений об активной битве при выходе или роспуске клана.
Для игроков
- Улучшен экран игрока без клана: оформление теперь берётся из конфигурации, а не создаётся непосредственно в UX-коде.
- Улучшено меню визуальной метки соклановцев: цвета, состояния, материалы, названия и описания управляются конфигурацией.
- Улучшена история казны: карточки операций и навигация используют конфигурационные шаблоны и ID.
- Улучшены меню участников, прав пользователя, ролей, рейтинга и улучшений: удалены пустые fallback-предметы, которые могли отображаться как обычный
STONEбез названия и описания. - Улучшено клановое хранилище: заблокированные слоты и декоративные элементы теперь имеют собственные конфигурационные шаблоны.
- Улучшены сообщения создания клана и настройки визуальной метки: пользовательские тексты и звуки перенесены в стандартную Action-конфигурацию.
Для администраторов
menus.ymlтеперь автоматически дополняется отсутствующимиitems.<id>, а не только отсутствующими верхнеуровневыми разделами.- Backfill сравнивает существующий
menus.ymlс чистыми дефолтамиMenusConfig(), поэтому отсутствующие ID не теряются после десериализации старого файла. - После backfill конфигурация повторно загружается в тот же запуск, поэтому новые ключи доступны сразу без второго рестарта.
- Существующие значения администратора не заменяются при добавлении новых полей и GUI-ID.
- Неизвестные addon-ключи и большая часть структуры существующего YAML сохраняются вместо полного пересоздания файла.
/clan admin reloadиспользует тот же безопасный путь загрузки, миграции, backfill и валидации, что и запуск сервера.- Старые кастомные built-in квесты сохраняются при обновлении схемы и не заменяются дефолтными определениями.
- Кастомный
displayклановых битв сохраняется при schema migration. - При проблеме обязательного GUI-ID сервер выводит точный путь вида
menus.yml.<menu>.items.<id>вместо молчаливого создания пустого предмета. - Настройки казны больше не являются декоративными: быстрые суммы, слоты, timeout и cancel inputs реально используются интерфейсом.
- Удалён дополнительный захардкоженный звук казны; обратная связь управляется через Actions из конфигурации.
Улучшено
- Улучшена интеграция PlayerPoints: reflection теперь подбирает совместимую перегрузку
give,takeиlookпо типам аргументов, а не только по имени и количеству параметров. - Улучшена безопасность миграций конфигурации: перед изменением старой схемы сохраняется исходный файл, а пользовательские значения восстанавливаются поверх новых defaults.
- Улучшена конфигурационная архитектура GUI: пользовательские элементы используют экземпляры
GuiItemConfigпо стабильным ID вместо локальных названий, lore, материалов и слотов в UX-классах. - Улучшена валидация
entrySlots: проверяются диапазоны и повторяющиеся слоты. - Улучшена обработка отсутствующих шаблонов: GUI больше не подменяет их безымянными default-предметами.
- Улучшена система обновлений: проверка новых версий выполняется независимо от наличия старого
checkUpdates, а канал определяет допустимый уровень релиза.
Исправлено
- Исправлена миграция
quests.yml, которая могла перезаписать изменённые администратором встроенные квесты новыми дефолтами. - Исправлена миграция
battles.yml, которая могла сбросить кастомизированное отображение битв. - Исправлен backfill, который раньше не доходил до отдельных ключей внутри
items:. - Исправлен случай, когда
userPermissionsMenu.permissionотсутствовал как самостоятельный ключ и скрытно наследовался из другого меню. - Исправлены пустые
GuiItemConfig()fallback в редакторе ролей, правах ролей, рейтинге кланов и меню улучшений. - Исправлено хранение части lore подтверждения выхода и роспуска клана непосредственно в Kotlin-коде.
- Исправлена ситуация, когда новые настройки могли физически не появиться в существующем YAML и оставались доступны только через Kotlin-defaults.
- Исправлена совместимость новых конфигурационных изменений со сборками Java 21 и Java 25.
Удалено / заменено
- Удалены дополнительные
Supplemental*loaders и второй параллельный способ чтения конфигурации. - Удалены скрытые fallback-шаблоны GUI, которые маскировали отсутствующие ID.
- Удалена генерация старого
checkUpdatesкак пользовательского переключателя проверки обновлений. - Удалена генерация
autoUpdateиз обычного конфига; отсутствие параметра теперь означает включённое автообновление. - Заменено полное переписывание части YAML при backfill на точечное добавление отсутствующих полей и ID.
Важно
Это BETA-сборка для проверки новой конфигурационной архитектуры и миграций. Перед обновлением рекомендуется сохранить папку
plugins/pnClans; автоматические.bakсоздаются для старыхquests.ymlиbattles.yml, но ручная резервная копия всё равно полезна.
По умолчанию используется канал
BETA, поэтому сервер будет получать новые стабильные и beta-релизы. КаналSTABLEполучает только стабильные версии, аALPHA— любые опубликованные alpha, beta и stable-сборки. Draft-релизы игнорируются.
В этом beta-релизе закрыта проблема отсутствующих обязательных GUI-ID и пустых fallback-предметов. Полный перенос абсолютно всех оставшихся динамических фрагментов старых интерфейсов в конфигурацию продолжится в следующих beta-сборках.
pnClans v1.2.1 — Stability Update: Shop, Quests & Battle Lobby
pnClans v1.2.1 — Stability Update: Shop, Quests & Battle Lobby
Кратко
v1.2.1 — стабилизационный релиз после большого обновления v1.2.0. Основной фокус версии — клановый магазин, квесты, организованные клановые битвы, MMR и конфигурация.
Главная задача обновления — убрать опасные сценарии частичных покупок и потерянных наград, сделать битвы понятными и управляемыми через полноценный Battle Lobby, отделить официальный боевой MMR от обычного PvP и перенести новые изменяемые параметры и сообщения в конфигурацию.
После знакомства с обновлением присоединитесь к Discord: https://discord.gg/TFdnyvMft. В канале «Отзывы» можно оставить общий отзыв, сообщить о баге или предложить идею для следующей версии.
Для игроков
- Добавлен полноценный Battle Lobby после принятия кланового вызова.
- Принятие вызова больше не запускает бой мгновенно и не телепортирует случайный состав на арену.
- Игроки могут самостоятельно войти в боевой состав или выйти из него.
- Стороны подтверждают готовность через состояние READY.
- После готовности обеих сторон запускается настраиваемый обратный отсчёт перед переносом на арену.
- Если выбранный участник выходит с сервера или состав меняется, готовность сбрасывается и старт отменяется до повторного READY.
- Составы больше не формируются автоматически по алфавиту из первых онлайн-участников клана.
- Улучшено меню клановых битв: отображаются состояния lobby, countdown, составы, READY/WAIT, соперник, счёт и доступное следующее действие.
- Улучшена защита friendly fire: теперь учитываются не только прямые удары игрока, но и снаряды, выпущенные игроком.
- Обычные PvP-убийства в мире больше не изменяют официальный клановый MMR.
- MMR теперь изменяется через организованные клановые битвы, что делает рейтинг значительно устойчивее к фарму обычных убийств.
- Требования магазина по квестам теперь проверяют завершение квеста в текущем цикле, а не одно историческое завершение навсегда.
- Покупки в клановом магазине получили более точные причины отказа вместо одного общего сообщения.
- При проблемах с валютой, журналом покупок или наградой магазин теперь сообщает более корректный результат и не продолжает опасную операцию вслепую.
- Награды квестов больше не теряются только потому, что нужный получатель временно офлайн: ожидающая выдача сохраняется и обрабатывается при доступности игрока.
Для администраторов
- Существенно расширена настройка
battles.yml. - Добавлена настройка времени жизни Battle Lobby.
- Добавлена настройка длительности countdown перед стартом боя.
- Добавлена настройка автоматического включения организаторов вызова в первоначальный состав.
- Добавлена настройка сохранения инвентаря при смерти в организованной битве.
- Добавлена отдельная настройка сохранения уровня и опыта.
- Добавлена настройка friendly fire внутри организованных битв.
- Добавлена настройка принудительного удержания участников внутри радиуса арены.
- Добавлена настройка технического поражения, когда у стороны не остаётся онлайн-участников.
- Добавлен настраиваемый порог подсветки соперников с близким MMR.
- Расширена конфигурация отображения Battle GUI: материалы, состояния, READY/WAIT, форматы счёта, причины пустого списка, действия и тексты интерфейса.
- Новые игровые сообщения Battle Lobby перенесены в
messages.ymlи используют стандартную Action-систему pnClans. - Добавлены отдельные сообщения для открытия lobby, входа/выхода из состава, READY, countdown, изменения состава, офлайн-участника, истечения времени, ошибки арены, отмены старта, ошибки телепортации и других состояний.
- Добавлены конфигурируемые сообщения для новых общих отказов и отключённых модулей, которые раньше местами выводились напрямую из кода.
- Добавлен безопасный backfill новых параметров: существующие YAML-файлы дополняются недостающими ключами без намеренного сброса уже загруженных пользовательских значений.
shop.enabledтеперь проверяется непосредственно сервисом покупки, а не только видимостью кнопки GUI.- Повреждённый
shop-purchases.jsonбольше не сбрасывается молча в пустое состояние. Магазин закрывает покупки до исправления файла и перезагрузки, чтобы не обнулить дневные лимиты. - Запись дневного лимита покупки выполняется до выдачи необратимых наград.
- Сохранение
shop-purchases.jsonвыполняется через временный файл и атомарную замену, когда файловая система это поддерживает. - Перед списанием валюты магазин предварительно валидирует детерминированные награды: материалы, сериализованные предметы, enchantments, console commands, barter/chance-конфигурацию.
- Возврат валюты теперь имеет реальный результат успеха/ошибки для Clan Points, Vault и PlayerPoints.
- Ошибка возврата денег больше не игнорируется молча и отдельно журналируется.
- Добавлен новый
quest-rewards.json— журнал доставки наград квестов. - Завершение квеста теперь не фиксируется, если невозможно надёжно записать информацию о будущей выдаче награды.
- Награды квестов используют состояния
PENDING,CLAIMING,DELIVEREDиFAILED, чтобы уменьшить риск дублей после сбоя или рестарта. - Неоднозначная награда, которая могла быть выдана непосредственно перед аварийным завершением сервера, не повторяется автоматически: сервер пишет подробную ошибку для ручной проверки вместо потенциального дюпа.
Клановый магазин
Исправлено
- Убрано опасное поведение, при котором валюта могла быть возвращена после уже частично выданной необратимой награды, создавая возможность бесплатной частичной покупки.
- Добавлено различие между полной ошибкой награды и ситуацией, когда выдача уже началась (
REWARD_PARTIAL). - Если выдача ещё не началась, магазин может безопасно вернуть валюту и снять зарезервированный лимит покупки.
- Если выдача уже началась, автоматический refund не выполняется, чтобы не создавать дюп; ситуация подробно записывается в лог.
- Ошибка сохранения purchase ledger больше не остаётся незамеченной после списания средств.
- Исправлена проверка успешности refund через Vault и Clan Points.
- Добавлена проверка фактического результата возврата через PlayerPoints.
- Добавлена предварительная валидация статической награды и настраиваемых Actions до списания валюты.
- Повреждение purchase ledger теперь переводит магазин в безопасный режим вместо молчаливого обнуления лимитов.
Добавлено
- Причины отказа
SHOP_DISABLED,LEDGER_FAILED,REFUND_FAILED,REWARD_FAILEDиREWARD_PARTIAL. - Резервирование дневной покупки до выполнения необратимых Actions.
- Безопасное снятие резерва, если награда не начала выполняться и средства были возвращены.
- Более подробное серверное журналирование проблем покупки.
Клановые квесты
Исправлено
- Прогресс обычного шага квеста теперь откатывается в памяти, если
saveClan()завершился ошибкой. - Завершение квеста больше не сохраняется раньше, чем создана надёжная запись доставки его награды.
- Награда для
LEADERбольше не зависит от того, находится ли лидер онлайн непосредственно в момент завершения. - Для
ACTOR, если конкретный actor отсутствует, используется безопасный fallback на лидера клана, когда это возможно. - Клановые очки и Action-награды теперь отслеживаются отдельно по состояниям доставки.
- Требования магазина к повторяемым квестам больше не остаются открытыми навсегда после единственного исторического завершения.
Добавлено
- Долговечная очередь выдачи наград
quest-rewards.json. - Выдача ожидающих наград при запуске и при входе игрока.
- Защита от автоматического повторения неоднозначно выданной награды после crash/restart.
Клановые битвы
Изменено
Старый цикл:
Challenge -> Accept -> автоматический выбор первых online-игроков -> мгновенный teleport -> Battle
Новый цикл:
Challenge -> Accept -> Battle Lobby -> выбор состава -> READY обеих сторон -> Countdown -> Teleport -> Battle -> Result -> Return
Добавлено
- Отдельное состояние Battle Lobby.
- Ручной состав каждой стороны.
- Вход и выход игрока из боевого состава.
- READY каждой стороны.
- Настраиваемый countdown.
- Сброс READY при изменении состава.
- Проверка выбранных участников непосредственно перед стартом.
- Отмена старта, если участник вышел с сервера.
- Отдельное резервирование арены для lobby до начала боя.
- Настраиваемые сообщения всех этапов lobby.
- Новые состояния и placeholders для GUI битв.
Удалено / заменено
- Удалён автоматический выбор первых онлайн-участников клана по алфавиту.
- Удалён мгновенный старт организованной битвы сразу после принятия вызова.
- Удалено автоматическое изменение MMR за обычные PvP-убийства и смерти в открытом мире (
+10 / -5). - Официальный MMR оставлен за организованными клановыми битвами.
Конфигурация
Версия продолжает переход pnClans к configuration-driven архитектуре.
messages.ymlотвечает за игровые сообщения и Action-уведомления.battles.ymlотвечает за механику и отображение клановых битв.- Новые изменяемые значения Battle Lobby не зафиксированы в сервисной логике без возможности настройки.
- При обновлении недостающие новые ключи могут быть добавлены автоматически через backfill.
- Существующие пользовательские значения не должны намеренно заменяться дефолтными только из-за появления новой версии схемы.
Полный перенос всех старых меню и старых сообщений плагина в configuration-driven формат не является частью v1.2.1 и будет продолжен отдельно, чтобы не смешивать стабилизационный релиз с большим UI/config рефакторингом.
Технические изменения
- CI теперь проверяет и собирает pnClans отдельно под Java 21 и Java 25.
- Release содержит два самостоятельных Shadow JAR.
- Улучшена обработка Projectile в проверке friendly fire.
- Добавлена защита от продолжения покупки при неисправном purchase ledger.
- Добавлена долговечная модель выдачи наград квестов с защитой от повторной выдачи.
- Улучшена диагностика ошибок магазина и квестовых наград.
- Сохранена совместимость текущего публичного API v5; этот стабилизационный релиз не требует очередного повышения API-версии.
Совместимость
- Minecra...
pnClans v1.2.0 — Pink Alliance: квесты и клановые битвы
Кратко
Версия расширяет клановые квесты, добавляет организованные битвы на аренах и вводит подробную статистику участников. Новые интерфейсы оформлены в общей стилистике pnClans и объясняют цели, прогресс, награды, условия боя и доступные действия.
После знакомства с обновлением присоединитесь к Discord: https://discord.gg/TFdnyvMft. Оставьте в канале «Отзывы» общий отзыв, сообщение о баге или ошибке либо идею для развития плагина.
Для игроков
- Расширен каталог с 3 до 17 встроенных квестов.
- Реализован общий прогресс квестов с зависимостями и автоматическими наградами.
- Переработано меню квестов с фильтрами, страницами, состояниями, прогрессом и подробным описанием каждой цели.
- Добавлены клановые битвы с вызовом соперника, подтверждением, ареной, ограниченной областью, лимитом убийств и таймером.
- Добавлены команды
/clan battle,/clan battle <клан>,/clan battle accept <challenge-id>и/clan battle decline <challenge-id>. - Добавлена команда
/clan stats [игрок] [day|week|month|all]для просмотра убийств, смертей и K/D участника текущего клана. - Добавлена статистика участника за день, текущую неделю, текущий месяц и всё время.
- Добавлено предупреждение о техническом поражении перед роспуском клана во время активной битвы.
Для администраторов
- Расширен файл
quests.ymlдля настройки циклов, клановых очков, получателей наград и оформления квестов. - Добавлен файл
battles.ymlдля настройки арен, точек появления, радиуса, длительности, размера составов, MMR и клановых очков. - Установлено значение
enabled: falseпо умолчанию вbattles.ymlдо явной настройки и проверки арены. - Добавлено требование
pnclans.adminдля всех команд/clan admin; право по умолчанию доступно операторам сервера. - Добавлена поддержка всех команд
/clan adminиз консоли. - Добавлено требование
ClanPerms.Action.START_BATTLEдля отправки, принятия и отклонения вызова. - Добавлена команда
/clan admin info <clan>для просмотра состояния клана. - Добавлена команда
/clan admin stats <player> [day|week|month|all]для просмотра статистики участника. - Добавлена команда
/clan admin mmr <add|remove|set> <clan> <amount>. - Добавлена команда
/clan admin bank <add|remove|set> <clan> <amount>с алиасомtreasury. - Добавлена команда
/clan admin points <add|remove|set> <clan> <amount>. - Добавлена команда
/clan admin level set <clan> <1..5>. - Добавлена команда
/clan admin member remove <player>с защитой лидера от случайного удаления. - Добавлена команда
/clan admin quest reset <clan> <quest-id>. - Добавлена команда
/clan admin battle stop <clan> [winner-clan]. - Добавлены команды
/clan admin saveи/clan admin reload. - Добавлено журналирование административных изменений в консоль сервера.
- Добавлено приглашение в Discord в конце успешного запуска плагина с предложением создать тему на форуме или написать в чат.
Для разработчиков
- Повышена версия публичного API с
4до5. - Подключена отправка отменяемых
ClanQuestProgressEventиClanQuestCompleteEvent. - Добавлено поле
actorв события прогресса и завершения квеста. - Сохранены прежние JVM-конструкторы событий квестов через
@JvmOverloads. - Добавлены публичные типы
ClanQuestProgress,ClanBattleиClanBattleEndReason. - Расширен интерфейс
Clan: добавленыbattleWins,battleLosses,questProgressиsetQuestProgress(). - Добавлены отменяемые события
ClanBattleChallengeEventиClanBattleStartEvent. - Добавлено итоговое событие
ClanBattleEndEvent. - Добавлен источник транзакций
ClanPointsSource.BATTLE. - Добавлено клановое право
ClanPerms.Action.START_BATTLE. - Добавлено значение
BATTLESдляOpenGuiAction. - Добавлена причина отказа
ClanOperationRejection.PERSISTENCE_FAILEDдля операций, которые не удалось сохранить. - Добавлены PlaceholderAPI-ключи
%pnclans_battle_wins%и%pnclans_battle_losses%. - Добавлены PlaceholderAPI-алиасы
%pnclans_wins%и%pnclans_losses%. - Добавлены внутренние ключи
{clan_battle_wins}и{clan_battle_losses}для сообщений и GUI. - Добавлено сохранение прогресса квестов в JSON и SQLite.
- Добавлено сохранение суммарных побед и поражений в битвах в JSON и SQLite.
- Добавлено сохранение ежедневной статистики убийств и смертей в JSON и SQLite.
Добавлено
- Добавлены цели квестов для вступлений, домов, казны, магазина, участия в битвах, побед, убийств и урона на арене.
- Добавлены однократные, ежедневные и недельные циклы пользовательских квестов по UTC.
- Добавлены получатели
ACTOR,LEADERиONLINE_MEMBERSдля настраиваемыхAction-наград. - Добавлено начисление
rewardPointsнепосредственно клану независимо от получателяAction-наград. - Добавлен подбор соперников с учётом онлайна, активных матчей и ожидающих вызовов.
- Добавлено резервирование арены за одним активным матчем.
- Добавлено удержание участников внутри настроенного радиуса арены.
- Добавлен возврат участников на исходные позиции после боя, выхода из клана или следующего входа на сервер.
- Добавлено сохранение инвентаря, уровня и опыта после смерти в клановой битве.
- Добавлена защита участников битвы от урона союзников и посторонних игроков.
Изменено
- Переработаны названия и описания новых предметов и кнопок по общей палитре и структуре GUI pnClans.
- Изменено расположение карточек квестов: они занимают только внутренние слоты декоративной рамки.
- Установлено расположение карточек соперников только во внутренних слотах декоративной рамки.
- Изменён подсчёт требований уровней: повторные циклы учитываются как отдельные завершения.
- Изменены зависимости квестов: однажды завершённый квест постоянно открывает следующий.
- Изменено поведение
quests.ymlсenabled: false: прогресс и награды останавливаются, а требования магазина и уровней отключаются. - Изменено меню магазина: обязательные квесты показываются перед финальной строкой действия.
- Изменены убийства на арене: они обновляют общую статистику и обычные PvP-квесты, но не применяют базовые изменения MMR и
clanPointsPerPlayerKillповерх боевых наград. - Изменено сохранение игрового времени: административное сохранение создаёт контрольную точку и не завершает активную сессию игрока.
- Изменены карточки участников для явного обозначения формата убийств и смертей и расчёта периодов по UTC.
Исправлено
- Исправлена миграция существующего
quests.ymlбез поляschemaVersion. - Исправлена проверка обязательных квестов при покупке товара.
- Исправлена проверка завершений квестов при повышении уровня клана.
- Исправлено значение
kickedвClanMemberLeaveEventпри исключении участника. - Исправлена нормализация регистра идентификаторов клановых домов.
Совместимость
- Сохранена загрузка существующих данных кланов: новые счётчики получают
0, а новые карты прогресса и статистики остаются пустыми. - Сохранена совместимость старых конструкторов событий квестов для уже собранных аддонов.
- Требуется обработать
ClanPointsSource.BATTLEв аддонах с исчерпывающимwhenпо источникам очков. - Проверена сборка pnClans и примера аддона для Java
21и Java25.
Миграция
- Создайте резервную копию всей папки
plugins/pnClans, включая базу данных, данные сундуков и YAML-конфигурации. - Замените JAR плагина и выполните первый запуск без игроков на сервере.
- Оставьте
enabled: falseвbattles.yml, укажите точный мир, безопасные точкиchallengerиdefenderи подходящийradius, затем проверьте арену перед включением битв. - Проверьте встроенные квесты, награды и пользовательские идентификаторы в обновлённом
quests.yml. - Проверьте все значения
conditions.requiredQuestsвshop.yml: каждый идентификатор должен существовать вquests.yml. - Перенесите новые строки главной сводки, карточек состава и требований уровней из стандартного
menus.ymlверсии 1.2.0, если используется существующий настроенный файл. - Перенесите разделы
quests,battlesиupgrade.insufficientQuestsиз стандартногоmessages.yml, если требуется изменить встроенные тексты и звуки. - Перекомпилируйте аддоны против API
5, если они используют новые типы, события или поля.
Важно
При миграции
quests.ymlзаменяются весь разделdisplayи квесты со встроенными идентификаторами. Сохраняются квесты с дополнительными пользовательскими идентификаторами.
При миграции
battles.ymlзаменяется разделdisplay, а значениеenabled, правила и арены сохраняются. Обязательно проверьте старое значениеenabledдо входа игроков.
Статистика за день, неделю и месяц начинает накапливаться после обновления. Период
allсохраняет прежние суммарные убийства и смерти.
Действия, выполненные до обновления, не засчитываются в квесты: существующие кланы начинают с нулевого прогресса.
Активные битвы, ожидающие вызовы и история отдельных матчей между перезапусками не сохраняются. При штатной остановке активный матч завершается без результата и наград, а позиции участников восстанавливаются при следующем входе.
Перезагрузка конфигурации блокируется во время активной битвы. Сначала завершите матч обычным способом или командой
/clan admin battle stop.
Успешная команда
/clan admin reloadочищает все ожидающие боевые вызовы.
Изменение
storageTypeчерез/clan admin reloadне переключает активное хранилище. Для смены JSON и SQLite требуется полный перезапуск сервера; данные автоматически между хранилищами не переносятся.
Используйте для арен отдельный защищённый регион или мир. pnClans ограничивает участников радиусом и блокирует прямой PvP с посторонними, но не заменяет полноценный плагин защиты регионов.
Получатель
LEADERдляAction-награды срабатывает только тогда, когда лидер находится онлайн. КлановыеrewardPointsначисляются независимо от онлайна лидера.
pnClans v1.1.5 - Аудит безопасности, исправления и оптимизация
pnClans v1.1.5 — аудит безопасности, исправления и оптимизация
Релиз содержит исправления, найденные при полном аудите проекта. Основной функционал кланов сохранён.
Безопасность
- Удалён встроенный Discord webhook и автоматическая отправка stack trace,
config.yml,menus.ymlиmessages.ymlво внешний сервис. - ErrorReporter теперь работает локально через стандартный лог сервера, с подавлением повторяющихся ошибок и корректным shutdown.
- Автообновление отключено по умолчанию для новых конфигураций.
- Автообновление использует только официальный репозиторий
pnFolder/pnClans, HTTPS и доверенные GitHub asset-хосты. - Автообновление выбирает JAR под Java 21 или Java 25, ограничивает размер загрузки, проверяет
plugin.ymlи выполняет атомарную замену файла. - Команда
/clanтеперь проверяетpnclans.use. - Права
GuiItemConfig.permissionпроверяются при отображении и повторно при клике. - Добавлена защита от кликов и drag-событий по GUI, уже отменённых другими плагинами.
- Доступ к клановому хранилищу централизованно проверяет членство, право
OPEN_CHESTи настройку хранилища. - Нельзя открыть хранилище через обходной
OpenGuiActionбез проверки сервиса. - Сериализация предметов ограничена 54 слотами и максимальным размером payload.
Исправления корректности
- Исправлена обработка
NaNи бесконечных значений в операциях казны. - Vault больше не приводит к необработанному исключению при отсутствии экономики.
- При неудачном зачислении средств игроку баланс казны восстанавливается.
- Событие
ClanSavedEventотправляется только после успешного сохранения. - JSON, chest-файлы, магазинный ledger и
shop.ymlзаписываются через временный файл с атомарной заменой. - SQLite-соединение закрывается при выключении плагина.
- Изменения ролей не позволяют создать нескольких лидеров.
- Передача лидерства откатывается, если второй шаг операции не выполнен.
- При отменённом удалении участника GUI больше не показывает ложное сообщение об успешном исключении.
- Удаление дома требует
DELETE_ANY, а не только право установки дома. - При расформировании клана событие вызывается до возврата средств из казны.
- Пользовательские права ролей и персональные overrides сохраняются в JSON и SQLite.
- В редакторе персональных прав разделены эффективное право и наличие персонального override.
- Справочное меню использует данные клана открывшего его игрока, а не первого клана на сервере.
- Перезагрузка сначала сохраняет данные, закрывает старые GUI и только затем перечитывает конфигурации и кланы.
Оптимизация
- Убран подробный лог полного состава клана из частого пути синхронизации подсветки.
- Синхронизация подсветки после сохранения клана объединяется в одну операцию на тик.
- Начисление очков активности не обрабатывает один и тот же клан повторно в одном тике.
- Клановый чат больше не выполняет Bukkit-операции из async-потока: отправка переносится на серверный поток.
- Удалена неиспользуемая зависимость KGui из shaded JAR.
- Размер итогового JAR уменьшен.
Сборка и файлы
pnClans-1.1.5-java21-all.jar— для Java 21.pnClans-1.1.5-java25-all.jar— для Java 25.- Устанавливайте только один файл.
- Оба JAR собраны из одного исходного кода и имеют одинаковую функциональность.
Проверка
testиbuildдля Java 21: успешно.testиbuildдля Java 25: успешно.- Пример
clan-missions-addon: успешно собран против Java 25 API JAR. - Java 21 bytecode: major version
65. - Java 25 bytecode: major version
69.
Важно после обновления
- Если ранее использовалось автоматическое обновление, проверьте значение
autoUpdateвconfig.yml. - Старый webhook, который присутствовал в предыдущих версиях проекта, необходимо отозвать/удалить в Discord: удаление из нового JAR не отзывает уже опубликованный секрет из истории Git.
- При использовании кастомных GUI проверьте заданные permissions для кнопок.
Скачать
pnClans v1.1.4 - Оптимизация и чистка кода
pnClans v1.1.4 — оптимизация и чистка кода
Что изменилось
- Убран подробный диагностический
INFO-лог из синхронизации подсветки соклановцев. Ранее он формировал и записывал полный список участников при каждом обновлении, создавая лишнюю нагрузку на диск и консоль. - Оптимизирован сервис начисления очков за активность: один и тот же клан не обрабатывается повторно в рамках одного серверного тика, даже если онлайн несколько его участников.
- Поведение подсветки, начисления очков, лимитов и сохранения данных не изменено.
- Сохранены два варианта сборки для разных версий Java.
Файлы
pnClans-1.1.4-java21-all.jar— для Java 21.pnClans-1.1.4-java25-all.jar— для Java 25.
Устанавливайте только один файл.
Проверка
- Сборка Java 21 прошла успешно.
- Сборка Java 25 прошла успешно.
- Пример аддона успешно собран против Java 25 API JAR.
- Функциональность предыдущего релиза сохранена: кланы, GUI, роли, права, казна, хранилище, дома, чат, PvP, подсветка, очки, магазин, награды, квестовый каталог и API 4.
Загрузка
pnClans v1.1.3 - Java 21 и Java 25
pnClans v1.1.3 — два JAR для Java 21 и Java 25
В этом релизе один и тот же pnClans собран в двух вариантах. Выберите только один JAR в зависимости от Java на сервере.
Какой файл использовать
| Файл | Требуемая Java | Для чего |
|---|---|---|
pnClans-1.1.3-java21-all.jar |
Java 21 или новее | Рекомендуемый вариант для серверов на Java 21 |
pnClans-1.1.3-java25-all.jar |
Java 25 или новее | Вариант для серверов на Java 25 |
Не устанавливайте оба файла одновременно. Это два варианта одного плагина, а не два разных плагина.
Что изменилось
- Добавлена параметризованная сборка через
-PjavaTarget=21или-PjavaTarget=25. - Java 21 JAR собран с JVM bytecode major version
65. - Java 25 JAR собран с JVM bytecode major version
69. - Оба файла являются shaded JAR и содержат все необходимые встроенные зависимости pnClans.
- Обновлены пример аддона и
ADDON_API.md: аддоны можно компилировать против Java 21 или Java 25 API JAR. - Функциональность плагина одинаковая в обоих вариантах: подсветка соклановцев, клановые очки, магазин, награды, квестовый каталог, API 4, события и миграции из
v1.0.6описаны в полном changelog релизаv1.1.2.
Сборка из исходников
.\gradlew.bat clean build "-PjavaTarget=21" --no-daemon
.\gradlew.bat build "-PjavaTarget=25" --no-daemonРезультаты:
build/libs/pnClans-1.1.3-java21-all.jar
build/libs/pnClans-1.1.3-java25-all.jar
Обновление
- Проверьте версию Java командой
java -version. - Удалите старый JAR pnClans из папки
plugins. - Положите туда только подходящий файл из этого релиза.
- Не меняйте данные кланов и конфигурацию: формат данных и функциональность не изменились.
Полное описание подсветки, магазина, клановых очков, наград, API 4, событий, миграции и ограничений находится в релизе v1.1.2.
pnClans v1.1.2 - Полное обновление: подсветка, очки, магазин, квесты, API 4
pnClans v1.1.2
Полное обновление после v1.0.6
Релиз собран для:
- Paper API 1.21.11
- Java 25
- Paper 1.18+
Добавлено:
- подсветка соклановцев;
- клановые очки;
- клановый магазин;
- каталог квестов;
- публичный API 4;
- улучшенная персистентность данных.
Подсветка соклановцев
Добавлены два режима отображения:
ARMOR— виртуальная цветная броня поверх настоящей;GLOW— светящийся контур вокруг соклановца.
Доступно 9 цветов:
AQUA, BLUE, DARK_AQUA, GREEN, RED, GOLD, YELLOW, LIGHT_PURPLE, WHITE.
Настройки доступны через меню клана:
- выбор режима;
- включение и выключение подсветки;
- выбор цвета;
- сброс настроек к стандартным.
Подсветка отображается только участникам одного клана.
Синхронизация выполняется при:
- входе и выходе игрока;
- возрождении;
- смене мира;
- создании и сохранении клана;
- расформировании клана;
- запуске сервера.
Реализация использует PacketEvents, встроенный в JAR с relocation. Ошибка подсветки не прерывает игровой процесс.
Новые права:
TOGGLE_COLOR;TOGGLE_HIGHLIGHT_MODE.
Новая настройка:
clanHighlightColors:Клановые очки
Добавлена новая валюта клана:
- баланс
Clan.points; - журнал операций
pointsLogs; - дневной лимит активности.
Начисление очков
За убийства игроков:
clanPointsPerPlayerKill: 10За убийства мобов:
clanPointsPerMobKill:
ZOMBIE: 1
SKELETON: 1
CREEPER: 2
SPIDER: 1
WITHER: 50
ENDER_DRAGON: 100За активность участников:
- 1 очко по умолчанию за 10 минут;
- защита от AFK;
- дневной лимит по умолчанию — 100 очков на клан.
Активностью считаются движение, чат, команды, взаимодействие и нанесение урона.
Состояние очков сохраняется между перезапусками.
Плейсхолдеры:
%pnclans_points%;{clan_points}.
API очков:
ClanPoints.award();ClanPoints.spend().
Источники операций: PLAYER_KILL, MOB_KILL, ACTIVITY, QUEST, SHOP, ADMIN.
Типы операций: AWARD, SPEND, ADMIN_ADJUSTMENT.
Клановый магазин
Добавлен новый раздел магазина в главном меню.
- кнопка магазина — слот 30;
- 6 рядов;
- 21 слот товаров;
- категории и сортировка настраиваются;
- поддерживаются редкости товаров;
- добавлена постраничная навигация;
- отображаются балансы всех валют.
Файл конфигурации:
shop.yml
Версия схемы:
schemaVersion: 8Стандартные категории: Все товары, Еда, Оружие, Ресурсы, Редкое.
Стандартные редкости: common, valuable, rare, legendary.
Условия покупки
Поддерживаются минимальный уровень клана, минимальное количество участников, необходимые квесты, дневной лимит клана и общий дневной лимит сервера.
Способы оплаты
CLAN_POINTS— очки казны клана;VAULT— монеты игрока;PLAYER_POINTS— бонусные очки игрока.
Перед покупкой проверяются актуальная цена, доступность валюты, разрешения игрока и ограничения товара.
После /clan reload старое окно покупки не позволит купить товар по устаревшей цене.
Награды
Поддерживаются:
!item_give;!item_reward;!console_command.
Плейсхолдеры наград: {player}, {player_name}, {product}, {quantity}, {clan}.
Предметы больше 64 единиц автоматически разбиваются на стаки. Если инвентарь заполнен, предметы выпадают рядом с игроком.
Если награда не может быть выдана, покупка отменяется, а средства возвращаются игроку.
Сообщения магазина
Поддерживаются success, insufficientFunds, currencyUnavailable, noPermission, shopChanged, requirementsNotMet, clanLimitReached, globalLimitReached, cancelled.
Квесты
Добавлена кнопка «Клановые квесты» в главном меню.
Файл конфигурации:
quests.yml
Типы целей:
PLAYER_KILL;MOB_KILL;ACTIVITY_INTERVAL.
Поддерживаются цели, фильтры мобов, условия, награды и предварительные требования.
Стандартные квесты:
- «Охота на соперников» — 25 убийств игроков;
- «Чистка территории» — 250 мобов;
- «Активный клан» — 50 активных интервалов.
Quest engine пока не реализован. События
ClanQuestProgressEventиClanQuestCompleteEventещё не вызываются. Товары сrequiredQuestsбудут отклоняться.
Публичный API 4
Версия API:
PnClansProvider.API_VERSION = 4
Добавлены разделы api.points, api.operations и api.gui.
Новые операции клана:
changeRole;transferLeadership;changeSetting;setHome;deleteHome;openChest.
Новые события:
ClanMemberJoinEvent;ClanMemberLeaveEvent;ClanMemberRoleChangeEvent;ClanSettingChangeEvent;ClanHomeSetEvent;ClanHomeDeleteEvent;ClanChestOpenEvent;ClanTreasuryTransactionPreEvent;ClanTreasuryTransactionEvent;ClanShopPurchasePreEvent;ClanShopPurchaseEvent;ClanQuestProgressEvent;ClanQuestCompleteEvent.
Новые типы: ClanPoints, ClanPointsTransaction, ClanPointsTransactionType, ClanPointsSource, ClanHighlightColor, ClanHighlightType, ClanShopCurrency, ClanOperationResult, ClanOperationRejection.
Аддоны, использующие API pnClans, необходимо перекомпилировать против API 4.
Исправления
- исправлено сохранение убийств, смертей и игрового времени;
- исправлено сохранение клановых очков и дневных лимитов;
- восстановлена кнопка Зала славы;
- исправлено пересечение слотов магазина и квестов;
- исправлено исчезновение имени и lore у предметов;
- исправлена подсветка GUI на Paper 1.21.11;
- исправлена обработка кликов по инвентарю игрока;
- награды больше не обрезаются размером одного стака;
- исправлен возврат средств при ошибке выдачи награды;
- исправлена покупка после
/clan reload; - каталог магазина обновляется без повторного открытия меню.
Совместимость
- Paper API 1.21.11;
- Java 25;
- Paper 1.18+;
api-version: 1.16.
PacketEvents встроен в JAR с relocation:
ua.inventorytype.pnclans.libs
Необязательные интеграции: Vault, PlaceholderAPI и PlayerPoints.
Миграция с v1.0.6
- Сделайте резервную копию папки
plugins/pnClans/. - Обновите Java до 25.
- Замените JAR на
pnClans-1.1.2-all.jar. - Перезапустите сервер.
- Проверьте созданные
shop.ymlиquests.yml. - Если используется собственный
menus.yml, добавьтеmainMenu.items.shopиmainMenu.items.quests. - Перекомпилируйте аддоны против API 4.
- Проверьте способы оплаты, награды и
requiredQuests.
Важно
!console_commandвыполняется от имени консоли. Используйте такие команды только в доверенномshop.yml.
Серверы с другими плагинами подсветки, glow или scoreboard должны проверить совместимость.
Скачать
pnClans-1.1.2-all.jar
Paper 1.21.11 / Java 25
pnClans 1.0.6 — Настраиваемый клановый чат
Что добавлено
- Клановый чат получил два способа общения: через отдельную команду или через символ в начале сообщения.
- На серверах с командным режимом сообщение в клан можно отправить командой, например:
/cc Привет, клан!. - На серверах с режимом префикса достаточно начать обычное сообщение с выбранного символа, например:
!Привет, клан!или#Привет, клан!. - Администратор сервера может выбрать наиболее удобный способ общения для своего проекта.
Что изменено
- Пункт кланового чата в меню настроек клана теперь показывает актуальный способ отправки сообщений.
- Оформление этого пункта адаптировано для обоих вариантов общения, чтобы игрокам было проще понять, как написать в клановый чат.
- В меню по-прежнему можно включать и выключать доступ к клановому чату для участников клана.
Улучшения
- Если клановый чат закрыт лидером, игрок получает понятное уведомление.
- При вводе команды без текста игрок увидит подсказку с правильным способом её использования.
- Новая система не изменяет существующие настройки кланов и сохраняет привычную работу остальных функций плагина.
pnClans 1.0.5 — Метка соклановцев: два типа, один переключатель, новый дизайн меню
Что нового
✦ Два типа метки соклановцев
- Броня — виртуальная кожаная броня в цвете клана (перехват
EntityEquipment). - Подсветка — светящийся контур вокруг игрока (команды
ScoreboardTeams+ флаг glow вEntityMetadata), цвет = цвет клана. - Тип сохраняется в данных клана (
highlightType) и выбирается в меню.
✦ Единый переключатель вместо набора режимов
- Вместо режимов OFF/ALWAYS/PvP — один общий статус Включена / Выключена: выключена — ни броня, ни подсветка не показываются.
- Старые данные мигрируют автоматически:
ALWAYS/PvP-режимы → включено,OFF→ выключено.
✦ Полностью переработанное меню «Метка Соклановцев»
- Единый стиль проекта: HotWorld-декор, подписи секций, лоры «Состояние / Описание / Переход».
- Симметричная раскладка 6×9: тип → статус → цвет (палитра из 9 цветов), кнопка сброса, фирменная кнопка «Вернуться назад».
- Плейсхолдеры
{clan_highlight_status},{clan_highlight_type}в настройках.
🛠 Исправления
- Починен синхронизатор метки: убрана тяжёлая NMS-рефлексия (
getEntityMetadata), которая молча ронялаsyncClan— переключение в меню теперь реально работает. - Буфер пакетов больше не пишется вручную — PacketEvents 2.13.1 перекодирует сам.
- Детальный лог синхронизации: участники, онлайн, статус, тип, активность.
⚠️ Примечание
- При обновлении с версий до 1.0.5 удалите
menus.yml(или замените{clan_highlight_mode}на{clan_highlight_status}вручную), чтобы пункт «Метка соклановцев» в настройках отображался корректно.
📸 Скриншоты
📦 Бинарный файл: pnClans-1.0.5-all.jar





