Back to Plugins
Network PluginVelocity

Report System

Velocity proxy reports powered by Discord and MariaDB.

A powerful, high-performance reporting solution for Velocity proxy servers. This plugin bridges the gap between your Minecraft server and staff team by creating dedicated Discord channels for every report, complete with automated web transcripts.

Features

Discord Integration

Automatically creates a unique text channel in your Discord server for every new report.

Web Transcripts

Generate and host professional chat transcripts (including media) when a report is closed.

Staff Protection

Optional settings to prevent players from maliciously reporting administrators.

Rate Limiting

Prevent spam with an advanced 'Greedy Token' system to rate limit report creation.

Cross-Server Sync

As a Velocity proxy plugin, it seamlessly handles reports across your entire network.

MariaDB Storage

Persistent, high-performance data storage for all report logs and statuses.

Compatibility

Paper
Spigot
Velocity
1.8.8 – 26.2Java 17+MariaDB / MySQLDiscord Bot Token

Commands & Permissions

CommandDescriptionPermission
/report <player> <reason>Submit a new reportreports.report
/reportsOpen the report management list
/reports view-openView your own open reports
/reports reloadReload config and language filesreports.reload
/reports info <id>View detailed report datareports.info
/reports close <id>Close an active reportreports.close
/reports delete <id>Remove report from databasereports.delete
/reports admin view-openView all open reports on the networkreports.admin.view
/reports admin view-closedView all closed reports on the networkreports.admin.view
/reports admin view-player sent <p> [status]View reports a specific player has sentreports.admin.view
/reports admin view-player received <p> [status]View reports filed against a specific playerreports.admin.view
/reports admin ban-session <p>Block a player from using /reportreports.admin.ban
/reports admin unban-session <p>Restore a player's ability to reportreports.admin.ban

Documentation & Setup

1Pre-requisites

You must have a MariaDB database for persistent data storage. You also need to register a new application on the Discord Developer Portal to obtain a Bot Token and Application ID. Ensure your Discord server has a specific Category prepared where the bot can spawn the report channels.

2Bot Configuration

Place the plugin in your Velocity plugins folder and start the server once to generate the config.yml. Fill in your MariaDB credentials, and populate the discord-bot section with your Bot Token, Guild ID, Category ID, and Audit Log Channel ID.

3Transcripts Setup

To enable web-based transcripts when reports are closed, generate an API key at space.xap3y.eu. In your config, set discord-bot.transcripts.enabled to true and paste your generated key. You can also optionally archive media files (images/videos) sent directly in Discord!

Default Config

config.yml1 lines
prefix: "&7[&cReports&7] &r"

require-permission: false # Permission: reports.report

notify-sound: "entity.experience_orb.pickup"
notify-sound-source: "MASTER"
notify-on-join: true
notify-delay-seconds: 5
announce-solved: false # Reply to reporter when their report is closed
max-open-reports: 10 # Max open reports per player, set to 0 for unlimited
reports-per-page: 5 # Number of reports to show per page in the /reports
protect-staff: true # Prevent players from reporting staff members
protect-permission: "reports.protect" # Permission to bypass staff protection

close-comment-required: false # Require a comment when closing a report
min-close-comment-length: 10 # Minimum length for close comment

# Rate limit /report command?
rate-limit: # refillGreedy
    enabled: true
    time-seconds: 180 # Time to refill in seconds
    tokens: 5 # Max reports allowed in the time above
    refill-tokens: 5 # Number of tokens to refill after each time
    can-bypass: true
    bypass-permission: "reports.bypassratelimit"

discord-bot:
    log-startup: true # Log startup to discord audit log channel
    token: "EXAMPLE_TOKEN"
    channel-id: 1111111111111111111 # Audit log channel
    app-id: 1111111111111111111 # Discord app ID
    guild-id: 1111111111111111111 # Discord server ID
    category-id: 1111111111111111111 # Category for report channels
    activity: "ReportSystem v{version}" # Discord presence
    channel-template: "report-{reporter}" # Channel name template. Vars: {reporter}, {target}, {id}
    channel-message: "|| <@&ROLE_ID> ||" # Message to be sent in the report channel
    suppress_notifications: false # Send with @silent

    transcripts:
        enabled: false
        url: "https://call.xap3y.eu/v1/discord/transcript/upload"
        url-get: "https://space.xap3y.eu/mc/report/"
        key: "example_key" # Generate here: https://space.xap3y.eu/mc/report/get-key
        media-save-api-key: "example_key" # Same key as above
        file-save: false # Save a local copy of the transcript file
        save-media: false # Save media files (images,videos,gifs)
        media-save-api: "https://call.xap3y.eu/v1/image/upload/url"
        user-agent: "ReportSystem/1.0"
        media-timeout: 5 # http timeout in seconds for media upload
        res-json-template: "/message/urlSet/rawUrl" # Json template to extract url from space api, dont change