Gold Плагин Механика ePowerBlocks [1.2.0]

Это самое крупное техническое обновление за всю историю плагина. Я почти полностью сосредоточился на производительности, стабильности и удобстве поддержки. Ключевые системы были переписаны, основные узкие места устранены, внедрены агрессивные стратегии кэширования и пространственного поиска. Ожидайте значительного снижения нагрузки на CPU на загруженных серверах.
Этот список изменений — немного для гиков ☕

Снижение сложности взаимодействий (O(N) → O(1))​

(N = количество PowerBlock)
  • Полностью переработана обработка ломания блоков, взрывов и взаимодействий с редстоуном.
  • Вместо перебора всех PowerBlock на сервере теперь используется O(1)-реестр + пространственный поиск.
  • Это означает практически нулевой лаг независимо от общего количества PowerBlock.
  • Такой же подход с постоянным временем применяется и к взаимодействиям с сущностями.

Таблицы лидеров и система статистики (O(N·log(N)) → амортизированное O(1))​

(N = количество игроков, когда-либо добывавших PowerBlock)
  • Устаревшая система заменена на централизованный StatisticsManager.
  • Убрана сортировка при каждом событии и лишние stream-алокации.
  • Реализованы обновления таблиц лидеров «на месте» (Bubble-Up / TimSort-подобный подход), что резко снижает количество аллокаций и нагрузку на GC.
  • Результат: обновления лидеров больше не доминируют по CPU даже при высокой активности.

Механики и функционал​

  • ForceField и MiningVisibility теперь используют пространственные запросы (по чанкам), а не перебор всех игроков.
  • Velocity — оптимизированы математические расчёты и применение физики.

Рефакторинг системы частиц​

  • Введена строгая система кэширования настроек частиц.
  • Убран тяжёлый парсинг строк из основного тика.
  • Добавлены прямые обращения к свойствам — экономия тысяч вычислений в секунду.

Умная физика блоков​

  • Поворотные блоки теперь вращаются без запуска обновлений физики (освещение/редстоун), что экономит ресурсы (примерно в 3–5 раз быстрее).
  • Smart Set: перед изменением блоков теперь проверяется, отличается ли материал/тип. Если нет — изменение и проверка физики не выполняются, что предотвращает лишние обновления чанков и перерасчёты освещения (ускорение 5× и более).
  • Исправлен баг, из-за которого все поворотные блоки вращались в обычном мире.

Кодовая база и архитектура​

  • Декомпозиция монолита: огромный класс ABlock (1200+ строк) был разобран на более мелкие, модульные и поддерживаемые компоненты.
  • Новая система реестров: реализован PowerBlockRegistry, лежащий в основе O(1)-поиска.
  • Структура YAML: улучшена внутренняя структура файлов сохранённых PowerBlock (при обновлении блока через редактор структура YAML будет немного отличаться).

Стабильность, отладка и безопасность​

  • Улучшен вывод отладки для проблем конфигурации — администраторам проще находить ошибки.
  • Предотвращён спам и добавлена более безопасная обработка ошибок при неверно настроенных материалах/сущностях.
  • Система cron переписана с надёжными вычислениями времени и защитой от бесконечных циклов и зависаний.

Folia и совместимость​

  • Улучшено планирование задач и стабильность на серверах Folia.
  • Улучшена работа с потоками и конкурентностью для альтернативных реализаций серверов.

Зависимости​

  • API FancyNPCs обновлён с 2.3.0 до 2.9.0 (совместимость с актуальными версиями).
  • Обновлены различные внутренние библиотеки до более стабильных релизов.

Исправления​

  • Множество мелких проблем со стабильностью, обнаруженных в процессе рефакторинга.

Примечания по обновлению и миграции​

  • Сделайте резервную копию конфигов и данных перед обновлением — структура YAML изменилась для большей наглядности (ничего не должно сломаться, но лучше перестраховаться).
  • Если вы используете FancyNPCs, обновитесь до версии 2.9.0+.
