Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
AetherLog – Alpha Release
Next‑Generation Logging & Rollback
AetherLog is a high‑performance, storage‑efficient Minecraft server logger and rollback engine. Designed for large servers, it stores block, container, chat, command, session, and entity events with 5–10x less disk space than traditional solutions – while providing crash‑safe rollbacks, per‑chunk integrity checks, and zero‑I/O time filtering.
🚀 Why AetherLog?
- Ultra‑compact binary format – Per‑chunk files with delta compression, Bloom filters, and optional index/bloom sections.
- 5–10x smaller storage – Your disk won’t fill up overnight.
- Crash‑safe rollback – Atomic file writes + CRC32 checksums + rollback journal recovery.
- Natural event filtering – Water flow, fire spread, crop growth, leaf decay, and entity block changes are never rolled back unless you
--force-natural. - Instant query – Filename‑embedded maxTimestamp and coordinate bloom filters skip chunks before any disk I/O.
- Full block state support – All block data (orientation, waterlogged, etc.) stored as short IDs, not strings.
- Tiered compression – Hot chunks stay as
.al; cold chunks become.alc(Zstd). - WorldEdit & FastAsyncWorldEdit – Fully integrated.
- MySQL backend – Chunk BLOBs with HikariCP connection pooling.
- Live web dashboard – Real‑time activity stream, filtering, and server stats.
✨ Logged Events
| Category | Events |
|---|---|
| Blocks | Place, break, burn, liquid flow |
| Containers | Chest, barrel, shulker box, dispenser, hopper, furnace |
| Chat & Commands | Full message and command logging |
| Player sessions | Join / quit with timestamps |
| Items | Drop, pickup |
| Entities | Player kills, entity‑block changes (enderman, silverfish) |
| WorldEdit | All operations (//set, //replace, //cut, //paste, //undo, //redo) |
| Natural events | Leaves decay, crop growth, block fade (logged but not rolled back) |
🛠️ Core Features
Rollback & Restore
/al rollback [u:<player>] [t:<time>] [r:<radius>] [--force-natural]/al restore– Undo the last rollback./al preview– See ghost blocks before confirming rollback.
Lookup & Inspect
/al lookup [u:<player>] [t:<time>] [a:<action>] [p:<page>]- Full tab completion for all parameters.
/al i– Inspect mode (right‑click with a stick).- Container history GUI – View chest transactions in a chest interface.
Live Web Dashboard
- Real‑time activity stream (auto‑refresh every 5 seconds).
- Filter by world, player, action type, time range, and radius.
- Export results to CSV.
- Server stats: online players, total logged entries, disk usage.
- Secure with HTTP Basic Authentication.
Audit & Alerts
/al audit <player>– Mining efficiency report (diamond, debris vs. stone).- Grief alerts – Real‑time notification when a player breaks many valuable blocks in 10s.
Maintenance
/al reload– Reload configuration without restart.- Automatic purge – Deletes chunks older than
purge.retention-days. - Auto‑index rebuild – Detects corrupted chunks and rebuilds index/bloom from raw data.
- Crash‑safe journaling – Rollback changes written to
.journalfiles; recovered on next startup. - Clean console – Debug logs can be disabled via
logging.debug: false.
📦 Storage Footprint
| Test | AetherLog | Legacy SQL‑based |
|---|---|---|
| 1 block | 39 KB | 219 KB |
| TNT (same chunk) | 284 KB | 759 KB |
| TNT (different chunks) | 1.60 MB | 2.86 MB |
Average saving: ~60‑80% less disk usage.
📥 Installation
- Download
AetherLog-1.0-SNAPSHOT.jarfrom the releases page. - Place it in your server’s
plugins/folder. - Restart the server (or run
/plugman load AetherLogif using PlugMan). - Use
/alto start.
Note: Paper 1.21 is required. WorldEdit and FastAsyncWorldEdit are optional soft dependencies.
📚 Commands Overview
| Command | Description |
|---|---|
/al i |
Toggle inspect mode (use a stick) |
/al lookup [u:<player>] [t:<time>] [a:<action>] [p:<page>] |
Search logged events (tab completion supported) |
/al rollback [u:<player>] [t:<time>] [r:<radius>] [--force-natural] |
Revert changes |
/al restore |
Undo last rollback |
/al preview [parameters] |
Show ghost blocks before rollback |
/al cancel |
Clear current preview |
/al audit <player> [t:<time>] |
Mining efficiency report |
/al reload |
Reload configuration |
Time formats: 1h, 30m, 2d, 1h30m
Action filters: chat, command, session, drop, pickup, kill, place, break
🌐 Web Interface Quick Start
- Enable in
config.ymland set a username/password. - Restart or reload.
- Visit
http://your-server-ip:8080. - Log in with your credentials.
- Watch live activity, filter logs, export data.
Security: Never expose the web interface to the public internet without HTTPS and authentication. Use a firewall or reverse proxy.
🔮 Roadmap to Beta
- [ ] Player inventory logging
- [ ] Username history tracking
- [ ] Teleport from lookup results (clickable coordinates)
- [ ] Multi‑language support
- [ ] Folia compatibility
🐛 Reporting Issues
Alpha means some edge cases may still exist.
Please report bugs on Discord with:
- Server version (Paper build)
- Steps to reproduce
- Any errors from
logs/latest.log
📜 License
AetherLog is open source under the MIT License.
Start logging smarter today.
Less storage, more safety, full control.
🔧 Configuration Highlights
Config
# AetherLog v2 Configuration
# Ultra-compact binary logging engine
# Object pool settings
pool:
# Maximum number of reusable LogEntry objects in the global pool.
# Higher values reduce GC pressure on busy servers at the cost of
# slightly higher baseline memory (~200 bytes per entry).
max-entries: 4096
# Buffer pool settings
buffer-pool:
# Number of ByteBuffers kept in the pool for chunk batch writes.
# Each buffer is reused instead of allocating new byte[] arrays.
capacity: 32
# Size of each buffer in bytes. Must be large enough for the biggest
# chunk batch including embedded index, bloom, bitset, and time-range
# sections (v4 format). 262144 (256KB) is recommended; the system will
# fall back to heap allocation if a batch exceeds this size.
buffer-size: 2048576 # 1MB
# Use direct (off-heap) ByteBuffers. Default false; enable only if
# profiling shows heap buffer copies to the mapped file bottleneck.
direct: false
# Flush settings
flush:
# Maximum entries in memory before forcing a disk flush
threshold: 5000
# Interval in seconds between automatic flushes
interval-seconds: 300
# Jitter filter eliminates accidental place/break cycles
# (e.g., silk touch mining, building adjustments)
jitter:
# Milliseconds within which a place→break or break→place pair is discarded
window-ms: 15000
# How often to purge expired jitter entries
purge-interval-seconds: 30
# File handle cache
handles:
# Maximum number of open chunk files to keep cached
max-cache-size: 512
# Idle time in minutes before closing a cached handle
expire-minutes: 5
# Logging scope
logging:
# Enable verbose diagnostic logging for debugging
debug: false
# Log block placements and breaks
blocks: true
# Log container inventory changes
containers: true
# Log fire spread / block burning
fire: true
# Log liquid (water/lava) flow
liquid-flow: true
# Log natural leaf decay
leaves-decay: true
# Log crop/plant growth (crops, sugarcane, cactus, saplings)
crop-growth: true
# Log block fade (ice melt, fire burn out, coral death)
block-fade: true
# Log entity block changes (enderman, silverfish, rabbits, etc.)
entity-change: true
# Log hanging entity placement (item frames, paintings)
hanging-place: true
# Log bucket empty/fill events
bucket: true
# Log player chat messages
chat: true
# Log player commands
commands: true
# Log player joins and quits
sessions: true
# Log items dropped by players
item-drops: true
# Log items picked up by players
item-pickups: true
# Log entity deaths caused by players
entity-kills: true
# Purge settings
purge:
# Number of days to retain logs (0 = disabled, keep forever)
retention-days: 30
# Interval in hours between purge scans
interval-hours: 6
# Rollback settings
rollback:
# Maximum radius in blocks for a single rollback command
max-radius: 500
# Maximum number of entries to process per lookup
max-lookup-results: 10000
# Journal settings (CRIT-9 crash-safe rollback)
journal:
# Enable journal files for crash-safe rollbacks.
# When enabled, a .journal file is written before applying rollback
# changes. If the server crashes mid-rollback, the journal is
# detected on next startup and the partial rollback is reverted.
enabled: false
# Storage backend: file (default) or mysql
storage:
backend: file
# Use atomic rename (temp file + move) for crash-safe chunk writes.
# Disabling this gives slightly better write performance but risks
# half-written files on power loss.
atomic-rename: true
# Verify CRC32 checksum footer on every chunk read.
# Disabling this improves read performance but may allow corrupted
# data to propagate.
checksum-verification: true
# Automatically rebuild index/bitset/bloom from chunk file when
# corruption is detected. Requires checksum-verification to be enabled.
auto-rebuild-index: true
# MySQL connection settings (only used when storage.backend = mysql)
mysql:
host: localhost
port: 3306
database: aetherlog
username: root
password: ''
# HikariCP connection pool settings (CRIT-7)
pool-size: 10
pool-min-idle: 2
connection-timeout-ms: 30000
idle-timeout-ms: 600000
max-lifetime-ms: 1800000
# Web interface settings
web:
# Enable the built-in web dashboard
enabled: true
# Port to listen on
port: 8080
# HTTP Basic Authentication credentials (HIGH-9)
# Set both username and password to enable authentication.
# Leave empty to run without auth (NOT recommended for public servers).
username: ''
password: ''
Full example in config.yml.


