EchoCraft is a temporal memory, reconstruction and player-trace system for Paper Minecraft servers.
It records structural changes, captures temporal snapshots, restores damaged builds and integrates with EchoPanel through an authenticated REST API.
- Automatic structure snapshots
- Block reconstruction after explosions
- Temporal memory versions
- Player movement traces
- Player action tracking
- SQLite persistence
- Snapshot history grouped by timeline
- Manual memory restoration
- Confirmation step before restoration
- Automatic database backups
- EchoPanel heartbeat integration
- Activity synchronization with EchoPanel
- Remote restoration commands from EchoPanel
- Restoration audit logs
- Support for named timelines and snapshots
Structure changes
│
▼
EchoCraft creates a temporal snapshot
│
├── stores blocks
├── stores player traces
├── stores player actions
└── assigns timeline and version metadata
│
▼
Snapshot saved in SQLite
│
├── can be restored in Minecraft
└── can be synchronized with EchoPanel
When EchoPanel integration is enabled, the plugin also sends heartbeat data, reconstruction events, player traces and timeline snapshots to the web panel.
- Java
- Paper API
- Gradle
- SQLite
- REST API
- JSON
- Java HTTP Client
- Java 21 or newer
- A compatible Paper server
- Gradle wrapper included in the repository
- EchoPanel is optional
Clone the repository:
git clone https://github.com/phmbezerra/EchoCraft.git
cd EchoCraftBuild the plugin:
.\gradlew.bat clean build./gradlew clean buildThe compiled plugin will be generated in:
build/libs/
- Stop the Minecraft server.
- Build the plugin or download a release.
- Copy the generated
.jarinto the server'spluginsfolder. - Start the server.
- Configure EchoCraft in:
plugins/EchoCraft/config.yml
Do not delete the plugin database unless you intentionally want to remove saved temporal memories.
Default configuration:
echopanel:
enabled: true
url: "http://echopanel.test/api/servers/heartbeat"
token: ""
interval-seconds: 30| Option | Description |
|---|---|
enabled |
Enables or disables EchoPanel integration |
url |
EchoPanel heartbeat endpoint |
token |
API key generated by EchoPanel |
interval-seconds |
Heartbeat interval |
Never commit a real API key to GitHub.
The plugin derives the activity and command endpoints from the configured EchoPanel URL.
/echolist
Displays available temporal memories.
/echorestore <memory-id>
Prepares the selected memory for restoration.
/echorestore <memory-id> confirm
Confirms and starts the restoration.
The plugin uses a confirmation step to reduce accidental restores.
Each snapshot may contain:
- snapshot ID
- timeline ID
- version number
- memory type
- creation cause
- captured blocks
- player traces
- player actions
- world and coordinates
- creation timestamp
Common memory types include:
- explosion snapshot
- manual block change
- restoration snapshot
EchoCraft records player movement around monitored structures.
A player trace event may include:
- player UUID
- player name
- location
- number of trace points
- number of recorded actions
- related snapshot
- related timeline and version
These traces can be sent to EchoPanel and displayed alongside reconstruction events.
EchoCraft can communicate with EchoPanel using an API key.
EchoCraft
→ sends server status
→ EchoPanel updates online state
→ player count and version are displayed
Snapshot or restoration occurs
→ EchoCraft sends activity data
→ EchoPanel stores the event
→ timeline and activity cards are updated
User requests a restoration in EchoPanel
→ EchoPanel queues a command
→ EchoCraft claims the command
→ memory is restored
→ result is reported back to EchoPanel
The plugin periodically checks EchoPanel for pending commands when integration is enabled.
EchoCraft stores temporal data in SQLite:
plugins/EchoCraft/echocraft.db
The plugin may also create automatic database backups.
Important local files:
plugins/EchoCraft/config.yml
plugins/EchoCraft/echocraft.db
plugins/EchoCraft/backups/
These files should be backed up before major updates.
Sensitive and local files are ignored by Git, including:
- SQLite databases
- API tokens
- local server folders
- backups
- logs
- generated build files
- IDE configuration
The public config.yml should always use an empty token:
token: ""EchoCraft performs world changes on the Minecraft server thread and uses asynchronous HTTP requests for EchoPanel communication.
The project includes:
- snapshot capture logic
- restoration locking
- persistence layer
- player-trace recording
- activity synchronization
- remote-command polling
- audit logging
- EchoPanel — Web monitoring and remote-control panel for EchoCraft
EchoCraft is under active development.
Current features are functional in a local Paper server environment with EchoPanel integration.
Developed by Paulo Henrique.