Плагин Механика WorldAccessBlocker [0.5]

Changelog для WorldAccessBlocker v0.5​

Обзор​

Версия 0.5 представляет собой значительное обновление плагина WorldAccessBlocker, добавляющее поддержку ограничений для кастомных миров, улучшенную блокировку элитр, исправление обхода для создания порталов в Незер, а также локализацию и управление обходами. Все изменения направлены на повышение надёжности, удобства и совместимости с серверами, включая Folia, на Minecraft 1.21.x.

Новые функции​

  1. Ограничения для кастомных миров:
    • Добавлена поддержка блокировки доступа к кастомным мирам через раздел custom-worlds в config.yml.
    • Игроки, пытающиеся войти в ограниченный кастомный мир, телепортируются в точку спавна оверворлда с сообщением custom_world_blocked.
    • Пример конфигурации:
    • Код:
      custom-worlds:
        my_custom_world:
          disable: true
      restriction-date: "2025-12-31 00:00:00"
    • Обходы для кастомных миров поддерживаются через команду /wab bypass <игрок> <имя_мира> <длительность>.
  2. Автоматическое снятие элитр:
    • Если игрок имеет надетые элитры в слоте нагрудника при активных ограничениях (elytra.disable-equip: true), элитры автоматически снимаются каждую секунду (20 тиков).
    • Элитры перемещаются в первый свободный слот инвентаря. Если инвентарь полон (36 занятых слотов), они выбрасываются на землю рядом с игроком.
    • Игрок получает сообщение elytra_equip_blocked (например, "Надевание элитр заблокировано еще на X дней и Y часов" при language: ru).
  3. Локализация уведомлений об обходе:
    • Добавлены сообщения bypass_granted и bypass_removed в файлы en.yml и ru.yml для уведомлений о предоставлении и снятии обхода.
    • Примеры (для language: ru):
      • bypass_granted: "Обход предоставлен для %s игроку %s до %s."
      • bypass_removed: "Обход для %s снят для игрока %s."
    • Сообщения включают имя функции, имя игрока и, для bypass_granted, время окончания обхода.
  4. Удаление обхода:
    • Добавлена команда /wab remove <игрок> <функция> для снятия обхода для указанного игрока и функции (nether, end, elytra, или кастомный мир).
    • Пример: /wab remove Steve nether снимает обход для Незера.
    • Успешное удаление подтверждается сообщением bypass_removed. Если обхода нет, отправляется уведомление об этом.
    • Изменения сохраняются в bypasses.yml.
✨ Добавлено
🕒 Поддержка часовых поясов
Добавлена опция time-zone в config.yml для указания пользовательского часового пояса для дат ограничений (например, UTC, Europe/Moscow).
➜ Включает ссылку на базу данных часовых поясов IANA.

🔍 Детальные ограничения
Введены подробные переключатели ограничений для:
  • Нижнего мира: portal-creation, teleportation
  • Конца: portal-activation
- Элитра: equipping, flight

🛡️ Команда обхода
Новая команда:
/wab bypass <игрок> <функция> <продолжительность>

Временно позволяет игроку обойти ограничения для Нижнего мира, Конца или Элитра.

⌨️ Автозаполнение
Добавлены интеллектуальные предложения для команды /wab:
  • Подкоманды (например, bypass)
  • Имена онлайн-игроков
  • Функции: nether, end, elytra
  • Продолжительность (например, 3600, 86400)

🚨 Активная проверка ограничений
Плагин теперь периодически проверяет, находятся ли игроки в ограниченных измерениях (Nether или End), и при необходимости телепортирует их наружу.

🐛 Исправлено
Создание портала Nether
Исправлена уязвимость, позволявшая игрокам создавать порталы Nether с помощью PortalCreateEvent.

Телепортация транспортных средств
Решена проблема, позволявшая телепортироваться в Нижний мир с помощью лодок или вагонеток через EntityPortalEvent.

Использование элитр
Исправлена уязвимость, позволявшая игрокам надевать элитры с помощью правого клика в нерабочей руке (обрабатывается через PlayerInteractEvent).

🔧 Изменено
⚡ Оптимизация производительности
Улучшены обработчики событий с условиями раннего выхода, чтобы снизить использование ЦП на серверах с большим количеством игроков.

🌐 Улучшения языка
Обновлены файлы en.yml и ru.yml, чтобы отображать оставшееся время ограничения в днях и часах для более понятных сообщений пользователям.

🗂 Структура конфигурации
Перестроена структура config.yml:
  • Группировка функций в разделах nether, end, elytra
  • Добавлены ясные комментарии и описания для облегчения настройки

📝 Примечания
  • ✅ Плагин теперь поддерживает Folia, хотя блокировка портала Nether может по-прежнему быть ограничена из-за поведения PlayerPortalEvent.
  • 🧭 Убедитесь, что в конфигурации установлен действительный часовой пояс IANA (time-zone: Europe/Moscow и т. д.).
  • 📁 Проверьте config.yml на наличие новых вложенных опций и соответствующим образом настройте параметры.
🔹 Что нового в этой версии?

Полностью переработана структура кода:
  • Логика разделена на отдельные классы (PortalBlocker, EndBlocker, ElytraBlocker, ConfigManager).
  • Код стал читаемее, удобнее и масштабируемее.
Улучшена работа с конфигурацией:
  • Добавлен отдельный класс ConfigManager для загрузки и обновления параметров.
  • Команда /wabreload теперь корректно перезагружает настройки без перезапуска сервера.
Добавлено подробное логирование:
  • В консоли теперь отображаются все загруженные настройки.
  • Добавлены предупреждения для серверов Folia о возможных проблемах с блокировкой входа в Ад.
Исправлены мелкие ошибки и оптимизирован код.
⚠️ Важно! Если вы используете Folia, запрет входа в Ад может работать нестабильно из-за особенностей многопоточности.
ВерхНиз