Skip to content

Настраиваемые интерфейсы и безопасные обновления

Choose a tag to compare

@github-actions github-actions released this 25 Aug 21:23
0555c9e

Настраиваемые интерфейсы и безопасные обновления

Администраторы получают более предсказуемую конфигурацию, безопасные миграции и каналы обновлений, а игроки — исправленные и более гибко настраиваемые клановые интерфейсы.

Новое

  • Добавлены каналы обновлений 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-сборках.