Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
ChatProfiles
You know the situation: a player reports someone for something said in chat an hour ago — or a month ago. The evidence is gone, it's one word against another, and you're stuck.
ChatProfiles fixes that. It quietly records every player's chat messages into a local database, so when a report comes in you can pull up exactly what was said.
What you get
- Paged history — browse any player's past messages right in chat, 10 per page.
- One-command export — dump a player's full history to a clean
.txtfile for tickets or Discord reports. - Safe clearing — deleting history takes two steps, so nobody wipes evidence by typo.
- Report snapshots — an API for report plugins to freeze a player's recent messages permanently, safe from automatic cleanup.
Commands
| Command | What it does | Who can use it |
|---|---|---|
/chatprofile <player> [page] |
Browse chat history | Operators |
/chatprofile export <player> |
Save history as .txt |
Operators |
/chatprofile clear <player> |
Delete history (asks twice) | Operators |
Everything runs async and works from console too.
Built for busy servers
Chat messages are never written to disk on the event thread. They're queued in memory and flushed to SQLite in batches every few seconds — a single writer thread, one transaction per batch. In testing, 1,500 messages flush in ~20 ms. Servers with thousands of concurrent players won't feel it.
Retention is configurable: by default the last 1,000 messages per player or 60 days, whichever runs out first. Old rows are purged automatically once a day.
Configuration
retention:
max-messages-per-player: 1000
retention-days: 60
pipeline:
batch-interval-seconds: 5
batch-size: 500
See config.yml for the rest — queue size, cache size, page size, and filters are all tunable.
FAQ
Will this lag my server? No. Disk writes happen off-thread in batches. The chat event handler only puts a small object in a queue.
Where is the data stored? Local SQLite file by default. The storage layer is a clean interface, so MySQL support can be added later for networks.
Can a player request deletion?
Yes — /chatprofile clear <player> removes everything for that player.
Does it log commands? No, only real chat messages.


