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 (для доступных сборок) Java 17+ PacketEvents 2.13.0+ WorldEdit Последняя стабильная версия / FAWE ViaVersion Необязательно, используется для автоматического определения необходимости запасного варианта частиц Floodgate Необязательно, используется для определения игроков Bedrock
Примечания по обновлениюЗагрузка
- Изменений конфигурации, нарушающих совместимость с 2.4.0, нет.
- Существующие настройки игроков и принятые связи для совместного просмотра остаются совместимыми.
- Перед обновлением необходимо обновить PacketEvents до версии 2.13.0 или новее.
- После замены JAR-файла рекомендуется полностью перезапустить сервер.
- Клиентский мод не требуется.
Сборки для Paper и Spigot прикреплены к этому релизу. Сборки также доступны через GitHub Actions, а плагин — на Modrinth.
Резюме
Этот релиз добавляет 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
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 (объединён с реализацией)
Системные требования
Компонент Требование Minecraft 1.20 ~ 1.21.x Java 21+ Платформа Paper / Folia / Spigot PacketEvents 2.11.1+ WorldEdit Последняя стабильная версия / FAWE
Примечания по конфигурации
- Ломающих изменений конфигурации по сравнению с 2.1.x нет
- Новый раздел share автоматически появится в config.yml при первом запуске