# Main configuration

<details>

<summary>Full default configuration with comments included</summary>

{% code title="config.yml" lineNumbers="true" expandable="true" %}

```yml
# Checks for updates on plugin startup
check-for-updates: true

# Set the default language for the messages that appear on the screen sent by this plugin
# undefined - uses the language of the players' system. If the language is not recognized by the plugin,
# en-GB (United English) will be set as common language.
#  
# You can find all language tags in https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html
# There is possibility that your language was not translated yet, but the file with default values will be created for you.
default-language: undefined

# This option is only used by the developers of the plugin
# to enable special services which is not useful for servers.
developer-mode: false

# Can the plugin log debug messages to console? Sometimes its useful
log-console: true

# What economy service should the plugin use when working with players economy?
# Can be any, vault, excellenteconomy
economy-provider: any

# There are 3 types of handling players data:
# save (default) - Saves player data like inventory content, effects and related data to a file without confirmation
#     This can be useful in case of unexpected server shutdown to avoid data corruption and loss.
#  
# require_empty_inventory - Players must empty their inventory, leave vehicles before attempting to join a ragemode game,
#     if they don't do this they won't be able to join the game
#  
# clear - Clears player data if they tries to join a ragemode game and their data won't be restored afterwards (irreversible process)
#  
# Selecting 'clear' some data will still be saved, for example the last known location of the player
safe-player-data-method: save

# Used to select the game area to be a protected area.
selection:

  # The item to function for selection
  # Set to "air" to disable
  # To disable item selection function you need to drop the item or remove from your inventory.
  item: golden_shovel

  # Particle to display when area selection happens
  # Selection effect disables automatically after 10 minutes, if the player has not cancelled yet
  particle:

    # Particle to display, list of effects: https://jd.papermc.io/paper/org/bukkit/Particle.html
    # Set to none to disable selection effect
    type: composter

    # Particle data if the specified effect requires data to display
    data: ''

  # When enabled, displays particle effects around selected area
  display-effect-on-selection: true

# What are the GUI interfaces that can be opened using command?
open-gui:

  # When enabled, players executing /rm listgames command, will open a gui listing all the available games
  # if disabled players will receive a list of message of the available games in the game chat
  listing-games: true

  # When enabled, players executing /rm stats command, will open a gui showing their stats
  # in more detail and clean way
  # if disabled, players will receive a wall of message of their stats in chat instead
  # The menu also shows the amount of lost games and the average winning percentage
  stats: true

  # When enabled, players executing /rm listplayers command, will open a gui listing all
  # playing players in games in more detail
  # if disabled, players will receive a wall of message of the playing players in games in chat instead
  player-listing: true

# Points configuration
points:

  # Points conversion multiplier when converting points to in game currency
  # Must be greater than 0.0
  conversion-multiplier: 0.5

  # How many points should new players start with?
  # Value can only be positive
  new-players: 0

  # How many maximum points a player can have?
  # Set to 0 for no limit (maximum integer allowed by the server)
  max-points: 0

  # Determines if players can have negative amount (< 0) of points
  # Players can not start with negative amount of points, but they can receive penalties in games
  # which can result negative amount.
  players-can-have-negative-points: false

# Number of commands to list when using /rm help
# Minimum is 1
commands-each-page: 5

# Number of players displayed in leaderboard GUI
# Set to 0 for no limit
toplist-limit: 10

# The list of disabled ragemode-only commands
# These commands can not be executed by any player, including operators
disabled-ragemode-commands:
- convertdatabase

# Configure description for variables
variables:

  # Variable description for drop crate reward message
  drop-crate-rewards:
  - ''
  - <green>- %value% %type%

  # The active player missions variable
  player-missions:
    description:
    - ''
    - <gray> - %mission% %completed%
    completed: <green>✔
    incompleted: <red>✘

  # The heart icons that displays when using %player-lives% variable
  heart-icons:

    # Maximum number of heart icons the player have specified per game (player lives)
    max-display: 5

    # The icon displayed for %player-lives% variable
    text: <red>❤

# Hook into bungee
bungee:
  enable: false

  # The names of the bungee servers from which players will be teleported
  # to one of the online servers at the end of the game.
  # If the first one is not online or is not possible due to any connection
  # issues, players will try to connect to the others.
  #  
  # In case if you do not have a game created on the server, players will be teleported to the lobby server.
  #  
  # If you don't have any lobby server, you need to remove these servers from
  # this list to teleport the players to the last location.
  # Known as fallback servers
  target-servers:
  - lobby
  - hub

  # Game search list, when a player connects to the server, which game
  # to teleport to, if it is not possible to join to the first, it will try the second.
  #  
  # In case if the player can not join to any game, they will be teleported to the lobby server.
  #  
  # Leave it empty if you want to teleport players to the first game every time.
  # If the player is unable to join to the first game, they will try the others,
  # but if they fail, the player will be returned to the lobby server.
  game-finding-list: []

  # If enabled, players will join to random games on server join if 'game-finding-list' option is empty.
  # The behaviour of this option is same as above, if the player unable to join to the selected game, they will try the others,
  # but if they fail, the player will be returned to the lobby server.
  random-join: false

# The database where to save plugin data.
storage:

  # Database types: yaml, mysql, sqlite
  # Changing database type while data exist in the current one will create a new database but no data
  # will be transferred, you need to do it manually, or use /rm convertdatabase command
  type: yaml

  # After how many days the inactive users data should be removed from database?
  # Set to 0 to disable
  cleanup-days: 0

  # Should we save data to database on each game end?
  # If disabled, players, game and other data will only be saved on server shutdown.
  save-database-on-each-game-end: true

  # These are the table names you can modify
  # Modifying any table name will create a new empty one and any existing table will be ignored
  # You need to transfer data manually to the new table once created
  table-names:
    player-missions: ragemode_player_missions
    game-history: ragemode_game_history
    stats-players: ragemode_stats_players
    players: ragemode_players
    player-skills: ragemode_player_skills
    skill-levels: ragemode_player_skill_levels

  # Settings specifically for MySQL
  mysql:
    host: localhost
    port: 3306
    database: db
    username: accountname
    password: password

    # Connection variables and documentation: https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
    # You can modify or add elements to this list as you wish for database connection
    properties:
    - maxReconnects=1
    - characterEncoding=UTF-8
    - autoReconnect=true
    - sslMode=DISABLED

  # Settings specifically for SQLite
  sql:
    file-name: rm.sqlite.db

    # Additional properties for SQL connection
    additional-properties:
    - journal_mode=OFF

# When enabled opens a GUI for the executor player to confirm their decision.
# If the option is not enabled the task will be executed without confirmation.
# This confirmation is only available for players.
confirmations:

  # When the player performs '/rm resetplayerstats' command
  reset-player-stat: true

  # Confirmation UI when the user wants to convert database with '/rm convertdatabase' command
  reset-database: true

  # When the player performs '/rm removegame' command
  remove-game: true

  # When the player performs '/rm convertpoints' command
  convert-points: true

  # Confirmation UI when player wants to upgrade a skill from skills menu
  skill-upgrade: true

  # Confirmation UI when player wants to buy a skill from skills menu
  buy-skill: true

```

