CoreProtect Visualizer
Automatically visualize CoreProtect lookup results in-game with colored glowing block outlines at detected coordinates.
Features
- Automatic Coordinate Detection - Intercepts CoreProtect chat messages via ProtocolLib and extracts coordinates from
/co inspect,/co lookup, and/co teleportoutput - Action-Based Coloring - Green for placed blocks, red for broken blocks, cyan for interactions, yellow for unknown actions (all configurable with hex colors)
- Two Render Engines
block_display- Renders the actual block model at the location (default)shulker- Lightweight invisible shulker with a glowing outline only
- Per-Player Toggle - Each player can enable or disable visualization independently with
/cpvis toggle - Configurable Duration - Visualizations auto-clear after a configurable time (default 30s) or can be cleared manually
- Custom Regex Patterns - All coordinate detection patterns are configurable; add or modify to match any chat format
- Fully Configurable Messages - Every plugin message in
config.ymlwith support for legacy color codes (&a) and hex colors (&#FF5555) - Block Color Customization - Override default block-to-color mappings in config with hex or named colors
Requirements
- Paper 1.21+ (API 1.21)
- CoreProtect 23+ (v24 recommended)
- ProtocolLib - Required for packet interception
Installation
- Drop the JAR into your server's
pluginsfolder - Ensure ProtocolLib and CoreProtect are installed
- Restart the server
- Configure via
plugins/CoreProtectVisualizer/config.yml
Commands & Permissions
| Command | Description | Permission |
|---|---|---|
/cpvis toggle |
Toggle visualizer on/off | coreprotectvisualizer.toggle |
/cpvis clear |
Clear all your visualizations | coreprotectvisualizer.clear |
/cpvis status |
View visualizer status | coreprotectvisualizer.use |
/cpvis reload |
Reload configuration | coreprotectvisualizer.reload |
/cpvis help |
Show help message | coreprotectvisualizer.use |
Aliases: /cpv, /coreprotectvis
| Permission | Description | Default |
|---|---|---|
coreprotectvisualizer.use |
Base permission to use the plugin | op |
coreprotectvisualizer.toggle |
Toggle visualizer on/off | op |
coreprotectvisualizer.clear |
Clear visualizations | op |
coreprotectvisualizer.reload |
Reload config | op |
Configuration
enabled: true
visualization:
duration: 30 # seconds (0 = never auto-clear)
max-visualizations: 100
engine: block_display # "block_display" or "shulker"
colors-by-action: true
default-block-material: GLASS
action-colors:
place: "#00FF00"
break: "#FF0000"
interact: "#00FFFF"
unknown: "#FFFF00"
# block-colors:
# DIAMOND_ORE: AQUA
# GOLD_ORE: "#FFAA00"
message-interception:
enabled: true
coordinate-patterns:
- "\(x(-?\d+)/y(-?\d+)/z(-?\d+)\)" # /co inspect
- "\(x(-?\d+)/y(-?\d+)/z(-?\d+)/[^)]*\)" # /co lookup clickable
- "#\d+/x(-?\d+)/y(-?\d+)/z(-?\d+)" # /co lookup
- "/co\s+teleport\s+\w+\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)" # /co teleport
- ".*x:?\s*(-?\d+).*y:?\s*(-?\d+).*z:?\s*(-?\d+).*"
messages:
prefix: "&a&l[CoreProtect Visualizer]"
toggle-enabled: "&aVisualizer &aenabled&7."
toggle-disabled: "&aVisualizer &cdisabled&7."
clear-success: "&7Cleared &e{count} &7visualization(s)."
# ... all messages are configurable
How It Works
- Run a CoreProtect command (
/co lookup u:Notch t:7d,/co inspect, or/co i) - The plugin intercepts the chat packet via ProtocolLib
- Coordinates are extracted using configurable regex patterns
- Action and block type are determined from the message text or CoreProtect API
- A colored glowing BlockDisplay (or shulker outline) is created at each location
- Visualizations automatically expire after the configured duration or via
/cpvis clear
Support
Found a bug or have a suggestion? Open an issue on GitHub.

