L-report
Player Reporting Plugin with GUI (Discord WebHook integration)
L-report
L-Report
<div align="center">
</div>
> Advanced Minecraft reporting system that allows players to report other players via GUI.
---
Table of Contents
- Features - Installation - Commands - Permissions - Config Settings - Discord Integration - FAQ - License - PlaceholderAPI - API Documentation
---
Features
| Feature | Description | |---------|-------------| | GUI Report System | Report players easily via GUI | | Reason Selection | Hack, Toxic, Spam, Advertising, Insult, Other | | Evidence System | Add evidence with report | | Daily Limit | Daily report limit per player | | Cooldown | Cooldown for re-reporting same player | | Admin Panel | View all reports, accept/reject | | Statistics | View report statistics | | Freeze System | Freeze reported player | | Report History | View your own reports | | Offline Reporting | Report offline players (configurable) | | Multi-Language | Turkish and English support | | Discord Webhook | Send notifications to Discord | | Reward | A system where players can receive rewards for their accepted reports |
---
Installation
1. Download
Place the plugin JAR file in the `plugins/` folder.
2. Start
Start the server or use `/reload` command.
3. Auto-Generated Files
``` plugins/L-report/ ├── config.yml # Main config file ├── lang/ │ ├── tr.yml # Turkish language file │ └── en.yml # English language file ├── lreport.db # SQLite database └── reports/ # Report data ```
---
Commands
Player Commands
| Command | Description | |---------|-------------| | `/report` | Opens main menu | | `/report <player>` | Report player via GUI | | `<playername>` | Report offline player (config must be enabled) |
Admin Commands
| Command | Description | |---------|-------------| | `/reportadmin` | Opens admin panel | | `/reportadmin search <player>` | Search player's reports | | `/reportadmin stats` | Show statistics | | `/report reload` | Reload config and language files | | `/report lang tr|en` | Change language |
---
Permissions
| Permission | Description | |------------|-------------| | `lreport.player` | Can create reports | | `lreport.admin` | Can use admin commands |
---
Config Settings
```yaml
============================================
L-Report Configuration
============================================
Language setting
Options: tr (Turkish), en (English)
language: tr
Message prefix shown before all plugin messages
Supports color codes with & character
Example: "&8[&cRapor&8] &7" -> [Rapor]
prefix: "&8[&cRapor&8] &7"
Cooldown time in minutes between reporting the same player
Set to 0 to disable cooldown
cooldown: 30
Maximum number of reports a player can create per day
Set to 0 for unlimited reports
max-reports-per-day: 5
Broadcast new reports to all online admins
true = Enabled, false = Disabled
broadcast-reports: false
Notify online admins when a new report is created
true = Enabled, false = Disabled
notify-admins: true
Allow reporting offline players via /report <player> command
true = Enabled, false = Disabled
allow-offline-report: true
============================================
Discord Webhook Settings
============================================
Enable Discord webhook notifications
true = Enabled, false = Disabled
webhook-enabled: false
Discord webhook URL
Get this from Discord channel settings -> Integrations -> Webhooks
webhook-url: ""
Webhook username shown in Discord messages
webhook-username: "L-Report Bot"
Embed color (in decimal)
Red: 15548984, Green: 5767199, Yellow: 16440904, Blue: 3447003
webhook-color: 15548984
Which events to send to Discord
true = Send, false = Don't send
webhook-new-report: true webhook-report-accepted: true webhook-report-rejected: true webhook-report-deleted: false
============================================
Database Settings
============================================
Database type: sqlite or mysql
database-type: sqlite
MySQL settings (only if database-type: mysql)
mysql: host: "localhost" port: 3306 database: "lreport" username: "root" password: "" table-prefix: "lreport_"
============================================
Reward System
============================================
Enable reward system when reports are accepted
true = Enabled, false = Disabled
reward-enabled: false
Reward commands list (add keys: 0, 1, 2, etc.)
%player% = Reporter's name
console: true = Run as console, false = Run as player
reward-commands: 0: command: "give %player% money 100" console: true 1: command: "crate give %player% basic 1" console: true ```
---
Discord Integration
Setup
1. Open Discord server settings 2. Go to New Webhook > New Webhook > New Webhook 3. Copy the webhook URL 4. Paste into config file:
```yaml webhook-enabled: true webhook-url: "https://discord.com/api/webhooks/xxxxx/xxxxx" ```
Embed Appearance
``` :inbox_tray: New Report Notification A player has created a new report. Check the admin panel for details.
:bust_in_silhouette: Reporter | PlayerName :skull: Reported | TargetName :clipboard: Reason | :crossed_swords: Hack :file_folder: Evidence | evidence text :shield: Handler | AdminName
L-Report Plugin | 23/04/2026 23:16 ```
Embed Colors
| Event | Color | HEX | |------|-------|-----| | New Report | Orange | 15105570 | | Accepted | Green | 5767199 | | Rejected | Red | 15548984 | | Deleted | Yellow | 16440904 |
---
Database
SQLite (Default)
Stored in auto-generated `lreport.db` file.
---
FAQ
Q: Plugin not working - What should I do? > A: First check the console for errors. Then try `/reload`.
Q: GUI not opening? > A: Check if you have `inventory` permission.
Q: Language file not working? > A: Delete the language files on server and restart.
Q: Discord webhook not working? > A: Check if URL is correct. Make sure `webhook-enabled: true`.
---
License
MIT License
---
Placeholders
General Report Statistics
* `%lreport_total_reports%`: Total number of reports. * `%lreport_pending_reports%`: Number of reports with "PENDING" status. * `%lreport_accepted_reports%`: Number of reports with "ACCEPTED" status. * `%lreport_rejected_reports%`: Number of reports with "REJECTED" status. * `%lreport_today_reports%`: Number of reports submitted today. * `%lreport_week_reports%`: Number of reports submitted this week. * `%lreport_month_reports%`: Number of reports submitted this month. * `%lreport_acceptance_rate%`: The overall percentage of accepted reports. * `%lreport_rejection_rate%`: The overall percentage of rejected reports. * `%lreport_pending_rate%`: The overall percentage of pending reports. * `%lreport_most_common_reason%`: The most frequently cited reason for reports.
---
Personal Player Statistics
* `%lreport_my_reports%`: Total reports submitted by the player. * `%lreport_my_pending_reports%`: Number of pending reports submitted by the player. * `%lreport_my_accepted_reports%`: Number of accepted reports submitted by the player. * `%lreport_my_rejected_reports%`: Number of rejected reports submitted by the player. * `%lreport_my_today_reports%`: Number of reports submitted by the player today. * `%lreport_my_remaining_reports%`: Number of report attempts the player has left for today. * `%lreport_my_status%`: Status of the player's most recent report. * `%lreport_my_can_report%`: Whether the player is currently allowed to create a report (`true`/`false`). * `%lreport_my_acceptance_rate%`: The acceptance rate percentage for the player's own reports. * `%lreport_my_cooldown%`: The remaining cooldown time for the player (in seconds).
---
Leaderboards (Top Lists)
* Staff/Handlers: * `%lreport_top_reporter%`: Name of the player who has submitted the most reports. * `%lreport_top_reporter_count%`: The report count of the top reporter. * `%lreport_top_reporter_2%`: Name of the 2nd rank reporter. * `%lreport_top_reporter_3%`: Name of the 3rd rank reporter. * Staff/Handlers: * `%lreport_most_reported%`: Name of the player with the most reports against them. * `%lreport_most_reported_count%`: The number of reports the most reported player has received. * Staff/Handlers: * `%lreport_top_handler%`: Name of the staff member who has handled the most reports. * `%lreport_top_handler_count%`: The number of reports handled by the top staff member.
---
Statistics by Reason
* Insult: `%lreport_hack_reports%`, `%lreport_hack_pending%`, `%lreport_hack_accepted%`, `%lreport_hack_rejected%` * Insult: `%lreport_toxic_reports%`, `%lreport_toxic_pending%`, `%lreport_toxic_accepted%`, `%lreport_toxic_rejected%` * Insult: `%lreport_spam_reports%`, `%lreport_spam_pending%`, `%lreport_spam_accepted%`, `%lreport_spam_rejected%` * Insult: `%lreport_ad_reports%`, `%lreport_ad_pending%`, `%lreport_ad_accepted%`, `%lreport_ad_rejected%` * Insult: `%lreport_insult_reports%`, `%lreport_insult_pending%`, `%lreport_insult_accepted%`, `%lreport_insult_rejected%`
---
Date and Time Information
* `%lreport_first_report_date%`: Date of the very first report on the server. * `%lreport_first_report_time%`: Time of the very first report on the server. * `%lreport_last_report_date%`: Date of the most recent report on the server. * `%lreport_last_report_time%`: Time of the most recent report on the server. * `%lreport_last_report_datetime%`: Full date and time of the last report. * `%lreport_my_first_report_date%`: The player's individual first report date. * `%lreport_my_last_report_date%`: The player's individual last report date.
---
System and Database
* `%lreport_db_total%`: Total report count directly from the database. * `%lreport_is_frozen%`: Whether the player is currently frozen (`true`/`false`). * `%lreport_frozen_count%`: Total number of players currently frozen. * `%lreport_plugin_version%`: The current version of the L-Report plugin. * `%lreport_cooldown%`: The global cooldown setting from the config. * `%lreport_online_players%`: Number of players currently online.
Developer API Integration
Integrate L-report into your own plugin to interact with our reporting system. Follow the steps below to get started.
1. Add Repository
First, add the JitPack repository to the `<repositories>` section of your `pom.xml` file:
```xml <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> ```
2. Add Dependency
Next, add the L-report API dependency to your `<dependencies>` section. Replace `TAG` with the version you wish to use (e.g., `v1.0.0`).
```xml <dependencies> <dependency> <groupId>com.github.squezsaz</groupId> <artifactId>L-report</artifactId> <version>TAG</version> <scope>provided</scope> </dependency> </dependencies> ```
> Note: Since your plugin will require L-report at runtime, keep the scope as `provided` and remember to add `depend: [L-report]` to your `plugin.yml` file.
3. Usage Example
You can access the API by getting an instance through the main class:
```java import com.lreport.api.LReportAPI;
public class MyPlugin extends JavaPlugin { @Override public void onEnable() { // Accessing the API LReportAPI api = LReport.getApi();
if (api != null) { int pendingReports = api.getPendingReportCount(); getLogger().info("There are currently " + pendingReports + " pending reports."); } } } ```
---
API Documentation
For a detailed list of methods and descriptions, please visit our online JavaDoc page: 👉 L-report JavaDocs
---
Quick Tips:
* JitPack Logs: If you want to always pull the latest code, you can use `master-SNAPSHOT` as the `<version>`, though fixed versions like `v1.0.0` are recommended for stability. * JitPack Logs: If the dependency fails to download, check the build logs on JitPack to identify the error.
Contact
For any questions or suggestions, discord: squezsaz
---
Note: This plugin works on Spigot, Paper and derivatives. (1.18 - 1.21+)