> For the complete documentation index, see [llms.txt](https://ultimaterewards.athelion.eu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ultimaterewards.athelion.eu/usage/global-configuration.md).

# Global Configuration

Reference of every option in config.yml

`config.yml` holds the settings that apply to the whole plugin. Everything that belongs to a single reward is configured in that reward's own .yml file instead — see [Creating Reward](/configuration/rewards/creating-reward.md).

{% hint style="info" %}
After editing any .yml file, apply the changes with `/reward reload`.
{% endhint %}

## Database

| Key                             | Default                           | Description                                                   |
| ------------------------------- | --------------------------------- | ------------------------------------------------------------- |
| `backend`                       | `SQLITE`                          | `SQLITE`, `MYSQL`, `MARIADB` or `POSTGRESQL`                  |
| `mysql-host` / `mysql-port`     | `127.0.0.1` / `3306`              | Address of the database server                                |
| `mysql-database-name`           | `database`                        | Name of the database                                          |
| `mysql-table-name`              | `ultimaterewards_rewards`         | Table name, can be left as is                                 |
| `mysql-user` / `mysql-password` | —                                 | Credentials                                                   |
| `mysql-pool-settings-*`         | —                                 | HikariCP connection pool (pool size, idle, lifetime, timeout) |
| `mysql-properties`              | `useUnicode`, `characterEncoding` | Additional JDBC properties                                    |

{% hint style="warning" %}
A shared database is what makes network-wide data possible — `%ultimaterewards_playtime_global%` and cross-server reward states require MySQL, MariaDB or PostgreSQL. Existing data can be moved over with `/reward convert <type>`, see [Commands](/usage/commands.md).
{% endhint %}

## General

| Key                    | Default                        | Description                                                                                                      |
| ---------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| `update-checker`       | `true`                         | Checks for new versions of the plugin on startup                                                                 |
| `max-accounts-per-ip`  | `0`                            | How many accounts may claim rewards from one IP address (0 = no limit)                                           |
| `log-accounts`         | `true`                         | Logs all accounts of a connecting player into the console                                                        |
| `tab-argument-matcher` | `CONTAINING_ALL_CHARS_OF_TEXT` | How tab-completion filters arguments — `CONTAINING_TEXT`, `CONTAINING_ALL_CHARS_OF_TEXT` or `STARTING_WITH_TEXT` |
| `debug`                | `false`                        | Verbose logging, useful when reporting an issue                                                                  |

The layout of `/reward help` is controlled by `help-header`, `help-message-format` (`%syntax%`, `%description%`) and `help-footer`.

## Play-time

| Key                                      | Default   | Description                                                                                                                                      |
| ---------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `play-time-calculator`                   | `DEFAULT` | `DEFAULT` or `PLAYTIMES` (uses the PlayTimes plugin), see [own calculator](/api/setting-up-own-playtime-calculator.md)                           |
| `enable-afk-checker`                     | `true`    | AFK players do not accumulate play-time (requires Essentials or CMI), see [AFK Checkers](/configuration/rewards/reward-features/afk-checkers.md) |
| `worlds-with-disabled-playtime-tracking` | list      | Play-time is not tracked at all in these worlds                                                                                                  |
| `first-time-join-required-play-time`     | `100`     | Minutes a player has to play in total before claiming anything (0 = disabled)                                                                    |
| `session-required-play-time`             | `10`      | Minutes a player has to play in the current session before claiming (0 = disabled)                                                               |
| `play-time-placeholder-format`           | —         | Format of `%ultimaterewards_playtime_local%` and `%ultimaterewards_playtime_session%`                                                            |
| `remaining-play-time-placeholder-format` | —         | Format of `%ultimaterewards_remaining_time_<reward>%`                                                                                            |
| `afk-time-placeholder-format`            | —         | Format of `%ultimaterewards_afk_session_time%`                                                                                                   |

The formats accept `%days%`, `%hours%`, `%minutes%` and `%seconds%`.

{% hint style="warning" %}
Leave `play-time-calculation` at `MINUTES`.
{% endhint %}

## Menus

| Key                            | Default                   | Description                                                           |
| ------------------------------ | ------------------------- | --------------------------------------------------------------------- |
| `main-menu`                    | `main`                    | Menu opened by `/rewards`                                             |
| `background-item`              | `GRAY_STAINED_GLASS_PANE` | Background of the rewards GUI, `none` disables it                     |
| `close-menu-after-claiming`    | `false`                   | Close the menu after a reward is claimed (a reward can override this) |
| `check-for-full-inventory`     | `true`                    | Block claiming when the player's inventory is full                    |
| `available-rewards-menu-rows`  | `4`                       | Size of the `/reward available` menu                                  |
| `available-rewards-menu-slots` | `0–8`                     | Slots the available rewards are placed into                           |
| `input-type`                   | `ANVIL`                   | How text input is asked for — `ANVIL` or `CHAT`                       |
| `setting-no-permission-item`   | `BARRIER`                 | Item shown instead of a setting the player has no permission for      |

The progress bar rendered by `%ultimaterewards_progress_<reward>%` is styled with `progress-bar-symbol`, `progress-bar-completed-color`, `progress-bar-missing-color` and `progress-bar-length`.

Menus themselves are configured in [guis.yml](/configuration/menus/basics.md).

## Notifications & auto-claim

Defaults for new players — each of them can be toggled by the player afterwards, see [Reward Settings](/configuration/rewards/reward-settings.md):

| Key                            | Default | Description                                                  |
| ------------------------------ | ------- | ------------------------------------------------------------ |
| `join-notification-by-default` | `true`  | Notify about claimable rewards on join                       |
| `live-notification-by-default` | `true`  | Notify the moment a reward becomes available                 |
| `join-auto-claim-by-default`   | `false` | Claim available rewards automatically on join                |
| `live-auto-claim-by-default`   | `false` | Claim a reward automatically as soon as it becomes available |

Each of the events has its own section — `join-announcement`, `live-announcement`, `multiple-live-announcement`, `join-auto-claim` and `live-auto-claim` — where you can set:

* `delays` / `delay` — how many seconds after joining the message is sent,
* `command` — the command executed when the player clicks the announcement (`%reward%` is replaced by the reward),
* `sound` — `enabled`, `value`, `volume` and `pitch` of the sound played with the announcement.

```yaml
live-announcement:
  command: "reward claim %reward%"
  sound:
    enabled: true
    value: BLOCK_NOTE_BLOCK_HARP
    volume: 1.0
    pitch: 1.0
```

{% hint style="warning" %}
Sound names differ between Minecraft versions — make sure you use names valid for the version you run.
{% endhint %}

## Discord

| Key                         | Default          | Description                                                                                       |
| --------------------------- | ---------------- | ------------------------------------------------------------------------------------------------- |
| `discord-booster-role-name` | `Server Booster` | Role used by the [booster checker](/configuration/rewards/reward-features/reward-requirements.md) |
| `discord-log-channel`       | `none`           | Channel ID where claimed rewards are logged, `none` disables logging                              |

Both options require [DiscordSRV](/configuration/rewards/reward-features/discord-support.md).

## Placeholders

| Key                        | Default | Description                                                                                                           |
| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- |
| `use-timer-in-placeholder` | `true`  | When `false`, `%ultimaterewards_cooldown_<reward>%` shows the `unavailable` text from lang.yml instead of a countdown |

The full list is on the [Placeholders](/placeholders.md) page.

## Commands

Every command of the plugin can be renamed, and its aliases changed, in the `commands:` section:

```yaml
commands:
  reward:
    name: reward
    aliases:
      - rw
  rewards:
    name: rewards
    aliases:
      - rws
```

The same applies to `referral`, `vote` and `playtime`. A full list of commands is on the [Commands](/usage/commands.md) page.

{% hint style="info" %}
Renaming a command requires a server restart, a reload is not enough.
{% endhint %}

## Other files

| File            | Contents                                                                                           |
| --------------- | -------------------------------------------------------------------------------------------------- |
| `lang.yml`      | All messages of the plugin                                                                         |
| `guis.yml`      | [Menus](/configuration/menus/basics.md)                                                            |
| `rewards/`      | One .yml file per [reward](/configuration/rewards/creating-reward.md)                              |
| `votes.yml`     | [Vote handling and per-vote rewards](/configuration/rewards/reward-types/per-vote-reward.md)       |
| `referrals.yml` | [Referral system](/configuration/rewards/reward-types/referral-reward.md)                          |
| `randoms.yml`   | [Random placeholders](/configuration/rewards/reward-features/randomization/random-placeholders.md) |
| `schedules.yml` | [Schedules & timers](/configuration/schedules-and-timers.md)                                       |

{% hint style="info" %}
The `10-percent` … `100-percent` keys at the end of config.yml are only used by an addon and can be ignored.
{% endhint %}