{% endcode %}

</details>

## Settings reference

### `check-for-updates`

*Default: true*\
Checks for updates on plugin startup

### `default-language`

Set the default language for the messages that appear on the screen sent by this plugin

`undefined` - uses the language of the players' system. If the language is not recognised by the plugin, `en-GB` (United English) will be set as common language.\
\
You can find all language tags in [oracle site](https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html)

There is possibility that your language was not translated yet, but the file with default values will be created for you.

### `developer-mode`

*Default: false*\
This option is only used by the developers of the plugin to enable special services which is not useful for servers.

### `log-console`

*Default: true*\
Logging debug messages to console

### `economy-provider`

What economy service should the plugin use when working with players economy?\
Can be `any`, `vault`, `excellenteconomy`

### `safe-player-data-method`

There are 3 types of handling players data:

<details>

<summary>Types description</summary>

`save` (default)

Saves player data like inventory content, effects and related data to a file without confirmation. This can be useful in case of unexpected server shutdown to avoid data corruption and loss.

`require_empty_inventory`

Players must empty their inventory, leave vehicles before attempting to join a ragemode game, if they don't do this they won't be able to join the game

`clear`

Clears player data if they tries to join a ragemode game and their data won't be restored afterwards (irreversible process). Selecting `clear` some data will still be saved, for example the last known location of the player

</details>

### `selection`

`item`

The item to function for selection\
Set to `air` to disable\
To disable item selection function you need to drop the item or remove from your inventory.

`particle`

Particle to display when area selection happens\
Selection effect disables automatically after 10 minutes, if the player has not cancelled yet

`particle.type`

