WebMap Integration
WebMap Integration
Section titled “WebMap Integration”KyuubiSoft Panel integrates with EasyWebMap to provide a live, interactive map of your Hytale world with real-time player tracking.
Overview
Section titled “Overview”The WebMap feature provides:
- Live 2D map of your server world
- Real-time player positions with names
- Chunk visualization showing loaded areas
- Zoom and pan controls
- Coordinate display on hover
- WebSocket updates for instant refresh
Requirements
Section titled “Requirements”- EasyWebMap Plugin - Must be installed on the server
- KyuubiAPI Plugin - Provides the data bridge
- Port Configuration - WebMap ports must be accessible
Configuration
Section titled “Configuration”Environment Variables
Section titled “Environment Variables”# WebMap HTTP port for tile servingWEBMAP_PORT=18081
# WebMap WebSocket port for live updatesWEBMAP_WS_PORT=18082Plugin Configuration
Section titled “Plugin Configuration”In your server’s plugins/EasyWebMap/config.json:
{ "enabled": true, "httpPort": 18081, "wsPort": 18082, "renderDistance": 10, "updateInterval": 1000, "showPlayers": true, "showChunkBorders": false}Accessing the Map
Section titled “Accessing the Map”Via Panel
Section titled “Via Panel”- Navigate to WebMap in the sidebar
- The map loads automatically
- Use controls to navigate
Direct Access
Section titled “Direct Access”Open in browser:
http://YOUR_SERVER:18081Embedded View
Section titled “Embedded View”The panel proxies the WebMap through:
http://YOUR_PANEL:18080/api/webmap/This allows single-port access when using a reverse proxy.
Map Controls
Section titled “Map Controls”Navigation
Section titled “Navigation”| Control | Action |
|---|---|
| Scroll | Zoom in/out |
| Drag | Pan the map |
| Double-click | Center on location |
| Right-click | Copy coordinates |
Interface Elements
Section titled “Interface Elements”- Zoom Buttons - +/- for zoom control
- Layer Toggle - Show/hide different layers
- Player List - Click to center on player
- Coordinates - Current mouse position
- Fullscreen - Expand to full screen
Player Tracking
Section titled “Player Tracking”Live Positions
Section titled “Live Positions”Players appear as markers on the map:
- Online players - Show current position
- Moving players - Update in real-time via WebSocket
- Player names - Displayed above markers
Player Information
Section titled “Player Information”Click on a player marker to see:
- Username
- Current coordinates (X, Y, Z)
- Health status
- Current world
Proxy Architecture
Section titled “Proxy Architecture”The panel acts as a reverse proxy to the WebMap:
Browser → Panel (18080) → WebMap HTTP (18081) → WebMap WS (18082)Why Proxy?
Section titled “Why Proxy?”- Single port exposure - Only expose panel port
- Authentication - Uses panel JWT tokens
- CORS handling - Avoids cross-origin issues
- SSL termination - Single HTTPS endpoint
Proxy Endpoints
Section titled “Proxy Endpoints”| Panel Endpoint | Target |
|---|---|
/api/webmap/* | WebMap HTTP server |
/api/tiles/* | WebMap /api/tiles |
/api/worlds/ | WebMap /api/worlds |
/api/webmap-ws | WebMap WebSocket |
Reverse Proxy Setup
Section titled “Reverse Proxy Setup”Nginx Configuration
Section titled “Nginx Configuration”# Panel and WebMap proxylocation / { proxy_pass http://localhost:18080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host;}
# Direct WebMap access (optional)location /map/ { proxy_pass http://localhost:18081/;}With SSL
Section titled “With SSL”server { listen 443 ssl; server_name panel.example.com;
ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;
location / { proxy_pass http://localhost:18080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; }}API Reference
Section titled “API Reference”Endpoints
Section titled “Endpoints”The panel proxies WebMap requests to the external EasyWebMap service:
| Method | Panel Endpoint | Description |
|---|---|---|
| GET | /api/webmap/* | General WebMap requests |
| GET | /api/tiles/:z/:x/:y | Get map tiles |
| GET | /api/worlds/ | Get world and player data |
| WS | /api/webmap-ws | WebSocket for live updates |
WebSocket Messages
Section titled “WebSocket Messages”Player Update:
{ "type": "player_update", "players": [ { "name": "PlayerName", "x": 100, "y": 64, "z": -200, "world": "world" } ]}Chunk Update:
{ "type": "chunk_update", "chunk": { "x": 6, "z": -13, "rendered": true }}Permissions
Section titled “Permissions”WebMap access is controlled through general server permissions. Users with server.view permission can access the WebMap feature.
Troubleshooting
Section titled “Troubleshooting”Map Not Loading
Section titled “Map Not Loading”-
Check plugin installation:
Terminal window docker exec hytale ls plugins/ | grep -i webmap -
Verify ports are accessible:
Terminal window curl http://localhost:18081/ -
Check plugin logs:
Terminal window docker-compose logs hytale | grep -i webmap
Players Not Showing
Section titled “Players Not Showing”- Ensure
showPlayers: truein plugin config - Check KyuubiAPI plugin is connected
- Verify WebSocket connection in browser dev tools
Tiles Not Rendering
Section titled “Tiles Not Rendering”- Wait for chunks to be generated
- Check render distance setting
- Verify disk space for tile cache
WebSocket Disconnects
Section titled “WebSocket Disconnects”- Check reverse proxy WebSocket config
- Verify
TRUST_PROXY=trueif proxied - Check browser console for errors
Performance Tips
Section titled “Performance Tips”- Limit render distance - Lower
renderDistancefor better performance - Increase update interval - Higher
updateIntervalreduces CPU usage - Use tile caching - Tiles are cached after first render
- Limit simultaneous viewers - Many viewers increase bandwidth