Из-за масштабности переработки невозможно протестировать все крайние случаи. Я буду очень признателен за сообщения о найденных проблемах и обязуюсь исправлять их в течение 24 часов.
Также приношу искренние извинения за недавний недостаток поддержки — времени было очень мало. Я постараюсь компенсировать это повышенной стабильностью и более активной поддержкой в дальнейшем. Спасибо за терпение!
  • Исправлены критические ошибки, из-за которых оффлайн-награды не выдавались игрокам корректно
  • Добавлена проверка, чтобы предотвратить получение оффлайн-наград, если конкретная награда или PowerBlock отключены
  • Исправлена ошибка, из-за которой права для оффлайн-наград проверялись некорректно
  • Оптимизирован цикл обработки оффлайн-наград для повышения производительности
  • Улучшена частота сохранения, чтобы данные оффлайн-наград сохранялись даже при сбоях сервера
Редактор и меню: Полностью переработан внутриигровой редактор (/epb editor). Меню теперь разделено на отдельные категории (Actions, Cooldowns, Particles, Sounds, Rewards и др.) для детальной настройки блока. Примечание: редактор всё ещё находится в стадии доработки.
Команды: Добавлены новые команды для расширенного управления голограммами (/epb hologram info/addline/removeline/setline) и отображения информации о блоке.
Частицы: Полный рефакторинг всех эффектов частиц (Burst, Circle, Explosion и т. д.) с переходом на новую оптимизированную систему. Теперь поддерживается значительно больше типов частиц.
Звуки: Добавлен новый механизм Sounds, который значительно лучше, чем определение звуков внутри Actions.
Голограммы: Исправлена поддержка внешних провайдеров (Decent, Fancy, HD) и добавлена возможность динамически изменять линии в игре.
Ядро: Крупные внутренние обновления и оптимизации для повышения стабильности.
Исправления:
  • Исправлены неформатированные текстовые сообщения
  • Исправлены ошибки, связанные со статусами PowerBlock
  • Исправлены проблемы проверки прав
  • И многое другое
  • Исправлен баг с поддержкой Decent Hologram, который мог мешать обновлению голограмм при смене статуса.
  • Исправлен баг, из-за которого яйцо дракона Края могло телепортироваться с блока.
  • Исправлен «визуальный» баг, когда блоки могли неожиданно переключаться из COOLDOWN в ACTIVE.
  • Добавлена команда /epb reward menu preview <powerblock> для открытия превью меню наград (если доступно).
Добавлено /epb reward menu preview <power_block> - для открытия меню наград через команду. Исправлено Action Util. Добавлена поддержка custom-model-data в меню наград:
🔹 Исправлена критическая ошибка в системе GUI, нарушавшая работу меню.
🔹 Неотложное обновление, обеспечивающее стабильность — крупное обновление ожидается скоро.
  • Исправлено создание файла .sec.
  • Исправлена ошибка, из-за которой серверные действия выполнялись для каждого игрока вместо однократного глобального выполнения (в зависимости от количества игроков онлайн).
  • Внутренне улучшена обработка системы и безопасность выполнения, повышена надёжность работы плагина.
Изменения:

Улучшения:
Улучшены значения по умолчанию для функций ForceField и Velocity — теперь поведение «из коробки» стало адекватнее.

Исправления:
Исправлена проблема с обработкой целых чисел вместо double — система теперь умнее и терпимее при разборе числовых значений.

Извиняемся за частые мелкие патчи в последнее время.
Этот быстрый апдейт устраняет две важные проблемы предыдущего релиза:

Исправления багов:
– Исправлена ошибка, из-за которой некоторые функции не отключались корректно при загрузке временного блока силы.
– Исправлен баг, при котором функция Velocity не отталкивала игроков, застрявших при копании в блок — теперь такие игроки корректно выталкиваются.
ВерхНиз