Это самое крупное техническое обновление за всю историю плагина. Я почти полностью сосредоточился на производительности, стабильности и удобстве поддержки. Ключевые системы были переписаны, основные узкие места устранены, внедрены агрессивные стратегии кэширования и пространственного поиска. Ожидайте значительного снижения нагрузки на 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 (совместимость с актуальными версиями).
- Обновлены различные внутренние библиотеки до более стабильных релизов.
Исправления
- Множество мелких проблем со стабильностью, обнаруженных в процессе рефакторинга.
Примечания по обновлению и миграции
Из-за масштабности переработки невозможно протестировать все крайние случаи. Я буду очень признателен за сообщения о найденных проблемах и обязуюсь исправлять их в течение 24 часов.
- Сделайте резервную копию конфигов и данных перед обновлением — структура YAML изменилась для большей наглядности (ничего не должно сломаться, но лучше перестраховаться).
- Если вы используете FancyNPCs, обновитесь до версии 2.9.0+.
Также приношу искренние извинения за недавний недостаток поддержки — времени было очень мало. Я постараюсь компенсировать это повышенной стабильностью и более активной поддержкой в дальнейшем. Спасибо за терпение!
- Исправлены критические ошибки, из-за которых оффлайн-награды не выдавались игрокам корректно
- Добавлена проверка, чтобы предотвратить получение оффлайн-наград, если конкретная награда или 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 не отталкивала игроков, застрявших при копании в блок — теперь такие игроки корректно выталкиваются.