# 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: []
  ...
```

![](https://3621425798-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPQohtcLxhXAvpSXOMt%2F-MVJWMM9HAg4ENvY2N1t%2F-MVJXAJGEx2Kq7nPu72s%2Fselect_report_type.png?alt=media\&token=d5a9be31-0e48-4882-8bdb-768c144bd5c5)

### 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
  ...
```

![](https://3621425798-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPQohtcLxhXAvpSXOMt%2F-MaGGE5oBhyWxgUvtsTX%2F-MaGHjX0ffjTvR7NyC2o%2Fselectreasongui.PNG?alt=media\&token=fe6ae0aa-5a59-4085-ae04-fbab5364fd7d)

### 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: []
  ...
```
