WorldEditDisplay is a server-side plugin for Minecraft that adds visual selection rendering for WorldEdit. It intercepts WorldEdit's CUI (Client User Interface) protocol packets and renders selections using Display Entities on the server side. This means players can see their WorldEdit selections without installing any client-side mods.
Selection Types
- Cuboid - Box selections with edge lines and grid display
- Polygon - 2D polygon boundaries with vertical columns
- Ellipsoid - Smooth elliptical selections
- Cylinder - Circular selections with adjustable height
- Polyhedron - Complex 3D polyhedral structures
Visual Rendering
- Uses Minecraft's Display Entity system
- Customizable block materials for all visual elements
- Adjustable line thickness and grid density
- Grid overlay for easier size calculation
Multi-language Support
The interface is available in multiple languages with automatic client language detection:
- Traditional Chinese (zh_tw)
- English (en_us)
Player Settings
Players can customize their own rendering preferences:
- Choose preferred block materials
- Adjust line thickness within server limits
- Control grid spacing and density
- Changes apply immediately
Configuration System
- Server-wide defaults in
config.yml - Per-player overrides in
player_config/*.yml - Hot reload without server restart
- Minecraft 1.20 ~ 1.21.x (Paper)
- Java 21 or higher
- Required plugins:
- PacketEvents 2.10.1+
- Make sure WorldEdit and PacketEvents are installed on your server
- Download
WorldEditDisplay.jar - Place it in your server's
pluginsfolder - Restart the server
- Edit
plugins/WorldEditDisplay/config.ymlif needed - Use
/wedisplayreloadto reload the configuration
Admin Commands
/wedisplayreload - Reload plugin configuration
- Permission:
worldeditdisplay.reload(default: op)
Player Commands
/wedisplay set <renderer> <setting> <value> - Configure personal rendering settings
- Example:
/wedisplay set cuboid line_material GOLD_BLOCK - Permission:
worldeditdisplay.use.settings
/wedisplay reset <renderer> [setting] - Reset to server defaults
- Example:
/wedisplay reset cuboid(reset all settings) - Example:
/wedisplay reset cuboid line_material(reset specific setting)
/wedisplay show [renderer] - Show current settings
- Example:
/wedisplay show(show all) - Example:
/wedisplay show cuboid(show specific renderer)
/wedisplay toggle - Toggle rendering on/off
- Quick command to enable or disable selection visualization
- Works independently for each player
/wedisplay reloadplayer - Reload your personal configuration file
/wedisplay lang <language> - Set interface language
- Example:
/wedisplay lang en_us - Supported: zh_tw, en_us
The main configuration file is config.yml:
language:
default: "zh_tw" # Default language
auto_detect: true # Auto-detect player's client language
allow_player_change: true # Allow players to change language manually
renderer:
cuboid:
line_material: GOLD_BLOCK # Material for edges
line_thickness: 0.05 # Line thickness
grid_spacing: 8 # Grid spacing
# ... more settings
player_limits:
thickness:
min: 0.01 # Minimum thickness
max: 0.5 # Maximum thickness players can set
# ... more limitsEach renderer type has its own configuration section:
- cuboid
- **polygon**
- **ellipsoid**
- **cylinder**
- **polyhedron**
Core Components
- Packet listener intercepts WorldEdit CUI protocol messages
- Render engine creates Display Entities to visualize selections
- Configuration manager handles server-wide and per-player settings
- Language manager provides multi-language support
Rendering Technology
The plugin uses Minecraft's Display Entity system:
- Display entities render the visual elements
- More efficient than particle effects
- Works with vanilla clients (no mods required)
Performance
- Only updates when selections change
- Server admins can limit grid density and segment counts
- Each player's settings are independent
worldeditdisplay.use: # Use visualization features (default: true)
worldeditdisplay.use.settings: # Manage personal settings (default: true)
worldeditdisplay.reload: # Reload configuration (default: op)
worldeditdisplay.render.auto-enable: # Automatically enable rendering on join (default: true)About Auto-Enable Permission
The worldeditdisplay.render.auto-enable permission controls whether rendering is automatically enabled when a player joins the server:
- With permission: Rendering is enabled by default when logging in
- Without permission: Players must manually use
/wedisplay toggleto enable rendering
This allows server admins to control which player groups have rendering enabled by default.
Basic Usage
- Use WorldEdit's
//wandcommand to get the selection tool - Left/right click blocks to define your selection
- The selection is automatically visualized (no extra steps needed)
- Use
/wedisplaycommands to customize the appearance
Customization Examples
# Change cuboid edges to diamond blocks
/wedisplay set cuboid line_material DIAMOND_BLOCK
# Make lines thicker
/wedisplay set cuboid line_thickness 0.08
# Change grid spacing
/wedisplay set cuboid grid_spacing 16
# Toggle rendering on/off
/wedisplay toggle
# Reset all settings
/wedisplay reset cuboidTo build the plugin from source:
mvn clean packageThe compiled jar will be in target/worldeditdisplay-1.0.3.jar
Project Structure
src/main/java/dev/twme/worldeditdisplay/
├── event/ # CUI event system
├── display/ # Render engine
│ └── renderer/ # Renderer implementations
├── config/ # Configuration management
├── lang/ # Language system
├── command/ # Command handlers
├── listener/ # Packet listeners
└── player/ # Player data management
Issues and pull requests are welcome.
See LICENSE file for details.
- TWME-TW - Developer
- WorldEdit - The core editing tool
- WorldEditCUI - Client-side CUI mod (protocol reference)
- PacketEvents - Packet handling library
- EntityLib - Entity manipulation library
WorldEditDisplay 是一個 Minecraft 伺服器端插件,為 WorldEdit 增加視覺化選區渲染功能。它會攔截 WorldEdit 的 CUI(Client User Interface)協議封包,並在伺服器端使用 Display Entity 進行渲染。這表示玩家不需要安裝任何客戶端模組就能看到他們的 WorldEdit 選區。
選區類型
- 長方體 - 方框選區,包含邊框線和網格顯示
- 多邊形 - 2D 多邊形邊界與垂直柱體
- 橢圓體 - 平滑的橢圓形選區
- 圓柱體 - 圓形選區,可調整高度
- 多面體 - 複雜的 3D 多面體結構
視覺渲染
- 使用 Minecraft 的 Display Entity
- 所有視覺元素都可以自訂方塊材質
- 可調整線條粗細和網格密度
- 網格覆蓋層方便計算大小
多語言支援
介面支援多種語言,並可自動偵測客戶端語言:
- 繁體中文 (zh_tw)
- 英文 (en_us)
玩家設定
玩家可以自訂渲染偏好:
- 選擇喜歡的方塊材質
- 在伺服器限制內調整線條粗細
- 控制網格間距和密度
- 變更後立即生效
配置系統
- 伺服器預設值設定在
config.yml - 玩家個人覆寫設定在
player_config/*.yml - 無需重啟伺服器即可熱重載
- Minecraft 1.20 ~ 1.21.x(Paper)
- Java 21 或更高版本
- 必要插件:
- PacketEvents 2.10.1+
- 確保伺服器已安裝 WorldEdit 和 PacketEvents
- 下載
WorldEditDisplay.jar - 放入伺服器的
plugins資料夾 - 重啟伺服器
- 如需要可編輯
plugins/WorldEditDisplay/config.yml - 使用
/wedisplayreload重新載入配置
管理員指令
/wedisplayreload - 重新載入插件配置
- 權限:
worldeditdisplay.reload(預設:op)
玩家指令
/wedisplay set <renderer> <setting> <value> - 設定個人渲染設定
- 範例:
/wedisplay set cuboid line_material GOLD_BLOCK - 權限:
worldeditdisplay.use.settings
/wedisplay reset <renderer> [setting] - 重置為伺服器預設值
- 範例:
/wedisplay reset cuboid(重置所有設定) - 範例:
/wedisplay reset cuboid line_material(重置特定設定)
/wedisplay show [renderer] - 顯示當前設定
- 範例:
/wedisplay show(顯示全部) - 範例:
/wedisplay show cuboid(顯示特定渲染器)
/wedisplay toggle - 切換渲染開關
- 快速指令來啟用或停用選區視覺化
- 每個玩家獨立運作
/wedisplay reloadplayer - 重新載入你的個人配置檔案
/wedisplay lang <language> - 設定介面語言
- 範例:
/wedisplay lang en_us - 可用語言:zh_tw, en_us
主要配置檔案是 config.yml:
language:
default: "zh_tw" # 預設語言
auto_detect: true # 自動偵測玩家客戶端語言
allow_player_change: true # 允許玩家手動變更語言
renderer:
cuboid:
line_material: GOLD_BLOCK # 邊緣材質
line_thickness: 0.05 # 線條粗細
grid_spacing: 8 # 網格間距
# ... 更多設定
player_limits:
thickness:
min: 0.01 # 最小粗細
max: 0.5 # 玩家可設定的最大粗細
# ... 更多限制每種渲染器類型都有自己的配置區段:
- cuboid
- **polygon**
- **ellipsoid**
- **cylinder**
- **polyhedron**
核心組件
- 封包監聽器攔截 WorldEdit CUI 協議訊息
- 渲染引擎建立 Display Entity 來視覺化選區
- 配置管理器處理伺服器端和玩家端設定
- 語言管理器提供多語言支援
渲染技術
插件使用 Minecraft 的 Display Entity 系統:
- Display 實體渲染視覺元素
- 比粒子效果更有效率
- 原版客戶端即可使用(不需要模組)
效能
- 只在選區變更時更新
- 伺服器管理員可限制網格密度和分段數
- 每個玩家的設定互相獨立
worldeditdisplay.use: # 使用視覺化功能(預設:true)
worldeditdisplay.use.settings: # 管理個人設定(預設:true)
worldeditdisplay.reload: # 重新載入配置(預設:op)
worldeditdisplay.render.auto-enable: # 登入時自動啟用渲染(預設:true)關於自動啟用權限
worldeditdisplay.render.auto-enable 權限控制玩家加入伺服器時是否自動啟用渲染:
- 擁有權限:登入時預設啟用渲染
- 沒有權限:玩家必須手動使用
/wedisplay toggle來啟用渲染
這讓伺服器管理員可以控制哪些玩家群組預設啟用渲染。
基本使用
- 使用 WorldEdit 的
//wand指令取得選取工具 - 左鍵/右鍵點擊方塊來定義選區
- 選區會自動視覺化(不需要額外步驟)
- 使用
/wedisplay指令來自訂外觀
自訂範例
# 將長方體邊緣改為鑽石塊
/wedisplay set cuboid line_material DIAMOND_BLOCK
# 增加線條粗細
/wedisplay set cuboid line_thickness 0.08
# 變更網格間距
/wedisplay set cuboid grid_spacing 16
# 切換渲染開關
/wedisplay toggle
# 重置所有設定
/wedisplay reset cuboid從原始碼建置插件:
mvn clean package編譯後的 jar 檔會在 target/worldeditdisplay-1.0.3.jar
專案結構
src/main/java/dev/twme/worldeditdisplay/
├── event/ # CUI 事件系統
├── display/ # 渲染引擎
│ └── renderer/ # 渲染器實作
├── config/ # 配置管理
├── lang/ # 語言系統
├── command/ # 指令處理器
├── listener/ # 封包監聽器
└── player/ # 玩家資料管理
歡迎提交 Issue 和 Pull Request。
詳見 LICENSE 文件。
- TWME-TW - 開發者
- WorldEdit - 核心編輯工具
- WorldEditCUI - 客戶端 CUI 模組(協議參考)
- PacketEvents - 封包處理函式庫
- EntityLib - 實體操作函式庫
Made with ❤️ by TWME-TW