ReportSystem Documentation
Professional report and moderation system for your Minecraft server
ReportSystem is a comprehensive player reporting and moderation plugin developed for Minecraft servers. Inspired by CS:GO's Overwatch system, it offers community-based review system, automatic replay recordings, and advanced punishment management features.
This documentation is constantly updated. Follow our Discord server for the latest information.
Features
All features offered by ReportSystem
Requirements
| Requirement | Minimum | Recommended | Note |
|---|---|---|---|
| Server Software | Paper 1.21 | Paper 1.21.x | Only 1.21.x supported |
| Java Version | Java 21 | Java 21 | Java 21 required for MC 1.21+ |
| PacketEvents | 2.11.2+ | Latest version | Required |
| Punishment Plugin | - | LiteBans | Optional |
The plugin will not work without PacketEvents. The replay system depends on PacketEvents.
Version Compatibility
| MC Version | Status | Note |
|---|---|---|
| 1.21.x | ✅ Full Support | Supported version |
| 1.20.x and below | ❌ Not Supported | API incompatibility |
Quick Installation (Standalone)
PacketEvents Installation
Download PacketEvents and put it in the plugins folder.
ReportSystem Installation
Put ReportSystem-Spigot.jar file in the plugins folder.
First Start
Start the server. Configuration files will be created automatically.
License Activation
Enter your license key in config.yml and restart the server.
license: license-key: "KB-XXXX-XXXX-XXXX"
You should see [ReportSystem] Plugin enabled successfully! message in console.
BungeeCord/Velocity Setup
Install ReportSystem-BungeeCord.jar on proxy server
Install ReportSystem-Spigot.jar on all backend servers
Use the same MySQL database on all servers
Set bungeecord.enabled: true on each server
bungeecord:
enabled: true
display-name: "Survival" # Server name
database:
type: mysql
mysql:
host: "localhost"
port: 3306
database: "reportsystem"
username: "root"
password: "password"
In network mode SQLite cannot be used. All servers must connect to the same MySQL database.
Velocity Setup
If you use a modern proxy, you can use the Velocity module.
Install ReportSystem-Velocity.jar on Velocity proxy
Install ReportSystem-Spigot.jar on all backend servers
Use the same MySQL database on all servers
Velocity module provides punishment synchronization and report notifications. GUI, replay and Overwatch systems run on Spigot side.
Database Settings
SQLite vs MySQL
| Feature | SQLite | MySQL |
|---|---|---|
| Setup | Automatic | Manual database creation |
| Network Support | ❌ No | ✅ Yes |
| Performance | Good for small servers | Recommended for high traffic |
| Backup | File copy | mysqldump |
database:
type: mysql
mysql:
host: "localhost"
port: 3306
database: "reportsystem"
username: "root"
password: "strong_password"
pool:
maximum-pool-size: 10
minimum-idle: 2
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
General Settings
Enables debug mode. Detailed logs are written to console. Use for troubleshooting.
Language file to use. Available: tr (Turkish), en (English)
Date format. Uses Java SimpleDateFormat format.
Checks for new version on server startup.
Collects anonymous usage statistics (player count, report count, TPS). You can disable anytime.
Report Settings
true = only online players can be reported. false = offline players can also be reported.
Time a player must wait between two reports. 0 = disabled.
Can be bypassed with reportsystem.cooldown.bypass permission.
Maximum reports per minute. For spam protection. -1 = unlimited.
How many times a player can report the same person. -1 = unlimited.
How many days until open reports are automatically closed. -1 = disabled.
Report categories. Shown as options in GUI.
categories: - "Cheating" - "Harassment" - "Spam" - "Griefing" - "Bug Abuse" - "Other"
Minimum and maximum character length of report reason.
Replay Settings
Enable/disable replay system.
Automatically starts recording when report is created.
Duration of each replay recording. Longer durations mean more data.
How many days until replay recordings are deleted.
7= Recordings older than 7 days are deleted30= Keep for 30 days-1= Never delete (warning: disk may fill up!)
Recording quality. 20 = Full quality, 10 = Half quality (less data)
Distance at which nearby players will be recorded (blocks).
Maximum concurrent recordings. Each recording uses ~3-4 ms/tick CPU.
Maximum replay file size. -1 = unlimited.
An average 45-second recording takes 50-200 KB. 100 reports per day ≈ 10-20 MB/day.
Overwatch Settings
Enable/disable Overwatch system.
Minimum number of reviews required before a decision is made on a report.
Percentage of "Guilty" votes required for automatic punishment. 70% = If 2 out of 3 vote guilty, punishment is applied.
Automatic ban duration when consensus is reached (days).
NPC hologram statistics update frequency (seconds).
true = new reports auto-added to queue. false = only via /overwatch addqueue.
Maximum reports in queue. -1 = unlimited.
If set to false, reviewers can only choose Guilty or Innocent, Skip button is disabled.
Wait time between two reviews. 0 = disabled.
Reward Settings
XP Settings
| Setting | Default | Description |
|---|---|---|
overwatch.xp.guilty-innocent-xp | 15 | XP for Guilty/Innocent vote |
overwatch.xp.skip-xp | 5 | XP for Skip vote |
overwatch.xp.bronze-xp | 0 | XP required for Bronze rank |
overwatch.xp.silver-xp | 500 | XP required for Silver rank |
overwatch.xp.gold-xp | 1000 | XP required for Gold rank |
overwatch.xp.diamond-xp | 2500 | XP required for Diamond rank |
overwatch.xp.xp-per-level | 100 | XP required per level |
Reward Commands
overwatch:
rewards:
enabled: true
# Her inceleme sonrası
on-review-complete:
- "give %player% diamond 1"
- "eco give %player% 100"
# Sadece Suçlu/Masum oyları için
on-guilty-innocent:
- "give %player% emerald 1"
# Seviye atlama ödülü
on-level-up:
- "broadcast &e%player% &7Overwatch seviye &e%level% &7oldu!"
- "give %player% diamond 5"
# Rütbe atlama ödülleri
on-rank-up:
bronze:
- "broadcast &c%player% &lBRONZE &7rütbesine ulaştı!"
silver:
- "give %player% iron_ingot 32"
gold:
- "give %player% gold_ingot 32"
diamond:
- "give %player% diamond 64"
%player% Player | %verdict% Verdict | %xp% XP | %level% Level | %rank% Rank
Player Commands
| Command | Description | Permission |
|---|---|---|
/report <player> |
Report a player (opens GUI) | reportsystem.report |
/reports |
View your own reports | reportsystem.view |
Aliases: /rapor, /raporla, /reportplayer
/reports aliases: /raporlar, /reportlist, /raporlistesi
Staff Commands
Staff actions (accept, reject, delete, punish) are done via GUI instead of commands:
Open report list GUI with /reports
Click on the report you want to review
From detail screen: Accept, Reject, Watch Replay or Teleport to Player
Staff with reportsystem.staff permission see pending report count on join.
Overwatch Commands
| Command | Description | Permission |
|---|---|---|
/overwatch | Open Overwatch main menu | reportsystem.overwatch |
/overwatch stats | View your statistics | reportsystem.overwatch |
/overwatch leaderboard | View leaderboard | reportsystem.overwatch |
/overwatch npc create <name> | Create Overwatch NPC | reportsystem.overwatch.admin |
/overwatch npc delete <id> | Delete specified NPC | reportsystem.overwatch.admin |
/overwatch npc list | List all NPCs | reportsystem.overwatch.admin |
/overwatch npc skin <npc> <player> | Change NPC skin | reportsystem.overwatch.admin |
/overwatch npc look <npc> | Make NPC look at you | reportsystem.overwatch.admin |
/overwatch npc move <npc> | Move NPC to your location | reportsystem.overwatch.admin |
/overwatch npc name <npc> <name> | Rename NPC | reportsystem.overwatch.admin |
/overwatch npc select <npc> | Select NPC for quick editing | reportsystem.overwatch.admin |
/overwatch addqueue <id> [priority] | Add report to queue | reportsystem.overwatch.admin |
Aliases: /ow, /overwatchsystem
Admin Commands
| Command | Description | Permission |
|---|---|---|
/reportsystem reload | Reload configuration | reportsystem.admin |
/reportsystem stats | View system statistics | reportsystem.admin |
/reportsystem info | View plugin information | reportsystem.admin |
/reportsystem debug <true|false> | Enable/disable debug mode | reportsystem.admin |
/reportsystem lang | Check language settings | reportsystem.admin |
/reportsystem testnotif | Test toast notification | reportsystem.admin |
/reportsystem checkadv | Check advancement status | reportsystem.admin |
Aliases: /rs, /rsystem, /raporsistem
Basic Permissions
| Permission | Description | Default |
|---|---|---|
reportsystem.report | Permission to create reports | Everyone |
reportsystem.view | View own reports | Everyone |
reportsystem.cooldown.bypass | Bypass cooldown | OP |
reportsystem.exempt | Cannot be reported | OP |
Moderator Permissions
| Permission | Description |
|---|---|
reportsystem.staff | Marked as staff (receive join notifications) |
reportsystem.view.all | View all reports |
reportsystem.notify | Receive new report notifications |
reportsystem.manage | Accept/reject reports |
reportsystem.punish | Give punishments (ban, mute, kick, warn) |
reportsystem.overwatch | Use Overwatch system |
LuckPerms Example
/lp creategroup moderator /lp group moderator permission set reportsystem.view.all true /lp group moderator permission set reportsystem.notify true /lp group moderator permission set reportsystem.manage true /lp group moderator permission set reportsystem.overwatch true
Admin Permissions
| Permission | Description |
|---|---|
reportsystem.* | All permissions (wildcard) |
reportsystem.admin | Admin commands (reload, stats) |
reportsystem.delete | Permission to delete reports |
reportsystem.overwatch.admin | Overwatch admin (NPC, queue) |
Replay System
How It Works?
When a player is reported, the system records the last 45 seconds
Recording is compressed and saved to database
When staff reviews the report, replay is played as NPC
Viewer can see all movements
Recorded Data (53+ Action Types)
Player Actions:
- Position, direction and movement (every tick)
- Health, absorption (golden hearts) and damage
- Equipment and inventory changes
- Animations (arm swing, damage)
- Pose changes (sneaking, sprinting, swimming)
- Knockback/velocity, death and teleportation
- Chat messages and potion effects
World Actions:
- Block break/place, falling blocks
- Explosions, fire, redstone, note blocks
- Sign editing, decorations (painting, item frame)
- Weather changes and sound effects
Gameplay Actions:
- Item usage (bow, shield, food), fishing
- Crafting, brewing, enchanting
- Vehicle riding (horse, boat), portal usage
- Projectiles (arrow, snowball), animal breeding
- Nearby players (as NPCs)
Replay Controls
| Item | Function |
|---|---|
| ⏸️ Pause | Pause/resume replay |
| ⏪ Rewind | Go back 5 seconds |
| ⏩ Fast Forward | Go forward 5 seconds |
| 🔴 Stop | End replay |
| 🔍 Settings | Replay settings and info |
| 🎯 Teleport | Teleport to nearby NPC players |
| 🏃 Speed | Change playback speed (0.25x - 4x) |
While watching replay, other players cannot see you and you cannot interact with the world.
Overwatch System
What is it?
Overwatch is a community-based report review system inspired by CS:GO. Trusted players review reports and vote. When enough "Guilty" votes are received, consensus is reached and admins make the final decision.
Review Process
Player right-clicks Overwatch NPC
System assigns a random report from queue
Reviewer watches the replay
Makes decision: Guilty, Innocent or Skip
Earns XP and rank progresses
Rank System
| Rank | Required XP | Color |
|---|---|---|
| 🥉 Bronze | 0 XP | Bronze |
| 🥈 Silver | 500 XP | Silver |
| 🥇 Gold | 1000 XP | Gold |
| 💎 Diamond | 2500 XP | Diamond |
NPC System
Creating NPC
/overwatch npc create Overwatch-1
Creates an Overwatch NPC where you are looking.
NPC Features
- Real player appearance NPC (PacketEvents based)
- Customizable skin (any player's skin)
- Shows hologram statistics
- Opens Overwatch menu when right-clicked
- Automatically restored on server restart
- Cannot be broken or interacted with
NPC Management
/overwatch npc list # List all NPCs /overwatch npc delete <id> # Delete specified NPC /overwatch npc skin <npc> <player> # Change NPC skin /overwatch npc look <npc> # Make NPC look at you /overwatch npc move <npc> # Move NPC to your location /overwatch npc name <npc> <name> # Rename NPC /overwatch npc select <npc> # Select NPC for quick editing
Punishment System
You can apply punishments directly from the GUI during report review.
Punishment Types
| Type | Description | Duration |
|---|---|---|
| Ban | Bans player from server | Temporary or permanent |
| Mute | Mutes player chat | Temporary or permanent |
| Kick | Kicks player from server | Instant |
| Warn | Gives warning (with counter) | Instant |
Quick Duration Selection
punishments:
durations:
- "5m" # 5 minutes
- "30m" # 30 minutes
- "1h" # 1 hour
- "1d" # 1 day
- "7d" # 7 days
- "30d" # 30 days
- "permanent" # Permanent
Animated Ban ⚡
Ban cheating players with a visual spectacle. Other players can also witness this moment.
Player is frozen in place
Anvil drops from the sky
Lightning strikes
Custom death message is shown and ban is applied
Target player must be online for animated ban.
Notification System
When a new report is created, multiple notifications are sent to staff. All notification types can be toggled independently.
| Type | Description | Config |
|---|---|---|
| Toast | Achievement-style popup in top right corner | Automatic |
| Title | Large title in center of screen | reports.notifications.title-enabled |
| Action Bar | Scrolling text above hotbar | reports.notifications.actionbar-enabled |
| Sound | Notification sound (customizable) | reports.notifications.sound-enabled |
| Chat | Detailed report information | reports.notifications.notify-staff |
When a staff member joins the server, the pending report count is automatically shown.
Discord Webhook
Reports, punishments and report closures are automatically notified to your Discord channel.
Setup
Choose a channel in your Discord server
Channel Settings → Integrations → Create Webhook
Copy webhook URL and paste it in config.yml
discord-webhook:
enabled: true
url: "https://discord.com/api/webhooks/123456789/abcdefghijklmnop"
avatar-url: "https://i.imgur.com/4M34hi2.png"
add-buttons: true
include-server-name: true
events:
new-report: true # New report
report-closed: true # Report accepted/rejected
punishment: true # When punishment applied
Features
Anti-Cheat Integration
ReportSystem integrates with anti-cheat plugins to automatically create recordings + reports + Overwatch queue entries when cheating is detected. Cheaters are automatically recorded without the need for manual /report commands.
Each anti-cheat flag accumulates a suspicion score. Recording starts when the score reaches the threshold. A single flag does not start recording — this filters false positives. Score decays by 50% every 60 seconds.
How Does It Work?
1. Anti-cheat flags a player as suspicious
2. Each flag accumulates suspicion score (KillAura: +0.40, Flight: +0.15, Cloud ML: +0.50)
3. When score exceeds threshold, automatic 30-second recording starts
4. Report is created, added to Overwatch queue, and Discord webhook notification is sent
Configuration
Polar Anti-Cheat
polar: enabled: false suspicion-threshold: 1.0 # Suspicion threshold (0.5=sensitive, 1.0=balanced, 1.5=conservative) cooldown-seconds: 300 # Cooldown per player max-auto-recordings: 5 # Max concurrent recordings recording-duration: 30 # Recording duration (seconds) add-to-overwatch: true # Add to Overwatch queue
Vulcan Anti-Cheat
vulcan: enabled: false suspicion-threshold: 1.0 cooldown-seconds: 300 max-auto-recordings: 5 recording-duration: 30 add-to-overwatch: true
Grim AntiCheat
grim: enabled: false suspicion-threshold: 1.0 cooldown-seconds: 300 max-auto-recordings: 5 recording-duration: 30 add-to-overwatch: true
Polar: PolarLoader plugin must be installed.
Vulcan: Vulcan plugin must be installed and settings.enable-api: true must be set in its config.yml.
Grim: GrimAC plugin must be installed (free, open source).
All integrations are optional — if the anti-cheat is not installed, the plugin continues to work normally.
Scoring Table
| Check Type | Score | Description |
|---|---|---|
| Cloud Combat Behavior | +0.50 | ML-based KillAura/Aimbot detection (Polar only) |
| Auto Clicker | +0.45 | Auto-click detection |
| KillAura | +0.40 | Combat hack detection |
| Scaffold | +0.35 | Automatic block placement |
| Reach | +0.30 | Extended reach hack |
| Flight | +0.15 | Flight hack (mitigated by setback) |
| Speed | +0.10 | Speed hack |
| Movement | +0.05 | Movement anomaly (low score — may be temporary lag) |
Punishment Plugins
ReportSystem works fully compatible with the following punishment plugins:
In BungeeCord/Velocity proxy mode, plugin automatically detects installed punishment plugin. In standalone mode, internal punishment system is used.
PlaceholderAPI
ReportSystem fully integrates with PlaceholderAPI. You can use the following placeholders in scoreboards, tab, holograms and other plugins.
PlaceholderAPI plugin must be installed on your server. It is detected automatically.
Report Placeholders
| Placeholder | Description |
|---|---|
%reportsystem_reports% |
Total reports filed against the player |
%reportsystem_trust_level% |
Account trust level (Excellent, Good, Moderate, Poor, Critical) |
%reportsystem_trust_points% |
Violation points (decays over time) |
Overwatch Placeholders
| Placeholder | Description |
|---|---|
%reportsystem_overwatch_rank% |
Overwatch rank (BRONZE, SILVER, GOLD, DIAMOND) |
%reportsystem_overwatch_level% |
Overwatch level |
%reportsystem_overwatch_xp% |
Total XP |
%reportsystem_overwatch_reviews% |
Total review count |
%reportsystem_overwatch_accuracy% |
Accuracy rate (after 50+ reviews) |
Usage Example
# Scoreboard example (TAB, Featherboard etc.)
Reports: %reportsystem_reports%
Trust Level: %reportsystem_trust_level%
OW Rank: %reportsystem_overwatch_rank%
OW Level: %reportsystem_overwatch_level%
Frequently Asked Questions
No. Replay system depends on PacketEvents. Plugin will not start.
Average 45-second recording is 50-200 KB. 100 reports per day ≈ 10-20 MB.
According to replay.auto-delete-days setting. Default is 7 days.
Yes. Each viewer sees their own NPCs, they don't affect each other.
No. NPCs are saved to database and automatically recreated.
No. Replay projectiles are harmless and ineffective.
Troubleshooting
- Check if PacketEvents is installed
- Check Java version (minimum Java 21)
- Check console logs
- Check
replay.auto-record: true - Replay may have expired (
auto-delete-days) - Enable debug mode with
/rs debug
- Check MySQL credentials
- Make sure database exists
- Check firewall settings
Performance Settings
Runs database operations asynchronously. Zero TPS impact. Do not disable.
Caches reports in memory. Cache is used when opening GUIs.
Maximum number of reports to keep in memory and cache expiration time.
replay.max-recordings: 3— Limit concurrent recordingsnearby-player-tracking.interval-ticks: 3— Keep default balancenearby-player-tracking.movement-threshold: 0.05— 40-60% less dataperformance.async-database: true— Keep async database enabled
Support
Thank you for choosing ReportSystem!