Particle to display, list of effects: [Particles](https://jd.papermc.io/paper/org/bukkit/Particle.html)\
Set to `none` to disable selection effect

`particle.data`

Particle data if the specified effect requires data to display

`display-effect-on-selection`

When enabled, displays particle effects around selected area

### `open-gui`

Determines if these on command execution should open a GUI interface or print it to the game chat instead.

`listing-games`

When enabled, players executing `/rm listgames` command, will open a gui listing all the available games\
if disabled players will receive a list of message of the available games in the game chat

`stats`

When enabled, players executing `/rm stats` command, will open a gui showing their stats in more detail and clean way\
if disabled, players will receive a wall of message of their stats in chat instead\
The menu also shows the amount of lost games and the average winning percentage

`player-listing`

When enabled, players executing `/rm listplayers` command, will open a gui listing all playing players in games in more detail\
if disabled, players will receive a wall of message of the playing players in games in chat instead

### `points`

`conversion-multiplier`

Points conversion multiplier when converting points to in game currency\
Must be greater than 0.0

`new-players`

How many points should new players start with?\
Value can only be positive

`players-can-have-negative-points`

Determines if players can have negative amount (< 0) of points\
Players can not start with negative amount of points, but they can receive penalties in games which can result negative amount.

`max-points`

Defines the maximum points possible for a player. Set to `0` for not limit ([maximum integer](#user-content-fn-1)[^1])

### `commands-each-page`

Number of commands to list when using `/rm help` command with a page number.\
Minimum is 1

### `toplist-limit`

Number of players displayed in the leaderboard GUI\
Set to 0 for no limit

### `disabled-ragemode-commands`

The list of disabled ragemode-only commands\
These commands can not be executed by any player, including operators

### `variables`

Configure description for built-in variables (placeholders)

`drop-crate-rewards`

The description for drop crate rewards

`player-missions`

`description`

The description of the active player missions

`completed`

The text displayed when the mission is completed

`incompleted`

The text displayed when mission is not completed yet

`heart-icons`

The heart icons that displays when using `%player-lives%` variable within the plugin

`max-display`

Maximum number of heart icons the player have specified per game (player lives)

`text`

The text to display

### `bungee`

`target-servers`

The names of the bungee servers from which players will be teleported to one of the online servers at the end of the game.\
If the first one is not online or is not possible due to any connection issues, players will try to connect to the others.

In case if you do not have a game created on the server, players will be teleported to the lobby server.

If you don't have any lobby server, you need to remove these servers from this list to teleport the players to the last location. Known as fallback servers

`game-finding-list`

Game search list, when a player connects to the server, which game to teleport to, if it is not possible to join to the first, it will try the second.

In case if the player can not join to any game, they will be teleported to the lobby server.

Leave it empty if you want to teleport players to the first game every time. If the player is unable to join to the first game, they will try the others, but if they fail, the player will be returned to the lobby server.

`random-join`

If enabled, players will join to random games on server join if `game-finding-list` option is empty.\
The behaviour of this option is same as above, if the player unable to join to the selected game, they will try the others, but if they fail, the player will be returned to the lobby server.

### `storage`

The database where to save plugin data.

`type`

Database types: `yaml`, `mysql`, `sqlite`

Changing database type while data exist in the current one will create a new database but no data will be transferred, you need to do it manually, or use `/rm convertdatabase` command

`cleanup-days`

After how many days the inactive users data should be removed from database?\
Set to 0 to disable

`save-database-on-each-game-end`

Should we save data to database on each game end?\
If disabled, players, game and other data will only be saved on server shutdown.

`table-names`

These are the table names you can modify\
Modifying any table name will create a new empty one and any existing table will be ignored\
You need to transfer data manually to the new table once created

<details>

<summary>Table names to modify</summary>

`player-missions`\
`game-history`\
`stats-players`\
`players`\
`player-skills`\
`skill-levels`

</details>

`mysql`

`mysql.host`

The host of MySQL database

`mysql.port`

Port of MySQL database, default is 3306

`mysql.database`

Database name

`mysql.username`

The user name required for database authentication

`mysql.password`

The password required for database authentication

`mysql.properties`

[Connection variables and documentation](https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html)\
You can modify or add elements to this list as you wish for database connection

`sql`

`sql.file-name`

The file name of SQLite database

`sql.additional-properties`

Additional properties for SQL connection

### `confirmations`

When enabled opens a GUI for the executor player to confirm their decision.\
If the option is not enabled the task will be executed without confirmation.\
This confirmation is only available for players.

<details>

<summary>Types</summary>

`reset-player-stat`\
`remove-game`\
`convert-points`\
`skill-upgrade`\
`buy-skill`\
`reset-database`

</details>

[^1]: 2^31-1 = 2147483647


---

# 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://mdswork.gitbook.io/ragemode-docs/main-configuration.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.
