Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
ReportSystem
ReportSystem is a structured reporting framework designed to bridge the gap between players and the staff team. ReportSystem has a simple GUI, Discord webhook integration, and persistent database tracking. ReportSystem makes a simple reporting process all without cluttering your server.
Compatibility
- Made for 1.17-26.2 | Tested versions: 1.17, 1.19.2, 1.21.8, 1.21.11, 26.1.2, 26.2.
- Platforms: Bukkit, Spigot, Paper, Purpur, Pufferfish, Folia, Velocity, BungeeCord, Waterfall, and Sponge
ReportSystem also includes a suspicious player tracking system, giving staff a dedicated space to flag players based on same IP's or fast rejoining. Combined with user management tools, punishment history records (ReportSystem punishments. Not any third party punishment plugins), and per player reports. This means it provides staff with the best possible context you can get from a in game simple report (another reporting system for proofs is recommended, this plugin is mostly for in game active staff.)
Main Features
Player, staff, and bug reports
- Guided Bukkit inventory forms
- Player reports, staff reports, and bug reports
- Configurable report reasons
- Optional extra details and Discord contact
- Server selection and origin server context
- Confirmation messages, sounds, and visual feedback
- Report exemptions for protected players
- Persistent reporter and target history
- Native Sponge submission commands for player, staff, and bug reports
Report management
- Open and resolved report states
- High, normal, and low priority
- Detailed report viewer
- Moderator notes
- Close and resolution categories
- Per player report history
- Report abuse timeouts and permanent report blocks
- Punishment history for ReportSystem's own report restrictions
- Asynchronous database work so moderation menus do not wait on SQL
ReportSystem's timeout and block tools apply only to use of /report. They are not a replacement
for a server wide punishment plugin.
Suspicious view
/suspicious is a focused view of players who currently have open player or staff reports.
- Ranked by open report activity
- Built from the same authoritative report records as
/reports - No IP collection
- No shared IP matching
- No fast rejoin detection
- No anti cheat heuristics
- No automatic player flagging
The view helps staff find report heavy cases without pretending that a report is proof of cheating.
Discord and staff alerts
- Live in game alerts for permitted staff
- Configurable alert prefix and fonts on Bukkit family servers
- Optional Discord webhook embeds
- Separate colors for open, closed, priority, low priority, staff, and bug reports
- Optional player head thumbnails
- Configurable fields and labels
- Origin platform and instance information in cross platform alerts
- Velocity and BungeeCord proxy alerts through the shared Redis channel
Storage and multi platform
- SQLite by default for standalone servers
- MySQL through HikariCP for shared networks
- Prepared statements
- Startup schema creation and migration
- One shared report schema for Bukkit-family and Sponge builds
- Versioned
reportsystem.sync.v1Redis events - Automatic Redis reconnect after an outage
- Backward-compatible event identity for rolling upgrades
- Unique platform and instance labels in live staff notifications
MySQL is the authoritative shared data store. Redis carries immediate new, updated, and closed report notifications so every connected platform can refresh or alert without polling.
Platform builds
| Build | Purpose |
|---|---|
ReportSystem.jar |
Full GUI plugin for Bukkit, Spigot, Paper, Purpur, Pufferfish, and Folia |
ReportSystem+Velocity.jar |
Native Velocity companion for network-wide staff alerts |
ReportSystem+Bungeecord.jar |
Native BungeeCord, Waterfall, and compatible-fork alert companion |
ReportSystem+Sponge.jar |
Native SpongeAPI 8 reporting, moderation, storage, suspicious view, and alerts |
The Sponge JAR never loads Bukkit, Paper, or Folia classes. The proxy companions do not need access to the MySQL password because they only consume Redis alert events.
Commands
| Command | Description |
|---|---|
/report [player] |
Open the report form |
/reports |
Open the staff report-management GUI |
/suspicious |
View players with open reports |
/rs alerts |
Toggle personal report alerts |
/rs report |
Open the report form |
/rs reports |
Open report management |
/rs suspicious |
Open the suspicious view |
/rsreload |
Reload ReportSystem |
Permissions
| Permission | Purpose |
|---|---|
reportsystem.report |
Submit player reports |
reportsystem.report.staff |
Submit staff reports |
reportsystem.moderate |
Access report management |
reportsystem.moderate.close |
Close or resolve reports |
reportsystem.moderate.priority |
Change report priority |
reportsystem.moderate.notes |
Edit moderator notes |
reportsystem.moderate.notebook |
Receive a written report note book |
reportsystem.moderate.staffreports |
View staff reports |
reportsystem.suspicious |
View players with open reports |
reportsystem.advanced |
Access user management tools |
reportsystem.advanced.timeout |
Apply or remove report timeouts |
reportsystem.advanced.block |
Block or unblock use of /report |
reportsystem.report.exempt |
Prevent other players from reporting the holder |
reportsystem.punishment.exempt |
Exempt the holder from ReportSystem restrictions |
reportsystem.alerts |
Receive live report alerts |
reportsystem.reload |
Reload ReportSystem |
reportsystem.updates |
Receive update notifications |
reportsystem.proxy.status |
View Velocity or BungeeCord companion status |
reportsystem.proxy.reload |
Reload a proxy companion |
reportsystem.* |
Bukkit family bundle for all ReportSystem permissions |
Multi-Platform Setup
1. Install the gameplay-server build
- Bukkit, Spigot, Paper, Purpur, Pufferfish, or Folia: install the main
ReportSystemJAR. - Sponge: install the
ReportSystem+SpongeJAR. - Restart each server once to create its configuration.
2. Configure shared MySQL
On every gameplay server:
- Set
multi-platform.database.typetomysql. - Point the MySQL settings at the same database.
- Give every server a unique
multi-platform.instance-name.
SQLite is ideal for one standalone server, but separate SQLite files cannot form one shared report queue.
3. Configure Redis
On every gameplay server:
- Set
multi-platform.redis.enabledtotrue. - Use the same Redis host, port, password, and channel.
Redis is optional on a standalone server. It is recommended for immediate alerts and updates across a network.
4. Add the proxy companion
- Velocity: install the Velocity companion in the proxy's
pluginsfolder. - BungeeCord or Waterfall: install the BungeeCord companion in the proxy's
pluginsfolder. - Enable Redis in the companion config and use the same channel as the gameplay servers.
Proxy players with reportsystem.alerts or reportsystem.moderate will receive network report
events.
5. Verify
- Run
/rs statuson Sponge. - Run
/rsproxy statuson Velocity or BungeeCord. - Submit a test report and confirm that it appears from another gameplay server using the shared MySQL database.
- Confirm that permitted staff receive the Redis alert.
Example Multi Platform Configuration
multi-platform:
instance-name: "Survival-1"
platform: auto
database:
type: mysql
mysql:
host: "127.0.0.1"
port: 3306
database: "reportsystem"
username: "reportsystem"
password: "change-me"
pool-size: 5
redis:
enabled: true
host: "127.0.0.1"
port: 6379
password: ""
channel: "reportsystem-sync"
Use a different instance-name on every gameplay server. Keep the MySQL database and Redis channel
the same.


