This project is tightly coupled with the Beacon Provider.
Beacon Plugin is a Bukkit/Spigot telemetry plugin that exposes Minecraft server information via Socket.IO to backend services or other consumers. It collects and aggregates data from players, world events, and MTR, Create mod logs, storing them in SQLite for querying.
Beacon Plugin is designed to work in conjunction with Beacon Provider. The Provider supplies modpack-specific telemetry data while Beacon Plugin is responsible for initializing Socket.IO communication to expose server information to the backend or other consumers.
The plugin offers real-time and historical data through Socket.IO events, allowing remote monitoring and data analysis of Minecraft servers.
In short, the Beacon Plugin is primarily responsible for maintaining the SQLite database and providing remote query capabilities. The drivers act as a management layer, handling locking and coordination internally.
src/main/
├── java/com/hydroline/beacon/
│ ├── BeaconPlugin.java # Main plugin entrypoint
│ ├── config/ # Configuration handling
│ ├── gateway/ # Socket.IO gateway and handlers
│ ├── listener/ # Event listeners
│ ├── mtr/ # MTR-specific logic
│ ├── provider/ # Data providers
│ ├── socket/ # Socket.IO server management
│ ├── storage/ # Database operations
│ ├── task/ # Scheduled tasks
│ ├── util/ # Utility functions
│ └── world/ # World data handling
└── resources/
├── config.yml # Default configuration
└── plugin.yml # Plugin metadata
The plugin configuration is located at plugins/Hydroline-Beacon/config.yml (source: src/main/resources/config.yml).
Key configuration options:
port: Socket.IO server portkey: 64-byte secret key for authentication (set a secure random value)interval_time: Scan interval in ticks (1 second = 20 ticks, default: 200 = 10 seconds)mtr_world_scan_enabled: Enable scanning of MTR world data structures (default: true)mtr_world_scan_batch_size: Maximum files per scan batch (default: 16)
Also, the plugin automatically scans the Beacon Provider configuration files in ./config.
# Build the project
./gradlew build
# The compiled JAR will be in build/libs/Socket.IO API integration tests are available in the tests/ directory:
cd tests
pnpm install
node test-socketio.js- Build the plugin:
./gradlew build - Copy the JAR from
build/libs/to your Bukkit server'splugins/directory - Restart the server or use
/reloadcommand - Configure
plugins/Hydroline-Beacon/config.ymlwith your server settings - Set a secure API key before exposing to the network
The plugin exposes the following Socket.IO events. See Socket IO API.md for detailed documentation.