Плагин Генераторы мира WorldEditDisplay [2.5.0]

WorldEditDisplay 2.5.0 модернизирует пакетный бэкенд рендеринга, перенося формы выделения и общие метки игроков с EntityLib на VirtualEntities 0.9.0, работающий на базе TextDisplayShapes 3.0.0.

В этом обновлении сохранён рендеринг с повторным использованием линий, представленный в 2.4.0, а также улучшены управление жизненным циклом, совместимость со старыми и актуальными версиями серверов, безопасность рендерера и автоматическое тестирование совместимости.


Бэкенд рендеринга
  • Формы выделения, работающие исключительно через пакеты, перенесены с EntityLib на VirtualEntities.
  • Общие метки TextDisplay для игроков также перенесены на бэкенд VirtualEntities.
  • Для форм и меток используется один общий VirtualEntityManager и канонические подключения зрителей.
  • Сохранён рендеринг с повторным использованием линий для выделений Cuboid, Cylinder, Ellipsoid, Polygon и Polyhedron.
  • Реализация EntityLib больше не включается в итоговые файлы плагина.

Улучшения совместимости
  • Требование к версии Java для байткода снижено с Java 21 до Java 17.
  • Версия Bukkit API изменена на api-version: 1.19.
  • Восстановлена совместимость с Paper, Folia и Spigot начиная с Minecraft 1.19.4.
  • API для сборки Paper обновлено до 1.21.11.
  • PacketEvents обновлён до 2.13.0.

Версия Java, необходимая самому серверу Minecraft, всё ещё может быть выше, несмотря на то, что WorldEditDisplay теперь рассчитан на Java 17.


Исправления стабильности
  • Пропускаются вырожденные, нечисловые и слишком короткие отрезки линий, которые нельзя безопасно отрисовать.
  • Предотвращено обращение рендерера к выгруженным мирам при смене его базовой позиции.
  • Рендереры и виртуальные сущности теперь корректно закрываются при отключении плагина.
  • Слушатели PacketEvents деактивируются и удаляются до очистки рендереров.
  • Общие формы выделения и метки игроков используют одно и то же клиентское подключение.

Тестирование и сборка
  • Добавлен сквозной тестовый процесс для Paper и Mineflayer.
  • Тестируется реальная обработка пакетов WorldEdit CUI, повторное использование линий, отображение сущностей TextDisplay, совместное использование выделений и общих меток.
  • Совместимость протестирована на 21 версии Paper и 24 версиях Spigot от 1.19.4 до 26.2.
  • Сквозная совместимость с Folia проверена на версиях 1.19.4, 1.21.11 и 26.2.
  • Добавлены регрессионные тесты для Java 17, старого дескриптора плагина Paper, некорректной геометрии линий и смены базовой позиции в выгруженном мире.
  • Все 35 модульных тестов проходят как в профиле сборки Paper, так и Spigot.

Системные требования

КомпонентТребование
Minecraft / ПлатформаPaper / Folia / Spigot 1.19.4 ~ 26.2 (для доступных сборок)
Java17+
PacketEvents2.13.0+
WorldEditПоследняя стабильная версия / FAWE
ViaVersionНеобязательно, используется для автоматического определения необходимости запасного варианта частиц
FloodgateНеобязательно, используется для определения игроков Bedrock

Примечания по обновлению
  • Изменений конфигурации, нарушающих совместимость с 2.4.0, нет.
  • Существующие настройки игроков и принятые связи для совместного просмотра остаются совместимыми.
  • Перед обновлением необходимо обновить PacketEvents до версии 2.13.0 или новее.
  • После замены JAR-файла рекомендуется полностью перезапустить сервер.
  • Клиентский мод не требуется.
Загрузка
Сборки для Paper и Spigot прикреплены к этому релизу. Сборки также доступны через GitHub Actions, а плагин — на Modrinth.
Автор: bobobo

Резюме​

Этот релиз добавляет Particle Fallback Renderer, который позволяет клиентам ниже Minecraft 1.19.4 (без поддержки TextDisplay) визуализировать выделения WorldEdit через частицы. Также добавлена интеграция Floodgate для определения Bedrock-игроков и подавления несовместимых CUI-сообщений, сбор метрик bStats с анализом методов отображения, авто-перерисовка при смене мира и ряд исправлений совместимости.


Новые возможности​

Particle Fallback Renderer​

  • Добавлена полноценная система рендеринга через частицы для клиентов без поддержки TextDisplay (Minecraft < 1.19.4)
  • Интеграция ViaVersion API для автоматического определения версии клиента и выбора подходящего рендера
  • Отдельные рендереры частиц для всех типов регионов:
    • ParticleCuboidRenderer
    • ParticleCylinderRenderer
    • ParticleEllipsoidRenderer
    • ParticlePolygonRenderer
    • ParticlePolyhedronRenderer
  • Оптимизация кеша точек: геометрия региона пересчитывается только при изменении выделения, а повторные тики используют готовые пакеты частиц
  • Ручное переключение режима отображения через /wedisplay render [auto|text|particle|toggle]
  • Пермиссия: worldeditdisplay.use.render для смены режима рендера

Floodgate Support​

  • Добавлена интеграция Floodgate для определения Bedrock-игроков на Geyser-серверах
  • CUI-сообщения автоматически отключаются для Bedrock-клиентов
  • Поддержка реализована как soft-dependency (плагин работает и без Floodgate)

bStats Integration​

  • Добавлены метрики bStats для анонимной статистики
  • Добавлена диаграмма распределения методов отображения (TextDisplay vs Particle fallback)
  • Помогает отслеживать приоритеты дальнейшей разработки

