# Report types & Reasons

You can configure the reports section to act in different ways. Below I will explain the different ways of setting up the report configuration.

### 1. No predefined reasons, No Types

This is the default configuration for reports.

```yaml
reports-module:
  enabled: true
  ...
  fixed-reason: false
  fixed-reason-culprit: false
  report-types: []
  reasons: []
  ...
```

When configured like this, a player can create a report in the following ways:

* /report \<reason>
* /reportplayer \<playername> \<reason>&#x20;

### 2. No predefined reasons, predefined Types

You can configure report-types underneath the reports-module. This is completely optional.\
If you do configure them the player creating the report will get a selection screen where he must select his report type.

When configured like this, a player can create a report in the following ways:

* /report \<reason>
* /reportplayer \<playername> \<reason>&#x20;

After executing the command the select type GUI will be shown.

Every report type must define a **name.** \
Optionally you can also define **info** which will be displayed as lore of the item and a **material.**

```yaml
reports-module:
  enabled: true
  ...
  fixed-reason: false
  fixed-reason-culprit: false
  report-types:
    - name: GRIEFED
      info: Select when you want to report someone destroying your property.
      material: MUSIC_DISC_11
    - name: BULLIED
      info: Something about bullying
      material: MUSIC_DISC_13
    - name: BUG
      info: Select this report type if you found a bug somewhere on the server
      material: MUSIC_DISC_BLOCKS
  reasons: []
  ...
```

![](/files/-MVJXAJGEx2Kq7nPu72s)

### Predefined Reasons, No types

You can define predefined reasons for reports. When reasons are defined a player can create a report in the following ways:

* /report \<reason?>
* /reportplayer \<player> \<reason?>

Notice that the reason becomes optional in this scenario. If the player does not provide a reason, the reason select GUI will be shown. You can make it so that the GUI always shows up by setting the `fixed-reason` to true.

Every report reason must define a **reason.** \
Optionally you can also define **info** which will be displayed as lore of the item and a **material.**\
you can also define a **type,** this is also optional. If you define a type, this type will be stored inside the database if the user selects this reason through the GUI.

```yaml
reports-module:
  enabled: true
  ...
  fixed-reason: false 
  fixed-reason-culprit: false
  report-types: []
  reasons:
    - reason: Kill Aura
      info: Report for kill aura
      material: MUSIC_DISC_11
      type: HACKING
    - reason: Speed hacks
      info: Select for reporting speed hacks
      material: MUSIC_DISC_13
      type: HACKING
    - reason: god mode
      info: Select when suspecting a player from using god mode
      type: HACKING
    - reason: Something sab1
      info: Select when sabtao
      type: SABOTAGE
    - reason: something sab2
      info: Select when sabot
      type: SABOTAGE
  ...
```

![](/files/-MaGHjX0ffjTvR7NyC2o)

### 4. Predefined reasons, Predefined types

When configuring the reports in this way a player can create a report in the following ways:

* /report \<reason?>
* /reportplayer \<player> \<reason?>

Reason is optional in this scenario. If reason is provided only the select type GUI is shown.\
If the player does not provide a reason then first the select Type GUI is shown, and based on the Type select the Select Reason GUI is shown.

**In this setup \`type\` for report reasons is mandatory! The type must be the same as the one defined in the report types.**

```yaml
reports-module:
  enabled: true
  ...
  fixed-reason: false
  fixed-reason-culprit: false
  report-types:
    - name: HACKS
      info: 'Select iof you want to report someone for hacking'
      material: MUSIC_DISC_11
      filters: culprit=true
    - name: BUG
      info: 'Report a bug'
      material: MUSIC_DISC_13
      filters: culprit=false
  reasons:
    - reason: Kill Aura
      info: Report for kill aura
      material: MUSIC_DISC_11
      type: HACKS
    - reason: Fly hacks
      info: Select for reporting fly hacks
      material: ELYTRA
      type: HACKS
    - reason: X ray
      info: Select when suspecting a player from using an xray
      material: MUSIC_DISC_13
      type: HACKS
    - reason: Network
      info: Something went wrong connecting to a server
      type: BUG
    - reason: Plugin 
      info: A plugin is not working as expected
      type: BUG
  ...
```

### Filters

Both reasons as report types can define a filter **"culprit".** You can use this filter to decide if reasons or types should be visible depending the fact if a player got reported or not. When the filter is not defined they will be shown with both.

```yaml
reports-module:
  enabled: true
  ...
  fixed-reason: false
  fixed-reason-culprit: false
  report-types:
    - name: HACKS
      info: 'Select iof you want to report someone for hacking'
      material: MUSIC_DISC_11
      filters: culprit=true
  reasons: []
  ...
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.staffplusplus.org/features/reporting/custom-report-types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
