
WorldEditDisplay
A server-side plugin for Minecraft that adds visual selection rendering for WorldEdit.
WorldEditDisplay 2.3.0 - Particle Fallback Renderer, Floodgate Support & Cross-Version Compatibility
Summary
This release introduces a Particle Fallback Renderer that allows clients below Minecraft 1.19.4 (which lack TextDisplay entity support) to visualize WorldEdit selections via particle effects, Floodgate integration to detect Bedrock players and suppress incompatible CUI messages, bStats metrics collection with display method distribution tracking, automatic re-rendering on world change, and several compatibility fixes.
New Features
Particle Fallback Renderer
- Added a full particle-based rendering system for clients without TextDisplay support (Minecraft < 1.19.4)
- ViaVersion API integration to automatically detect client protocol version and select the appropriate renderer
- Dedicated particle renderers for all region types:
ParticleCuboidRenderer,ParticleCylinderRenderer,ParticleEllipsoidRenderer,ParticlePolygonRenderer,ParticlePolyhedronRenderer - Point cache optimization: region geometry is only re-computed when the selection changes; repeated ticks only send pre-computed particle packets
- Players can manually switch between render modes via
/wedisplay render [auto|text|particle|toggle] - Permission node:
worldeditdisplay.use.renderto allow switching render modes
Floodgate Support
- Added Floodgate integration to detect Bedrock players on Geyser servers
- CUI messages are automatically suppressed for Bedrock clients to prevent client-side issues
- Soft-dependency on Floodgate (optional; no impact if Floodgate is not installed)
bStats Integration
- Added bStats metrics for anonymous usage statistics
- Display method distribution chart to track TextDisplay vs Particle fallback usage across online players
- Helps guide future development priorities
World Change Handling
- Added
PlayerChangedWorldListenerto automatically clear stale renders and re-render selections when a player changes worlds - Eliminates ghost renders left behind in the previous world
Improvements
- Auto-merge new config keys on startup/reload: When upgrading from a previous version, any new configuration options added to
config.ymlin the plugin JAR are now automatically merged into the existing config file on disk. Existing user values are never overwritten — only genuinely missing keys are added. This eliminates the need to manually edit config.yml after updates. (/wedisplayreloadalso performs this merge.) - Updated plugin documentation with new image links
- Improved
.gitignoreto exclude IDE configuration files - Enhanced share label position calculation accuracy (see bug fixes)
- Optimized Spigot adventure shading configuration with clearer documentation
Bug Fixes
- fix(render): Corrected shared label position calculation logic for proper visual alignment
- fix(spigot): Downgraded adventure dependencies to 4.17.0 for PacketEvents compatibility on Spigot
Technical & Dependency Updates
- Updated
adventure-apifrom 4.17.0 to 5.1.1 - Updated
adventure-keyfrom 4.17.0 to 5.1.1 - Updated
adventure-text-minimessageto latest - Updated
adventure-text-serializer-legacyto latest - Updated
adventure-text-serializer-bungeecordto latest - Added
viaversion-apidependency for protocol version detection - Added
floodgate-apidependency for Bedrock player detection - Added
bstats-basedependency for metrics collection - Added OpenCollab and ViaVersion repository sources
System Requirements
Minecraft 1.20 ~ 1.21.x Java 21+ Platform Paper / Folia / Spigot PacketEvents 2.11.1+ WorldEdit Latest stable / FAWE ViaVersion Optional (required for particle fallback auto-detection) Floodgate Optional (required for Bedrock player detection) Configuration Notes
- No breaking configuration changes from 2.2.x.
- New config keys (such as
particle_fallback.*) are automatically merged into your existingconfig.ymlon first startup after upgrading — no manual edits required. - New permission
worldeditdisplay.use.renderis available to control access to/wedisplay render. - Run
/wedisplayreloadafter upgrading to ensure all new settings are applied.
Support
For issues, feature requests, or questions, please open an issue on our GitHub repository.
Full Changelog: 2.2.0...2.3.0
WorldEditDisplay 2.2.0 Selection Sharing, Multi-Platform Support & Performance Improvements
Summary
Major release introducing a Selection Sharing System that lets players share their WorldEdit selections with others in real-time, expanded multi-platform support (Paper, Folia, Spigot), a new RegionRenderer abstract base class for a more extensible rendering architecture, and numerous performance improvements with render caching and async operations.
New Features
Selection Sharing System
- Added
/wedisplay sharecommand to invite other players to view your selection - Selections shared in real-time with persistent storage across sessions
- Each shared selection is assigned a unique color generated automatically
- Unused shared colors are released when sharing ends to optimize resources
- Permission-based access control:
worldeditdisplay.sharerequired to use share commands - Share manager configuration is reloadable via
/wedisplayreload
RegionRenderer Abstract Base Class
- Introduced
RegionRendererabstract base class for a unified and extensible rendering architecture - Simplifies adding new region types and customizing render behavior
Multi-Platform Support
- Added official support for Folia (region-threaded scheduling)
- Added official support for Spigot (in addition to Paper)
- Task scheduling is now platform-aware and routes to the correct scheduler automatically
Region Bounding Box & Distance Utilities
- Added bounding box calculation methods to region objects
- Added distance calculation methods between regions and players for range-based optimizations
Improvements
Rendering Performance
- Introduced renderer-level caching to reduce redundant computation
- Name cache logic for shared renders is now correctly invalidated to avoid stale reads
- Clearing a sharer's render now properly releases associated resources
- Render brightness and label position adjustments for improved visual quality
Async Settings I/O
- Player settings are now saved asynchronously to prevent main-thread blocking
- Config saves are deferred to a scheduled task to avoid repeated disk writes during rapid state changes
Thread Safety
- Share request timeout is now stored in a thread-safe mutable field
- Player multi-region map is now returned as an unmodifiable view to protect data integrity
Bug Fixes
- fix(render): Corrected shared render name-cache invalidation logic to prevent unnecessary re-reads
- fix(player): Returned unmodifiable multi-region map to protect internal data from external mutation
- fix(share): Made share request timeout mutable for proper thread-safe handling
- fix(render): Adjusted brightness calculation and label position for better display results
Technical & CI Updates
- Updated GitHub Actions workflow file versions for improved stability
- Added
adventure-apiexclusion filter to the Spigot Maven profile to prevent class conflicts - Removed
SHARE-DESIGN.mddesign document (merged into implementation)
System Requirements
Component Requirement Minecraft 1.20 ~ 1.21.x Java 21+ Platform Paper / Folia / Spigot PacketEvents 2.11.1+ WorldEdit Latest stable / FAWE
Configuration Notes
- No breaking configuration changes from 2.1.x.
- A new
sharesection will be generated inconfig.ymlon first launch. - Run
/wedisplayreloadafter upgrading to apply any new defaults.
Download
Available on GitHub Actions and Modrinth.
Support
For issues, feature requests, or questions, please open an issue on our GitHub repository.
Full Changelog: 2.1.2...2.2.0
- Added
Нет описания изменений
WorldEditDisplay v2.1.2 Release Notes
Summary
Patch release fixing polygon regions not rendering when the selection has a flat vertical range (minY equals maxY).
Changelog
- fix(region): Polygon region not displayed when
minY == maxY- Fixed a bug where
PolygonRegion.isDefined()used a strictmaxY > minYcheck, which prevented rendering whenever the polygon's vertical range was flat (e.g. a single-block-height selection or when the firstmmevent arrives with equal min/max values). - Changed the condition to
maxY >= minYso polygon regions are rendered correctly in all cases.
- Fixed a bug where
Notes
- No public API changes.
- Fully backward-compatible. No configuration changes required.
Full Changelog: https://github.com/TWME-TW/WorldEditDisplay/compare/2.1.1...2.1.2
- fix(region): Polygon region not displayed when
WorldEditDisplay v2.1.1 Release Notes
Summary
Release adding per-shape see-through settings, a rendering rebase task, and fixing a rendering issue with polyhedron selections.
Note: This release is not fully backward-compatible for configuration.
renderer.global.see_throughhas been removed. Please update yourconfig.ymlbefore upgrading.Changelog
-
fix(renderer): Polyhedron vertex visibility
- Fixed a bug where polyhedron vertex markers were not displayed when only vertex (
p) events had been received and faces (poly) had not yet been reported by WorldEdit. Vertex markers are now rendered immediately as vertex events arrive.
- Fixed a bug where polyhedron vertex markers were not displayed when only vertex (
-
change(renderer): Per-shape
see_throughconfiguration- Removed the global
renderer.global.see_throughsetting. - Added individual
see_throughsettings for each shape type (cuboid, cylinder, ellipsoid, polygon, polyhedron). - Existing configurations using
renderer.global.see_throughmust be updated to the new per-shape format.
- Removed the global
-
feat(renderer): Rendering rebase task
- Added a periodic rebase task to keep TextDisplay entities within view range as players move.
-
perf(renderer): Reduce ellipsoid grid line count
- Changed
calculateGridStepformula fromradius / Ntoceil(2 * radius / N). radius_grid_divisionnow controls the approximate number of grid lines per axis plane rather than being a divisor of the radius.- For mid-sized ellipsoids (e.g. radius 10), grid lines per plane drop from ~20 to ~5, reducing total line entity count by up to 75%.
- Changed
-
chore(deps): Bumped TextDisplayShape dependency to 1.3.0.
Notes
- No public API changes.
- Configuration is not fully backward-compatible:
renderer.global.see_throughhas been replaced with per-shape settings.
Full Changelog: https://github.com/TWME-TW/WorldEditDisplay/compare/2.1.0...2.1.1
-
✨ New Features
- Cylinder & Ellipsoid Fill Options - New fill color and customization settings for Cylinder and Ellipsoid selection types
- Enhanced Player Settings - Extended player preference system with renderer-specific settings for Cylinder and Ellipsoid rendering
- Improved Settings Management - New
PlayerRenderSettingsclass for more granular control over individual selection type rendering preferences
🚀 Improvements
- Optimized Segment Configuration - Refined minimum and maximum segment count adjustments for Cylinder and Ellipsoid renderers for better visual fidelity
- Enhanced Grid Thickness Control - Improved grid thickness adjustments for circular and elliptical selections
- Default Rendering Behavior - Polygon face fill rendering now disabled by default for cleaner initial visualization (users can enable per preference)
- Language File Restructuring - Reorganized language files for Cuboid, Cylinder, Ellipsoid, Polygon, and Polyhedron settings for better localization management
- Settings Command Enhancement - Improved
PlayerSettingsCommandto support new Cylinder and Ellipsoid customization options
📝 Configuration Updates
Several configuration options have been added to
config.ymlfor Cylinder and Ellipsoid rendering. The new format maintains backward compatibility while introducing:- Fill options for Cylinder selections
- Fill color settings for Ellipsoid selections
- Adjustable segment count parameters for both shapes
🐛 Bug Fixes
- Fixed rendering issues with Cylinder and Ellipsoid grid display
- Improved stability for polygon fill rendering by disabling by default
- Enhanced pull request detection reliability
📋 System Requirements
- Java: 21
- Minecraft: 1.21.x
- WorldEdit: Latest stable version
Download
Available on GitHub Actions, Modrinth
Support
For issues, feature requests, or questions, please open an issue on our GitHub repository.
Full Changelog: https://github.com/TWME-TW/WorldEditDisplay/compare/2.0.0...2.1.0
🎨 WorldEditDisplay 2.0.0 - Redesigned Rendering with Customizable Colors & Enhanced Performance
We're thrilled to announce WorldEditDisplay 2.0.0, a major release featuring a complete redesign of the rendering system with extensive improvements to visual customization and performance optimization.
✨ New Features
- Migrated to TextDisplayShapes Framework - Completely redesigned rendering system for more reliable and customizable display entity rendering
- Customizable Colors - Support for custom hex colors (#RRGGBBAA) for all visual elements across all selection types
- Region Face Filling - Enable visual face filling for Cuboid, Polygon, and Polyhedron selections to better visualize 3D regions
- Dirty Region Optimization - Intelligent dirty region tracking to improve rendering performance and reduce unnecessary updates
- Enhanced Renderer Management - Improved architecture for managing multiple renderer instances with better resource allocation
- Single Region Rendering - New capability to render or clear individual regions without affecting others
- CUI Color Override Support - Uses WorldEdit's CUI (Client User Interface) colors to enhance fill surface rendering
- Debug Mode Enhancement - Added detailed WECUI message display in debug mode for easier troubleshooting
🚀 Improvements
- Overall rendering architecture redesign for better performance and maintainability
- Enhanced fill color processing for more accurate visual representation
- Better multi-renderer management system
- Improved region clearing and rendering efficiency
- More robust packet handling and event listeners
🔧 Technical Updates
- Java Requirement: Updated to Java 21
- Dependencies: Updated to latest stable versions
- Framework: Migrated to TextDisplayShapes library for enhanced display entity rendering
📋 Breaking Changes
- Requires Java 21 (previously Java 17)
- Rendering system has been completely redesigned - configurations may need adjustment for optimal appearance
⚠️ Important Configuration Update
You MUST regenerate your
config.ymlfile before upgrading to 2.0.0Due to significant architectural changes in the rendering system, the configuration format has changed substantially.
Action Required:
- Backup your current
config.ymlfile - Delete the old
config.ymlon your server - Start the plugin - it will generate a new
config.ymlwith the updated format - Re-apply any custom settings from your backup to the new configuration file
Attempting to use the old configuration format may cause unexpected behavior or errors.
🐛 Stability
This release includes multiple fixes to ensure stability and better compatibility with the latest Minecraft versions.
Download
Available on GitHub Actions, Modrinth
Support
For issues, feature requests, or questions, please open an issue on our GitHub repository.
What's Changed
- chore(deps): bump com.github.retrooper:packetevents-spigot from 2.10.1 to 2.11.1 by @dependabot[bot] in https://github.com/TWME-TW/WorldEditDisplay/pull/12
- Cleaned up and optimized code and comments by @MissingReports in https://github.com/TWME-TW/WorldEditDisplay/pull/14
New Contributors
- @MissingReports made their first contribution in https://github.com/TWME-TW/WorldEditDisplay/pull/14
Full Changelog: https://github.com/TWME-TW/WorldEditDisplay/compare/1.0.3...1.0.5