Обработка смены мира​

  • Добавлен слушатель PlayerChangedWorldListener
  • Автоматическая очистка старых рендеров при смене мира
  • Повторный рендер выделений в новом мире
  • Устранение «призрачных» отображений

Улучшения​

  • Авто-слияние новых ключей конфигурации при запуске/перезагрузке
    (новые параметры из JAR добавляются в config.yml без перезаписи пользовательских значений)
  • Обновлена документация с новыми изображениями
  • Улучшен .gitignore (исключены IDE-файлы)
  • Повышена точность расчёта позиции shared label
  • Улучшена документация shading-конфигурации Spigot Adventure

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

  • Исправлен расчёт позиции shared label для корректного визуального выравнивания
  • Исправлены зависимости Adventure (понижены до 4.17.0) для совместимости с PacketEvents на Spigot

Обновления зависимостей​

  • adventure-api 4.17.0 → 5.1.1
  • adventure-key 4.17.0 → 5.1.1
  • adventure-text-minimessage обновлён до последней версии
  • adventure-text-serializer-legacy обновлён
  • adventure-text-serializer-bungeecord обновлён
  • Добавлены зависимости:
    • viaversion-api (определение версии клиента)
    • floodgate-api (детект Bedrock-игроков)
    • bstats-base (метрики)
  • Добавлены репозитории OpenCollab и ViaVersion

Системные требования​

  • Minecraft 1.20 ~ 1.21.x
  • Java 21+
  • Paper / Folia / Spigot
  • PacketEvents 2.11.1+
  • WorldEdit / FAWE (последняя стабильная версия)
  • ViaVersion (опционально, для авто-детекта fallback-рендера)
  • Floodgate (опционально, для Bedrock-детекта)

Примечания по конфигурации​

  • Ломающих изменений в конфиге нет (совместимость с 2.2.x сохранена)
  • Новые ключи (particle_fallback.*) автоматически добавляются в config.yml при обновлении
  • Права worldeditdisplay.use.render доступны для управления /wedisplay render
  • После обновления рекомендуется выполнить /wedisplayreload
Автор: bobobo
WorldEditDisplay 2.2.0 — общий доступ к выделениям, мультиплатформенная поддержка и улучшения производительности

Сводка
Крупное обновление, добавляющее систему общего доступа к выделениям, позволяющую игрокам делиться своими WorldEdit-выделениями в реальном времени, расширенную поддержку платформ (Paper, Folia, Spigot), новый абстрактный базовый класс RegionRenderer для более гибкой архитектуры рендера, а также множество оптимизаций производительности с кэшированием и async-операциями.


Новые возможности
Система общего доступа к выделениям
  • Добавлена команда /wedisplay share, позволяющая приглашать других игроков просматривать ваше выделение
  • Выделения синхронизируются в реальном времени и сохраняются между сессиями
  • Каждому shared-выделению автоматически назначается уникальный цвет
  • Неиспользуемые shared-цвета освобождаются после завершения sharing-сессии для оптимизации ресурсов
  • Добавлен permission worldeditdisplay.share для использования share-команд
  • Конфигурация share manager теперь перезагружается через /wedisplayreload

Абстрактный базовый класс RegionRenderer
  • Добавлен абстрактный базовый класс RegionRenderer для единой и расширяемой архитектуры рендера
  • Упрощает добавление новых типов регионов и кастомизацию поведения рендера

Мультиплатформенная поддержка
  • Добавлена официальная поддержка Folia (region-threaded scheduling)
  • Добавлена официальная поддержка Spigot (в дополнение к Paper)
  • Планировщик задач теперь автоматически использует подходящий scheduler под конкретную платформу

Bounding Box и Distance Utilities для регионов
  • Добавлены методы расчёта bounding box для регионов
  • Добавлены методы расчёта дистанции между регионами и игроками для range-based оптимизаций

Улучшения
Производительность рендера
  • Добавлено renderer-level caching для уменьшения лишних вычислений
  • Логика name cache для shared render теперь корректно инвалидируется, чтобы избежать stale reads
  • Очистка render’а sharer’а теперь корректно освобождает ресурсы
  • Улучшены яркость рендера и позиционирование label для лучшего визуального отображения

Async Settings I/O
  • Настройки игроков теперь сохраняются асинхронно, чтобы избежать блокировки main-thread
  • Сохранение конфигов теперь откладывается в scheduled task, чтобы избежать постоянных disk writes при частых изменениях

Thread Safety
  • Таймаут share request теперь хранится в thread-safe mutable field
  • Карта multi-region игрока теперь возвращается как unmodifiable view для защиты целостности данных

Исправления ошибок
  • Исправлена логика invalidation name-cache для shared render, предотвращающая лишние reread’ы
  • Исправлена защита internal data от внешних изменений через unmodifiable multi-region map
  • Исправлена thread-safe обработка share request timeout
  • Исправлены расчёты brightness и позиция label для лучшего отображения

Технические и CI-обновления
  • Обновлены версии workflow-файлов GitHub Actions для большей стабильности
  • Добавлен adventure-api exclusion filter в Maven profile для Spigot, чтобы избежать конфликтов классов
  • Удалён документ SHARE-DESIGN.md (объединён с реализацией)

Системные требования

КомпонентТребование
Minecraft1.20 ~ 1.21.x
Java21+
ПлатформаPaper / Folia / Spigot
PacketEvents2.11.1+
WorldEditПоследняя стабильная версия / FAWE

Примечания по конфигурации
  • Ломающих изменений конфигурации по сравнению с 2.1.x нет
  • Новый раздел share автоматически появится в config.yml при первом запуске
Автор: bobobo
ВерхНиз