Привет всем!

Рад представить новую версию плагина с кучей улучшений под капотом. Потратил немало времени на оптимизацию и исправление багов, которые могли вызывать проблемы на больших серверах.
## Что нового?
### Исправлены баги
Проблема с логами
Раньше файл логов мог разрастаться до огромных размеров и жрать память. Теперь добавил автоматическую ротацию - когда файл достигает 5 МБ, он архивируется с датой, а старые архивы (старше 30 дней) удаляются сами. Плюс ограничил количество записей в активном логе до 1000 штук.
Валидация данных при загрузке
Бывало, что если кто-то удалил блок с закопанным предметом другим плагином, запись оставалась в памяти и могла вызывать проблемы. Теперь при загрузке плагин проверяет все записи - существует ли мир, на месте ли блок, правильного ли он типа. Битые записи автоматически удаляются с записью в лог.
Фикс дюпа предметов
Был редкий баг когда игрок мог быстро сменить предмет в руке во время закапывания и система не успевала среагировать. Добавил проверку - теперь плагин запоминает что именно закапывается и проверяет перед финальным удалением из инвентаря.
Обработка выгрузки чанков
Добавил отдельный слушатель для чанков. Когда чанк загружается, плагин проверяет все записи в нем на валидность. Это помогает избежать рассинхронизации данных.
Поддержка мультимировых серверов
Улучшил обработку ситуаций когда мир не загружен или был удален. Теперь плагин не крашится, а просто пропускает такие записи с предупреждением в логе.
### Оптимизации
Кэширование конфигурации
Переписал ConfigManager - теперь использует EnumSet вместо обычного HashSet (это быстрее для enum'ов типа Material) и создает immutable копии для безопасного доступа из разных потоков. Проверка запрещенных блоков/предметов стала примерно на 30% быстрее.
Мгновенный подсчет предметов игрока
Раньше при каждой проверке лимита плагин перебирал ВСЕ закопанные предметы на сервере (O

). Теперь веду отдельный счетчик для каждого игрока - проверка стала O(1), то есть мгновенной. На серверах с сотнями закопанных предметов разница огромная.
Пакетное сохранение логов
Вместо того чтобы писать в файл при каждом событии (это медленно), теперь логи накапливаются в очереди и сохраняются пачкой раз в минуту. Если очередь переполняется (>50 записей), сохранение происходит немедленно. Это снизило количество операций записи на диск на 95%.
Асинхронная работа с файлами
Все операции загрузки и сохранения данных теперь происходят в отдельных потоках, не блокируя основной поток сервера. TPS больше не проседает при сохранении данных.
Оптимизация частиц
Частицы при закапывании теперь показываются только игроку который закапывает, а не всем вокруг. Плюс уменьшил количество с 20 до 15. Меньше нагрузка на сеть и клиенты игроков.
## Технические детали
- Добавлено правильное завершение всех задач при выключении плагина
- Улучшено логирование - теперь видно сколько записей загружено/пропущено
Если найдете баги или будут идеи - пишите в
You must be logged in to see this link.
=====================================
Версия: 1.0.9
Совместимость: Minecraft 1.21 - 1.21.10
=========================================
Спасибо всем кто использует плагин!