{"id":122541,"date":"2026-06-07T07:54:47","date_gmt":"2026-06-07T04:54:47","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/"},"modified":"2026-06-07T07:54:47","modified_gmt":"2026-06-07T04:54:47","slug":"player-report","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/","title":{"rendered":"Player Report"},"content":{"rendered":"<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/vW88r8f.png\" alt=\"PlayerReport\">\n<\/p>\n<p>A modern in-game player reporting system designed for server moderation teams.<\/p>\n<p>Players can easily report rule violations while moderators receive powerful tools to review, filter and process reports directly in-game using intuitive GUIs.<\/p>\n<p>**Version 4.0.0** is a **complete rewrite**, introducing a modern report workflow, improved moderation tools, database support, Discord integration and much more.<\/p>\n<p>Almost every feature, message and visual can be configured in the config!<\/p>\n<p align=\"center\">\n<p>    <img decoding=\"async\" src=\"https:\/\/assets-global.website-files.com\/6257adef93867e50d84d30e2\/636e0b5061df29d55a92d945_full_logo_blurple_RGB.svg\" alt=\"Discord\" width=\"300\"><\/p>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/HiB7E33.png\" alt=\"Features\">\n<\/p>\n<p>&#8211; Modern in-game reporting system<br \/>\n&#8211; Easy player reporting via **`\/report`**<br \/>\n&#8211; Optional **reason GUI** and confirmation system<br \/>\n&#8211; Advanced **moderation GUI** for staff<br \/>\n&#8211; Assign moderators as **report handlers**<br \/>\n&#8211; Filter and sort reports directly in-game<br \/>\n&#8211; Teleport to reported players or saved locations<br \/>\n&#8211; Reward players for valid reports<br \/>\n&#8211; Supports **online &#038; offline reward claiming**<br \/>\n&#8211; **Discord webhook integration** for reports and updates<br \/>\n&#8211; **PlaceholderAPI support** for statistics and integrations<br \/>\n&#8211; Storage support for **YAML or MySQL**<br \/>\n&#8211; Search reports by **player, ID, reason or handler**<br \/>\n&#8211; Notification system for staff members<br \/>\n&#8211; Automatic cleanup for old reports<br \/>\n&#8211; Highly configurable messages, GUIs and behavior<br \/>\n&#8211; Lightweight and optimized for performance<br \/>\n&#8211; Supports **Folia**<\/p>\n<p>**PlayerReport** was built to help staff manage reports quickly and efficiently \u2014 directly in game.<\/p>\n<p>**Quick, how?** **\u2192** Reports can be reviewed and updated instantly.<br \/>\n**Efficiently, how?** **\u2192** Lightweight design with optimized storage.<br \/>\n**Effectively, how?** **\u2192** Clear moderation workflow with optional rewards.<\/p>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/wokmxI5.png\" alt=\"GUI Preview 1\">\n<\/p>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Q9U9WiL.png\" alt=\"GUI Preview 2\">\n<\/p>\n<p>Reports are displayed inside a fully configurable GUI.<\/p>\n<p>**Staff members can:**<br \/>\n&#8211; review reports<br \/>\n&#8211; change report status<br \/>\n&#8211; assign handlers<br \/>\n&#8211; teleport to involved players (reporting and reported player)<br \/>\n&#8211; remove reports<\/p>\n<p>Filtering and sorting options help moderators handle large amounts of reports efficiently.<\/p>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/bKHIres.png\" alt=\"Rewards\">\n<\/p>\n<p>Players can optionally receive rewards when their reports are confirmed.<\/p>\n<p>**Rewards support:**<br \/>\n&#8211; command rewards<br \/>\n&#8211; item rewards<br \/>\n&#8211; offline reward storage<br \/>\n&#8211; reward claiming via **`\/reports claim`**<\/p>\n<p>Due to the support of command rewards, this feature is compatible with other plugins, such as giving out vote keys as rewards or basically any other command.<\/p>\n<p>This allows servers to encourage players to help maintain a fair environment.<\/p>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/cwR3esM.png\" alt=\"Commands\">\n<\/p>\n<details>\n<summary><strong>Commands<\/strong><\/summary>\n<p>| Command | Permission | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| `\/report <player> <reason>` | `playerreport.report` | Create a report for a player. |<br \/>\n| `\/reports` | `playerreport.admin` | Open the moderation GUI to view and manage reports. |<br \/>\n| `\/reports help` | `playerreport.admin` | Shows all available PlayerReport commands. |<br \/>\n| `\/reports search user <player>` | `playerreport.admin` | Search reports created by or against a specific player. |<br \/>\n| `\/reports search id <reportId>` | `playerreport.admin` | Find a report by its unique ID. |<br \/>\n| `\/reports search reason <text>` | `playerreport.admin` | Search reports containing a specific reason. |<br \/>\n| `\/reports search handler <player>` | `playerreport.admin` | Show reports assigned to a specific moderator. |<br \/>\n| `\/reports sethandler <reportId> <player|none>` | `playerreport.admin.handler.set` | Assign or remove a moderator as the handler of a report. |<br \/>\n| `\/reports clear` | `playerreport.admin.clear` | Clear outdated or deleted reports. |<br \/>\n| `\/reports claim` | `playerreport.claim` | Claim rewards for confirmed reports. |<br \/>\n| `\/reports on` | `playerreport.admin.notify.toggle` | Enable report notifications. |<br \/>\n| `\/reports off` | `playerreport.admin.notify.toggle` | Disable report notifications. |<br \/>\n| `\/reports reload` | `playerreport.reload` | Reload the plugin configuration files. |<\/p>\n<\/details>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/7oqTyjp.png\" alt=\"Permissions\">\n<\/p>\n<details>\n<summary><strong>Permissions<\/strong><\/summary>\n<p>| Permission | Description |<br \/>\n|&#8212;|&#8212;|<br \/>\n| `playerreport.*` | Grants access to all PlayerReport permissions. |<br \/>\n| `playerreport.report` | Allows players to create reports using \/report. |<br \/>\n| `playerreport.bypass.cooldown` | Bypasses the report cooldown. |<br \/>\n| `playerreport.immune` | Prevents a player from being reported. |<br \/>\n| `playerreport.admin` | Allows access to the moderation GUI (\/reports). |<br \/>\n| `playerreport.admin.handler.set` | Allows assigning or removing report handlers. |<br \/>\n| `playerreport.admin.clear` | Allows clearing outdated reports using \/reports clear. |<br \/>\n| `playerreport.admin.notify.toggle` | Allows toggling report notifications using \/reports on\/off. |<br \/>\n| `playerreport.reload` | Allows reloading the plugin configuration with \/reports reload. |<br \/>\n| `playerreport.update.notify` | Receive notifications when a plugin update is available. |<br \/>\n| `playerreport.claim` | Allows players to claim rewards for successful reports. |<\/p>\n<\/details>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/gS1b7VI.png\" alt=\"config.yml\">\n<\/p>\n<details>\n<summary><strong>config.yml<\/strong><\/summary>\n<p>&#8220;`yaml<br \/>\n# =========================================================<br \/>\n# PlayerReport &#8211; config.yml<br \/>\n# Built for Paper 1.21.x (api-version: 1.20)<br \/>\n#<br \/>\n# Color codes:<br \/>\n# Use &#038; for normal Minecraft colors (example: &#038;a, &#038;c, &#038;7)<br \/>\n# HEX colors in lang.yml are supported via &#038;#RRGGBB or #RRGGBB<br \/>\n# =========================================================<\/p>\n<p># =========================================================<br \/>\n# Reporting<br \/>\n# Settings for creating reports<br \/>\n# =========================================================<br \/>\nreporting:<\/p>\n<p>  # If true, the reported player must currently be online<br \/>\n  # to be reported.<br \/>\n  requireOnlineTarget: false<\/p>\n<p>  # Maximum number of open reports a single reporter<br \/>\n  # can have at the same time.<br \/>\n  maxOpenReportsPerReporter: 5<\/p>\n<p>  # Cooldown in seconds between creating reports.<br \/>\n  cooldownSeconds: 10<\/p>\n<p>  # Defines how report reasons are handled.<br \/>\n  # Available modes:<br \/>\n  # &#8211; FREETEXT   = players type any reason<br \/>\n  # &#8211; PREDEFINED = players must use one of the predefined reasons<br \/>\n  # &#8211; BOTH       = both systems are allowed<br \/>\n  reasonMode: FREETEXT<\/p>\n<p>  # List of predefined reasons used when PREDEFINED or BOTH is enabled.<br \/>\n  predefinedReasons:<br \/>\n    &#8211; &#8220;Cheating&#8221;<br \/>\n    &#8211; &#8220;Bug abuse&#8221;<br \/>\n    &#8211; &#8220;Harassment&#8221;<\/p>\n<p>  # GUI for selecting predefined report reasons.<br \/>\n  reasonGui:<\/p>\n<p>    # Enables the reason selection GUI.<br \/>\n    enabled: false<\/p>\n<p>    # If true, players may still enter a reason directly by command,<br \/>\n    # even when the reason GUI is enabled.<br \/>\n    allowCommandReason: true<\/p>\n<p>    # Inventory title of the reason selection GUI.<br \/>\n    title: &#8220;&#038;cSelect a reason for &#038;f%target%&#8221;<\/p>\n<p>    # Inventory size of the reason selection GUI.<br \/>\n    # Should be a valid chest size (9, 18, 27, 36, 45, 54).<br \/>\n    size: 27<\/p>\n<p>    filler:<br \/>\n      # If true, empty GUI slots are filled with the filler item.<br \/>\n      enabled: true<\/p>\n<p>      # Material used for filler slots.<br \/>\n      material: GRAY_STAINED_GLASS_PANE<\/p>\n<p>    reasonItem:<br \/>\n      # Material used for each selectable reason.<br \/>\n      material: PAPER<\/p>\n<p>      # Display name of a reason item.<br \/>\n      name: &#8220;&#038;a%reason%&#8221;<\/p>\n<p>      # Lore shown on each reason item.<br \/>\n      lore:<br \/>\n        &#8211; &#8220;&#038;7Report &#038;f%target% &#038;7for: &#038;b%reason%&#8221;<br \/>\n        &#8211; &#8220;&#8221;<br \/>\n        &#8211; &#8220;&#038;eClick to continue&#8221;<\/p>\n<p>    # Confirmation GUI shown before the report is submitted.<br \/>\n    confirm:<\/p>\n<p>      # Title of the confirmation GUI.<br \/>\n      title: &#8220;&#038;cReport &#038;f%target% &#038;cfor &#038;b%reason%&#038;c?&#8221;<\/p>\n<p>      filler:<br \/>\n        # Material used for empty slots in the confirmation GUI.<br \/>\n        material: GRAY_STAINED_GLASS_PANE<\/p>\n<p>      yes:<br \/>\n        # Material of the confirmation button.<br \/>\n        material: LIME_WOOL<\/p>\n<p>        # Display name of the confirmation button.<br \/>\n        name: &#8220;&#038;aYes&#8221;<\/p>\n<p>      no:<br \/>\n        # Material of the cancel button.<br \/>\n        material: RED_WOOL<\/p>\n<p>        # Display name of the cancel button.<br \/>\n        name: &#8220;&#038;cNo&#8221;<\/p>\n<p># =========================================================<br \/>\n# Claims<br \/>\n# Settings for claim \/ handler behavior<br \/>\n# =========================================================<br \/>\nclaims:<\/p>\n<p>  # If true, a report will automatically be claimed by the<br \/>\n  # moderator when its status changes to IN_PROGRESS.<br \/>\n  autoClaimOnInProgress: true<\/p>\n<p># =========================================================<br \/>\n# Timestamps<br \/>\n# Formatting for displayed date and time values<br \/>\n# =========================================================<br \/>\ntimestamps:<\/p>\n<p>  # Timezone used for report timestamps.<br \/>\n  timezone: &#8220;Europe\/Berlin&#8221;<\/p>\n<p>  # Date format pattern.<br \/>\n  dateFormat: &#8220;dd.MM.yyyy&#8221;<\/p>\n<p>  # Time format pattern.<br \/>\n  timeFormat: &#8220;HH:mm:ss&#8221;<\/p>\n<p>  # Final display format.<br \/>\n  # Available placeholders: {date}, {time}<br \/>\n  displayFormat: &#8220;{date} {time}&#8221;<\/p>\n<p># =========================================================<br \/>\n# Messages<br \/>\n# General message display settings<br \/>\n# =========================================================<br \/>\nmessages:<br \/>\n  headerFooter:<\/p>\n<p>    # Enables optional header\/footer formatting in messages.<br \/>\n    enabled: false<\/p>\n<p># =========================================================<br \/>\n# Notifications<br \/>\n# Staff notification settings<br \/>\n# =========================================================<br \/>\nnotifications:<\/p>\n<p>  # If true, notification toggle states are stored persistently.<br \/>\n  persist: true<\/p>\n<p>  toggleCommand:<br \/>\n    # Enables the \/reports on and \/reports off commands.<br \/>\n    enabled: true<\/p>\n<p># =========================================================<br \/>\n# Delete \/ Retention<br \/>\n# Controls how deleted reports are handled<br \/>\n# =========================================================<br \/>\ndelete:<\/p>\n<p>  # Delete mode:<br \/>\n  # &#8211; TAG   = report is marked as deleted<br \/>\n  # &#8211; PURGE = report is permanently removed<br \/>\n  mode: TAG<\/p>\n<p>  # Retention period for deleted reports.<br \/>\n  # 0 usually means no retention-based cleanup.<br \/>\n  retention: 0<\/p>\n<p># =========================================================<br \/>\n# Updates<br \/>\n# Update notification settings<br \/>\n# =========================================================<br \/>\nupdates:<\/p>\n<p>  # If true, players with the proper permission are notified<br \/>\n  # on join when an update is available.<br \/>\n  notifyOnJoin: true<\/p>\n<p># =========================================================<br \/>\n# PlaceholderAPI<br \/>\n# Placeholder expansion settings<br \/>\n# =========================================================<br \/>\nplaceholderapi:<\/p>\n<p>  # Enables PlaceholderAPI support if PlaceholderAPI is installed.<br \/>\n  enabled: true<\/p>\n<p># =========================================================<br \/>\n# Storage<br \/>\n# Storage backend for reports and pending rewards<br \/>\n#<br \/>\n# Supported types:<br \/>\n# &#8211; YAML  = local file storage<br \/>\n# &#8211; MYSQL = MySQL \/ MariaDB database<br \/>\n# =========================================================<br \/>\nstorage:<br \/>\n  reports:<br \/>\n    # Storage type used for reports.<br \/>\n    type: YAML<\/p>\n<p>  pendingRewards:<br \/>\n    # Storage type used for pending rewards.<br \/>\n    type: YAML<\/p>\n<p>  mysql:<br \/>\n    # MySQL server host.<br \/>\n    host: &#8220;127.0.0.1&#8221;<\/p>\n<p>    # MySQL server port.<br \/>\n    port: 3306<\/p>\n<p>    # Database name.<br \/>\n    database: &#8220;playerreport&#8221;<\/p>\n<p>    # Database username.<br \/>\n    username: &#8220;root&#8221;<\/p>\n<p>    # Database password.<br \/>\n    password: &#8220;&#8221;<\/p>\n<p>    # Optional JDBC parameters appended to the connection URL.<br \/>\n    params: &#8220;useSSL=false&#038;allowPublicKeyRetrieval=true&#038;serverTimezone=UTC&#8221;<\/p>\n<p># =========================================================<br \/>\n# Rewards<br \/>\n# Reward system for reporters<br \/>\n# Rewards themselves are defined in rewards.yml<br \/>\n# =========================================================<br \/>\nrewards:<\/p>\n<p>  # Enables the reward system.<br \/>\n  enabled: false<\/p>\n<p>  # If true:<br \/>\n  # when a report is set to CLOSED, rewards are automatically<br \/>\n  # added to the reporter.<br \/>\n  #<br \/>\n  # If a report is marked as FALSE, it will be deleted<br \/>\n  # to prevent rewards.<br \/>\n  simpleReportHandling: false<\/p>\n<p># =========================================================<br \/>\n# Discord Webhook<br \/>\n# Sends report events to Discord<br \/>\n# =========================================================<br \/>\ndiscord:<br \/>\n  webhook:<\/p>\n<p>    # Enables Discord webhook integration.<br \/>\n    enabled: false<\/p>\n<p>    # Discord webhook URL.<br \/>\n    url: &#8220;&#8221;<\/p>\n<p>    events:<br \/>\n      # Send a webhook when a new report is created.<br \/>\n      onReportCreated: true<\/p>\n<p>      # Send a webhook when a report status changes.<br \/>\n      onStatusChanged: true<\/p>\n<p>      # Send a webhook when a handler changes.<br \/>\n      onHandlerChanged: true<\/p>\n<p>    # Custom webhook username shown in Discord.<br \/>\n    username: &#8220;PlayerReport&#8221;<\/p>\n<p>    # Optional avatar URL for the webhook.<br \/>\n    avatarUrl: &#8220;&#8221;<\/p>\n<p>    # If true, webhook messages are sent as embeds.<br \/>\n    useEmbeds: true<\/p>\n<p>    # Optional mention text, for example:<br \/>\n    # &#8220;@everyone&#8221; or &#8220;<@&#038;roleId>&#8221;<br \/>\n    mention: &#8220;&#8221;<\/p>\n<p># =========================================================<br \/>\n# Reports GUI<br \/>\n# Main moderation GUI<br \/>\n# =========================================================<br \/>\nGUI:<\/p>\n<p>  # Title of the reports GUI.<br \/>\n  # Placeholders:<br \/>\n  # %filter%, %sort%, %page%, %pages%<br \/>\n  Name: &#8216;&#038;cReports &#038;7(%filter% &#038;8|&#038;7 %sort% &#038;8|&#038;7 %page%\/%pages%&#038;7)&#8217;<\/p>\n<p>  # Inventory size of the reports GUI.<br \/>\n  Size: 54<\/p>\n<p>  Filter-Item:<\/p>\n<p>    # Slot of the filter item in the GUI.<br \/>\n    Slot: 49<\/p>\n<p>    OPEN:<br \/>\n      # Material shown when the OPEN filter is active\/selectable.<br \/>\n      Material: GREEN_TERRACOTTA<\/p>\n<p>      # Display name of the OPEN filter item.<br \/>\n      Name: &#8216;&#038;a Open Reports&#8217;<\/p>\n<p>      # Lore of the OPEN filter item.<br \/>\n      Lore:<br \/>\n        &#8211; &#8216;&#038;7Shows open &#038; in-progress reports&#8217;<br \/>\n        &#8211; &#8221;<br \/>\n        &#8211; &#8216;&#038;eClick to switch filter&#8217;<\/p>\n<p>    CLOSED:<br \/>\n      # Material shown when the CLOSED filter is active\/selectable.<br \/>\n      Material: RED_TERRACOTTA<\/p>\n<p>      # Display name of the CLOSED filter item.<br \/>\n      Name: &#8216;&#038;c Closed Reports&#8217;<\/p>\n<p>      # Lore of the CLOSED filter item.<br \/>\n      Lore:<br \/>\n        &#8211; &#8216;&#038;7Shows closed reports&#8217;<br \/>\n        &#8211; &#8221;<br \/>\n        &#8211; &#8216;&#038;eClick to switch filter&#8217;<\/p>\n<p>    DELETED:<br \/>\n      # Material shown when the DELETED filter is active\/selectable.<br \/>\n      Material: BROWN_TERRACOTTA<\/p>\n<p>      # Display name of the DELETED filter item.<br \/>\n      Name: &#8216;&#038;6 Deleted Reports&#8217;<\/p>\n<p>      # Lore of the DELETED filter item.<br \/>\n      Lore:<br \/>\n        &#8211; &#8216;&#038;7Shows deleted reports&#8217;<br \/>\n        &#8211; &#8221;<br \/>\n        &#8211; &#8216;&#038;eClick to switch filter&#8217;<\/p>\n<p>  Sort-Item:<\/p>\n<p>    # Slot of the sort item in the GUI.<br \/>\n    Slot: 45<\/p>\n<p>    # Material of the sort item.<br \/>\n    Material: COMPARATOR<\/p>\n<p>    # Display name of the sort item.<br \/>\n    Name: &#8216;&#038;bSort: &#038;f%sort%&#8217;<\/p>\n<p>    # Lore of the sort item.<br \/>\n    Lore:<br \/>\n      &#8211; &#8216;&#038;7Filter: &#038;f%filter%&#8217;<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216;&#038;7Modes:&#8217;<br \/>\n      &#8211; &#8216;&#038;f- NEWEST \/ OLDEST&#8217;<br \/>\n      &#8211; &#8216;&#038;f- STATUS_OPEN_FIRST \/ STATUS_IN_PROGRESS_FIRST (only in OPEN tab)&#8217;<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216;&#038;eClick to change sorting&#8217;<\/p>\n<p>  Navigation:<br \/>\n    Prev:<br \/>\n      # Slot of the previous-page button.<br \/>\n      Slot: 48<\/p>\n<p>      # Material of the previous-page button.<br \/>\n      Material: ARROW<\/p>\n<p>      # Display name of the previous-page button.<br \/>\n      Name: &#8216;&#038;a\u2190 Previous page&#8217;<\/p>\n<p>      # Lore of the previous-page button.<br \/>\n      Lore:<br \/>\n        &#8211; &#8216;&#038;7Click to go back&#8217;<\/p>\n<p>    Next:<br \/>\n      # Slot of the next-page button.<br \/>\n      Slot: 50<\/p>\n<p>      # Material of the next-page button.<br \/>\n      Material: ARROW<\/p>\n<p>      # Display name of the next-page button.<br \/>\n      Name: &#8216;&#038;aNext page \u2192&#8217;<\/p>\n<p>      # Lore of the next-page button.<br \/>\n      Lore:<br \/>\n        &#8211; &#8216;&#038;7Click to go forward&#8217;<\/p>\n<p>  # Always shown in the very last slot (bottom-right).<br \/>\n  # Toggles whether the GUI should only show reports<br \/>\n  # where the current viewer is the handler.<br \/>\n  My-Handler-Only:<br \/>\n    # Material of the toggle item.<br \/>\n    Material: NAME_TAG<\/p>\n<p>    # Display name of the toggle item.<br \/>\n    Name: &#8216;&#038;bOnly my handled reports: &#038;f%state%&#8217;<\/p>\n<p>    # Lore of the toggle item.<br \/>\n    Lore:<br \/>\n      &#8211; &#8216;&#038;7Click to toggle&#8217;<br \/>\n      &#8211; &#8216;&#038;7When enabled, you will only&#8217;<br \/>\n      &#8211; &#8216;&#038;7see reports where you are&#8217;<br \/>\n      &#8211; &#8216;&#038;7the handler.&#8217;<\/p>\n<p>  Default-Item:<br \/>\n    # Material used for report entries in the GUI.<br \/>\n    Material: PAPER<\/p>\n<p>    # Display name of a report entry.<br \/>\n    # Placeholders include report-related values like %id%, %reported%, etc.<br \/>\n    Name: &#8216;&#038;a %reported% &#038;7(#%id%)&#8217;<\/p>\n<p>    # Lore of a report entry.<br \/>\n    Lore:<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216; &#038;eCreated: &#038;7%created%&#8217;<br \/>\n      &#8211; &#8216; &#038;eStatus: &#038;7%status%&#8217;<br \/>\n      &#8211; &#8216; &#038;eHandler: &#038;7%handler%&#8217;<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216; &#038;eReporter: &#038;b%reporter%&#8217;<br \/>\n      &#8211; &#8216; &#038;eReported: &#038;c%reported%&#8217;<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216; &#038;eReason: &#038;b%reason%&#8217;<br \/>\n      &#8211; &#8221;<br \/>\n      &#8211; &#8216;&#038;aLeft-Click &#038;7\u2192 Open report&#8217;<br \/>\n      &#8211; &#8216;&#038;eMiddle-Click &#038;7\u2192 Change Status&#8217;<br \/>\n      &#8211; &#8216;&#038;cRight-Click &#038;7\u2192 Remove&#8217;<\/p>\n<p>    Player-Commands:<br \/>\n      # Commands triggered for the different click types.<br \/>\n      # Leave empty brackets [] to disable.<br \/>\n      LEFT: []<br \/>\n      MIDDLE: []<br \/>\n      RIGHT: []<\/p>\n<p># =========================================================<br \/>\n# GUI Defaults<br \/>\n# Default filter and sorting for the reports GUI<br \/>\n# =========================================================<br \/>\ngui:<\/p>\n<p>  # Default filter when opening the reports GUI.<br \/>\n  # Available: OPEN, CLOSED, DELETED<br \/>\n  defaultFilter: OPEN<\/p>\n<p>  # Default sorting mode when opening the reports GUI.<br \/>\n  # Available:<br \/>\n  # &#8211; NEWEST<br \/>\n  # &#8211; OLDEST<br \/>\n  # &#8211; STATUS_OPEN_FIRST<br \/>\n  # &#8211; STATUS_IN_PROGRESS_FIRST<br \/>\n  defaultSort: NEWEST<br \/>\n&#8220;`<\/p>\n<\/details>\n<details>\n<summary><strong>lang.yml<\/strong><\/summary>\n<p>&#8220;`yaml<br \/>\nprefix: &#8220;&#038;8[&#038;bPlayerReport&#038;8]&#038;r &#8221;<\/p>\n<p>header: &#8220;&#038;8&#038;m&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;<br \/>\nfooter: &#8220;&#038;8&#038;m&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;<\/p>\n<p>only-in-game: &#8220;{prefix}&#038;cThis command can only be used in-game.&#8221;<br \/>\nno-permission: &#8220;{prefix}&#038;cYou don\u2019t have permission.&#8221;<br \/>\nusage-report: &#8220;{prefix}&#038;7Usage: &#038;f\/report <name> <reason>&#8221;<br \/>\nmissing-reason: &#8220;{prefix}&#038;cPlease provide a reason.&#8221;<br \/>\nplayer-not-found: &#8220;{prefix}&#038;cPlayer not found: &#038;f{target}&#8221;<br \/>\ntarget-must-be-online: &#8220;{prefix}&#038;cThis player must be online to be reported: &#038;f{target}&#8221;<br \/>\nreport-self-not-allowed: &#8220;{prefix}&#038;cYou cannot report yourself.&#8221;<br \/>\nreport-target-immune: &#8220;{prefix}&#038;cThis player cannot be reported: &#038;f{target}&#8221;<\/p>\n<p>report-cooldown: &#8220;{prefix}&#038;cPlease wait &#038;f{seconds}&#038;c seconds before creating another report.&#8221;<br \/>\ntarget-cooldown: &#8220;{prefix}&#038;cThis player was reported recently. Please wait &#038;f{seconds}&#038;c seconds before reporting &#038;f{target}&#038;c again.&#8221;<br \/>\nreport-limit-reached: &#8220;{prefix}&#038;cYou reached the limit. Max &#038;f{limit} &#038;cactive reports.&#8221;<br \/>\nreport-saved: &#8220;{prefix}&#038;aReport saved.&#8221;<br \/>\nreport-failed: &#8220;{prefix}&#038;cCould not create report.&#8221;<br \/>\nreport-select-reason: &#8220;{prefix}&#038;7Select a reason for reporting &#038;f{target}&#038;7.&#8221;<br \/>\nreport-reason-not-allowed: &#8220;{prefix}&#038;cFree-text reasons are disabled. Please pick one of the predefined reasons.&#8221;<br \/>\nreport-command-reason-disabled: &#8220;{prefix}&#038;cReporting via command is disabled. Please use the GUI to report &#038;f{target}&#038;c.&#8221;<br \/>\nadmin-notify: &#8220;{prefix}&#038;c{reporter} &#038;7reported &#038;c{target}&#038;7: &#038;f{reason}&#8221;<\/p>\n<p>reports-search-usage: &#8220;{prefix}&#038;7Usage: &#038;f\/reports search user <name>&#038;7 | &#038;f\/reports search id <id>&#038;7 | &#038;f\/reports search reason <reason>&#038;7 | &#038;f\/reports search handler <name>&#8221;<br \/>\nreports-notify-on: &#8220;{prefix}&#038;aNotifications enabled.&#8221;<br \/>\nreports-notify-off: &#8220;{prefix}&#038;cNotifications disabled.&#8221;<br \/>\nreports-toggle-disabled: &#8220;{prefix}&#038;cToggle command disabled in config.&#8221;<br \/>\nreports-clear-failed: &#8220;{prefix}&#038;cCould not clear reports.&#8221;<br \/>\nreports-cleared: &#8220;{prefix}&#038;aCleared &#038;f{amount}&#038;a reports.&#8221;<\/p>\n<p>usage-sethandler: &#8220;{prefix}&#038;7Usage: &#038;f\/reports sethandler <id> <player|none>&#8221;<br \/>\nreport-not-found: &#8220;{prefix}&#038;cReport not found: &#038;f{id}&#8221;<br \/>\nreport-not-found-generic: &#8220;{prefix}&#038;cReport not found.&#8221;<br \/>\nhandler-set: &#8220;{prefix}&#038;aHandler for report &#038;f#{id} &#038;aset to &#038;f{handler}&#038;a.&#8221;<br \/>\nhandler-cleared: &#8220;{prefix}&#038;eHandler for report &#038;f#{id} &#038;ecleared.&#8221;<br \/>\nreload-success: &#8220;{prefix}&#038;aReloaded config.yml and lang.yml.&#8221;<br \/>\nreload-failed: &#8220;{prefix}&#038;cReload failed. Check console.&#8221;<\/p>\n<p>rewards-disabled: &#8220;{prefix}&#038;cRewards are disabled.&#8221;<br \/>\nrewards-nothing: &#8220;{prefix}&#038;7You have no rewards to claim.&#8221;<br \/>\nrewards-claimed: &#8220;{prefix}&#038;aClaimed &#038;f{amount}&#038;a rewards.&#8221;<br \/>\nrewards-claim-in-progress: &#8220;{prefix}&#038;ePlease wait, your previous reward claim is still being processed.&#8221;<br \/>\nrewards-load-failed: &#8220;{prefix}&#038;cCould not load your pending rewards right now.&#8221;<br \/>\nrewards-claim-partial-restored: &#8220;{prefix}&#038;cAn error occurred while giving your rewards. Remaining rewards were restored.&#8221;<br \/>\nreward-granted: &#8220;{prefix}&#038;aReward has been stored for the reporter.&#8221;<br \/>\nreward-not-granted: &#8220;{prefix}&#038;eNo reward stored (already granted or missing reporter\/reward config).&#8221;<br \/>\nreward-skipped: &#8220;{prefix}&#038;7No reward will be given.&#8221;<br \/>\nrewards-available: &#8220;{prefix}&#038;aYou have &#038;f{amount}&#038;a reward(s) available! Use &#038;f\/reports claim&#038;a to collect them.&#8221;<\/p>\n<p>report-marked-false: &#8220;{prefix}&#038;eReport marked as false and deleted.&#8221;<br \/>\nupdate-available: &#8220;{prefix}&#038;eUpdate available: &#038;f{current} &#038;7-> &#038;a{latest}n{prefix}&#038;7Spigot: &#038;b{url}&#8221;<\/p>\n<p>reports-gui-delete-failed: &#8220;{prefix}&#038;cReport could not be deleted.&#8221;<br \/>\nreports-gui-status-update-failed: &#8220;{prefix}&#038;cReport status could not be updated.&#8221;<br \/>\nlocation-player-offline: &#8220;{prefix}&#038;cLocation: N\/A (player offline)&#8221;<br \/>\nlocation-not-available: &#8220;{prefix}&#038;cLocation: N\/A&#8221;<br \/>\nteleported: &#8220;{prefix}&#038;aTeleported.&#8221;<\/p>\n<p>gui:<br \/>\n  shared:<br \/>\n    filler-name: &#8221; &#8221;<\/p>\n<p>  report-reason:<br \/>\n    title: &#8220;&#038;cSelect a reason for &#038;f{target}&#8221;<br \/>\n    reason-item:<br \/>\n      name: &#8220;&#038;a{reason}&#8221;<br \/>\n      lore:<br \/>\n        &#8211; &#8220;&#038;7Report &#038;f{target} &#038;7for: &#038;b{reason}&#8221;<br \/>\n        &#8211; &#8220;&#8221;<br \/>\n        &#8211; &#8220;&#038;eClick to continue&#8221;<\/p>\n<p>  report-confirm:<br \/>\n    title: &#8220;&#038;cReport &#038;f{target} &#038;cfor &#038;b{reason}&#038;c?&#8221;<br \/>\n    yes:<br \/>\n      name: &#8220;&#038;aYes&#8221;<br \/>\n    no:<br \/>\n      name: &#8220;&#038;cNo&#8221;<\/p>\n<p>  reward-decision:<br \/>\n    title: &#8220;&#038;bGive reward? &#038;7(# {id})&#8221;<br \/>\n    yes: &#8220;&#038;aYes, give reward&#8221;<br \/>\n    no: &#8220;&#038;cNo, don&#8217;t give reward&#8221;<\/p>\n<p>  reports:<br \/>\n    shared:<br \/>\n      back:<br \/>\n        name: &#8220;&#038;cBack&#8221;<br \/>\n      state-on: &#8220;&#038;aON&#8221;<br \/>\n      state-off: &#8220;&#038;cOFF&#8221;<br \/>\n      not-available: &#8220;N\/A&#8221;<br \/>\n      location: &#8220;&#038;7Location: &#038;f{location}&#8221;<br \/>\n      filter:<br \/>\n        open: &#8220;OPEN&#8221;<br \/>\n        closed: &#8220;CLOSED&#8221;<br \/>\n        deleted: &#8220;DELETED&#8221;<br \/>\n      sort:<br \/>\n        newest: &#8220;NEWEST&#8221;<br \/>\n        oldest: &#8220;OLDEST&#8221;<br \/>\n        status-open-first: &#8220;STATUS_OPEN_FIRST&#8221;<br \/>\n        status-in-progress-first: &#8220;STATUS_IN_PROGRESS_FIRST&#8221;<br \/>\n      status:<br \/>\n        open: &#8220;OPEN&#8221;<br \/>\n        in-progress: &#8220;IN_PROGRESS&#8221;<br \/>\n        closed: &#8220;CLOSED&#8221;<br \/>\n        deleted: &#8220;DELETED&#8221;<\/p>\n<p>    list:<br \/>\n      title: &#8220;&#038;cReports &#038;7(%filter% &#038;8|&#038;7 %sort% &#038;8|&#038;7 %page%\/%pages%&#038;7)&#8221;<br \/>\n      only-my-handler:<br \/>\n        name: &#8220;&#038;bOnly my handled reports: &#038;f{state}&#8221;<br \/>\n        lore:<br \/>\n          &#8211; &#8220;&#038;7Click to toggle&#8221;<br \/>\n          &#8211; &#8220;&#038;7When enabled, you will only&#8221;<br \/>\n          &#8211; &#8220;&#038;7see reports where you are&#8221;<br \/>\n          &#8211; &#8220;&#038;7the handler.&#8221;<br \/>\n      filter:<br \/>\n        open:<br \/>\n          name: &#8220;&#038;a Open Reports&#8221;<br \/>\n          lore:<br \/>\n            &#8211; &#8220;&#038;7Shows open &#038; in-progress reports&#8221;<br \/>\n            &#8211; &#8220;&#8221;<br \/>\n            &#8211; &#8220;&#038;eClick to switch filter&#8221;<br \/>\n        closed:<br \/>\n          name: &#8220;&#038;c Closed Reports&#8221;<br \/>\n          lore:<br \/>\n            &#8211; &#8220;&#038;7Shows closed reports&#8221;<br \/>\n            &#8211; &#8220;&#8221;<br \/>\n            &#8211; &#8220;&#038;eClick to switch filter&#8221;<br \/>\n        deleted:<br \/>\n          name: &#8220;&#038;6 Deleted Reports&#8221;<br \/>\n          lore:<br \/>\n            &#8211; &#8220;&#038;7Shows deleted reports&#8221;<br \/>\n            &#8211; &#8220;&#8221;<br \/>\n            &#8211; &#8220;&#038;eClick to switch filter&#8221;<br \/>\n      sort:<br \/>\n        name: &#8220;&#038;bSort: &#038;f{sort}&#8221;<br \/>\n        lore:<br \/>\n          &#8211; &#8220;&#038;7Filter: &#038;f{filter}&#8221;<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8220;&#038;7Modes:&#8221;<br \/>\n          &#8211; &#8220;&#038;f- NEWEST \/ OLDEST&#8221;<br \/>\n          &#8211; &#8220;&#038;f- STATUS_OPEN_FIRST \/ STATUS_IN_PROGRESS_FIRST (only in OPEN tab)&#8221;<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8220;&#038;eClick to change sorting&#8221;<br \/>\n      navigation:<br \/>\n        prev:<br \/>\n          name: &#8220;&#038;a\u2190 Previous page&#8221;<br \/>\n          lore:<br \/>\n            &#8211; &#8220;&#038;7Click to go back&#8221;<br \/>\n        next:<br \/>\n          name: &#8220;&#038;aNext page \u2192&#8221;<br \/>\n          lore:<br \/>\n            &#8211; &#8220;&#038;7Click to go forward&#8221;<br \/>\n      search:<br \/>\n        user: &#8220;User: {value}&#8221;<br \/>\n        id: &#8220;ID: {value}&#8221;<br \/>\n        reason: &#8220;Reason: {value}&#8221;<br \/>\n        handler: &#8220;Handler: {value}&#8221;<br \/>\n      entry:<br \/>\n        name: &#8220;&#038;a %reported% &#038;7(#%id%)&#8221;<br \/>\n        lore:<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8221; &#038;eCreated: &#038;7%created%&#8221;<br \/>\n          &#8211; &#8221; &#038;eStatus: &#038;7{status_display}&#8221;<br \/>\n          &#8211; &#8221; &#038;eHandler: &#038;7%handler%&#8221;<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8221; &#038;eReporter: &#038;b%reporter%&#8221;<br \/>\n          &#8211; &#8221; &#038;eReported: &#038;c%reported%&#8221;<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8221; &#038;eReason: &#038;b%reason%&#8221;<br \/>\n          &#8211; &#8220;&#8221;<br \/>\n          &#8211; &#8220;&#038;aLeft-Click &#038;7\u2192 Open report&#8221;<br \/>\n          &#8211; &#8220;&#038;eMiddle-Click &#038;7\u2192 Change Status&#8221;<br \/>\n          &#8211; &#8220;&#038;cRight-Click &#038;7\u2192 Remove&#8221;<\/p>\n<p>    confirm-delete:<br \/>\n      title: &#8220;&#038;cRemove report?&#8221;<br \/>\n      confirm:<br \/>\n        name: &#8220;&#038;aConfirm&#8221;<br \/>\n      cancel:<br \/>\n        name: &#8220;&#038;cCancel&#8221;<br \/>\n      info:<br \/>\n        name: &#8220;&#038;7Target: &#038;f{target}&#8221;<\/p>\n<p>    details:<br \/>\n      title: &#8220;&#038;cReport #{id}&#8221;<br \/>\n      teleport-click: &#8220;&#038;7Click to teleport&#8221;<br \/>\n      teleport-reporter-current:<br \/>\n        name: &#8220;&#038;aTeleport: reporter (current)&#8221;<br \/>\n      teleport-reporter-snapshot:<br \/>\n        name: &#8220;&#038;aTeleport: reporter (at report)&#8221;<br \/>\n      teleport-target-current:<br \/>\n        name: &#8220;&#038;eTeleport: reported (current)&#8221;<br \/>\n      teleport-target-snapshot:<br \/>\n        name: &#8220;&#038;eTeleport: reported (at report)&#8221;<br \/>\n      status:<br \/>\n        name: &#8220;&#038;bSet status&#8221;<br \/>\n        lore-created: &#8220;&#038;7Created: &#038;f{created}&#8221;<br \/>\n        lore-current: &#8220;&#038;7Current: &#038;f{status}&#8221;<br \/>\n        lore-handler: &#8220;&#038;7Handler: &#038;f{handler}&#8221;<br \/>\n        lore-click: &#8220;&#038;7Click to choose&#8221;<br \/>\n      back:<br \/>\n        lore: &#8220;&#038;7Return to \/reports&#8221;<\/p>\n<p>    status-select:<br \/>\n      title: &#8220;&#038;bSet status #{id}&#8221;<br \/>\n      open:<br \/>\n        name: &#8220;&#038;aOPEN&#8221;<br \/>\n        lore-1: &#8220;&#038;7Set status to &#038;aOPEN&#8221;<br \/>\n        lore-2: &#8220;&#038;7(Handler will be cleared)&#8221;<br \/>\n      in-progress:<br \/>\n        name: &#8220;&#038;eIN_PROGRESS&#8221;<br \/>\n        lore-1: &#8220;&#038;7Set status to &#038;eIN_PROGRESS&#8221;<br \/>\n      closed:<br \/>\n        name: &#8220;&#038;cCLOSED&#8221;<br \/>\n        lore-1: &#8220;&#038;7Set status to &#038;cCLOSED&#8221;<br \/>\n      back:<br \/>\n        lore: &#8220;&#038;7Return to details&#8221;<\/p>\n<p>discord:<br \/>\n  report-created:<br \/>\n    title: &#8220;New report #{id}&#8221;<br \/>\n    description: &#8220;**Reporter:** {reporter}n**Reported:** {target}n**Reason:** {reason}n**Status:** {status}&#8221;<br \/>\n  status-changed:<br \/>\n    title: &#8220;Report #{id} status changed&#8221;<br \/>\n    description: &#8220;**Actor:** {actor}n**Reported:** {target}n**From:** {old_status}n**To:** {new_status}n**Handler:** {handler}&#8221;<br \/>\n  handler-changed:<br \/>\n    title: &#8220;Report #{id} handler updated&#8221;<br \/>\n    description: &#8220;**Actor:** {actor}n**Reported:** {target}n**Handler:** {handler}n**Status:** {status}&#8221;<br \/>\n&#8220;`<\/p>\n<\/details>\n<details>\n<summary><strong>Placeholders<\/strong><\/summary>\n<p>| Placeholder | Description |<br \/>\n|&#8212;|&#8212;|<br \/>\n| `%playerreport_reports_total%` | Total number of reports stored on the server. |<br \/>\n| `%playerreport_reports_open%` | Total number of currently open reports. |<br \/>\n| `%playerreport_reports_in_progress%` | Total number of reports currently being handled. |<br \/>\n| `%playerreport_reports_closed%` | Total number of closed reports. |<br \/>\n| `%playerreport_reports_deleted%` | Total number of deleted reports. |<br \/>\n| `%playerreport_reports_created%` | Number of reports created by the player. |<br \/>\n| `%playerreport_reports_against%` | Number of reports made against the player. |<br \/>\n| `%playerreport_reports_handled%` | Number of reports handled by the player (as moderator). |<br \/>\n| `%playerreport_reports_open_for_player%` | Number of open reports created by the player. |<br \/>\n| `%playerreport_reports_handled_open%` | Number of open reports currently assigned to the player as handler. |<\/p>\n<\/details>\n<p align=\"center\">\n  <img decoding=\"async\" src=\"https:\/\/i.imgur.com\/xxI7phk.png\" alt=\"Support\">\n<\/p>\n<p>Please **<u>DO NOT<\/u>** leave bad reviews for issues.<br \/>\nIf you encounter problems, please contact me via PM, the discussion tab or the Discord server.<\/p>\n<p>Thank you!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A modern, fully in-game player reporting system designed for server moderation teams.<\/p>\n","protected":false},"featured_media":122542,"template":"","meta":{"_minecraft_slug":"player-report","_minecraft_project_id":"LYCGszSd","_minecraft_author":"Aevox","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":26,"_minecraft_follows":2,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"player-report.zip","_minecraft_size_bytes":4503735,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T22:16:08.518339Z","_minecraft_date_created":"2026-03-16T23:35:00.975453Z","_minecraft_date_modified":"2026-03-13T21:51:00.106871Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/player-report","_minecraft_icon_attachment_id":122542,"_minecraft_imported_at":"2026-06-07T04:54:48+00:00","_minecraft_import_hash":"87b0df34a73c5e41b45c898cc921e382","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[125,126,127,128,867,92],"mod_loader":[131,132,133],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-122541","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-folia","mod_category-management","mod_category-paper","mod_category-purpur","mod_category-social","mod_category-utility","mod_loader-folia","mod_loader-paper","mod_loader-purpur","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Player Report - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Player Report - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A modern, fully in-game player reporting system designed for server moderation teams.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i.imgur.com\/vW88r8f.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/\",\"name\":\"Player Report - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png\",\"datePublished\":\"2026-06-07T04:54:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-report\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Player Report\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Player Report - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/","og_locale":"en_US","og_type":"article","og_title":"Player Report - Minecraft","og_description":"A modern, fully in-game player reporting system designed for server moderation teams.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/i.imgur.com\/vW88r8f.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/","name":"Player Report - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png","datePublished":"2026-06-07T04:54:47+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/player-report\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-report-icon-556e3fde8e8e48e68c5c2adc404d1af42eb8ccfe.png","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-report\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Player Report"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/122541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/122542"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=122541"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=122541"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=122541"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=122541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}