# Configuration

### Configuration

CobbleHunts's configuration is split into three main files, located in `config/cobblehunts/`. This allows for detailed customization of the mod's mechanics.

After editing any of these files, use `/hunts reload` to apply the changes without a server restart.

#### 1. `config.jsonc` - Main Settings

This file controls the core mechanics, timers, and behavior of the mod.

| Setting                     | Type    | Description                                                                                                                  |
| --------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `debugEnabled`              | Boolean | Toggles detailed logging in the console for troubleshooting.                                                                 |
| `globalHuntsEnabled`        | Boolean | Enables or disables the server-wide Global Hunts.                                                                            |
| `soloHuntsEnabled`          | Boolean | Enables or disables the per-player Solo Hunts.                                                                               |
| `activeGlobalHuntsAtOnce`   | Integer | The number of Global Hunts that can be active at the same time.                                                              |
| `globalTimeLimit`           | Integer | Duration of a Global Hunt in seconds.                                                                                        |
| `globalCooldown`            | Integer | Cooldown in seconds after a Global Hunt ends before a new one starts.                                                        |
| `solo[Difficulty]TimeLimit` | Integer | Duration in seconds for each solo difficulty tier (e.g., `soloEasyTimeLimit`).                                               |
| `solo[Difficulty]Cooldown`  | Integer | Cooldown in seconds for each solo difficulty tier (e.g., `soloEasyCooldown`).                                                |
| `autoAcceptSoloHunts`       | Boolean | If true, players will automatically receive a new solo hunt when their cooldown ends.                                        |
| `autoTurnInOnCapture`       | Boolean | If true, a hunt will automatically complete the moment a matching Pokémon is captured.                                       |
| `takeMonOnTurnIn`           | Boolean | If true, the Pokémon is taken from the player's party upon hunt completion.                                                  |
| `rewardMode`                | String  | Determines reward logic. `"weight"` gives one random reward, `"percentage"` gives every reward that passes its chance check. |
| `permissions`               | Object  | Configure the default permission levels for commands.                                                                        |

#### 2. `pokemon_pools.jsonc` - Pokémon Pools

This file defines which Pokémon can be assigned for hunts. Each hunt type and difficulty has its own list.

**Structure of a Pokémon Entry:**

```json
{
  "species": "pikachu",
  "form": "Normal",
  "aspects": [],
  "chance": 1.0,
  "gender": "female",
  "nature": "Timid",
  "ivRange": "2"
}
```

* `species`: The Pokémon species ID (e.g., `"rattata"`).
* `form`: (Optional) The specific form, if applicable.
* `aspects`: (Optional) A list of aspects, like `"shiny"`.
* `chance`: The weighted chance for this Pokémon to be selected from the pool.
* `gender`: (Optional) Can be `"male"`, `"female"`, or `"random"`. Required for Normal tier and up.
* `nature`: (Optional) A specific nature required. Required for Medium and Hard tiers.
* `ivRange`: (Optional) The number of perfect (31) IVs required. Required for Hard tier.

#### 3. `loot_pools.jsonc` - Reward Pools

This file defines the rewards given for completing hunts.

There are two types of rewards: `command` and `item`.

**Command Reward Example:**

```json
{
  "type": "command",
  "command": "eco give %player% 100",
  "chance": 1.0,
  "serializableItemStack": {
    "itemStackString": "{\"id\":\"minecraft:paper\",\"count\":1,\"components\":{\"minecraft:custom_name\":\"\\\"§aMoney Reward: $100\\\"\"}}"
  }
}
```

* `type`: Must be `"command"`.
* `command`: The command to execute. Use `%player%` as a placeholder for the player's name.
* `chance`: The weighted chance or percentage chance for this reward to be given.
* `serializableItemStack`: An item to display in the rewards GUI. This is for display only.

**Item Reward Example:**

```json
{
  "type": "item",
  "serializableItemStack": {
    "itemStackString": "{\"id\":\"minecraft:diamond\",\"count\":5}"
  },
  "chance": 0.5
}
```

* `type`: Must be `"item"`.
* `serializableItemStack`: The actual item and NBT data to be given to the player.
* `chance`: The weighted/percentage chance for this reward.
