> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/edminions/features/configuration.md).

# Configuration (config.yml)

```yaml
data:
  method: h2            # h2 or mysql
  save-interval: 120    # autosave seconds
  mysql:
    host: localhost
    port: 3306
    database: edminions
    username: user
    password: password
```

Player data (slots, deposited minions, upgrades, food, stats) is stored through EdLib's storage system — **H2** out of the box, **MySQL** for networks. Data saves asynchronously on the configured interval, on quit and synchronously on shutdown.

## Minion settings

| Key                               | Description                                                                                                |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `minions.default-slots`           | Slots every player starts with.                                                                            |
| `minions.max-slots`               | Total slots rendered in the main menu. Unlock the rest with `/minions giveslots`.                          |
| `minions.snapshot-interval-ticks` | How often (ticks) the plugin snapshots your held tools/mine state on the main thread for the async ticker. |

## Display settings

Minions are fully packet based and owner-only. One global async task drives every minion on the server.

| Key                                                                 | Description                                                                                                           |
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| `display.tick-interval`                                             | Ticker interval in ticks. Higher = fewer packets.                                                                     |
| `display.show-when-idle`                                            | Whether minions hover next to you outside working zones. Minions that are out of food never show, regardless of this. |
| `display.height-offset` / `display.idle-radius` / `display.bobbing` | Idle formation tuning.                                                                                                |
| `display.reach-distance`                                            | How close a minion must get to a block/mob before acting.                                                             |
| `display.swing-cooldown-millis`                                     | Minimum delay between two swing animations.                                                                           |
| `display.swing-particle-type/count/spread`                          | Owner-only particles on every action (`NONE` disables).                                                               |
| `display.world-blacklist`                                           | Worlds where minions never display or work.                                                                           |

## Status texts & withdrawing

```yaml
status:
  enabled: '&aEnabled'
  disabled: '&cDisabled'
  no-food: '&6No food'

withdraw:
  enabled: true
  lore-addon:
    - ''
    - '&e&lMINION ITEM'
    - '&7Right-click to deposit this minion'
    - '&7into a free slot (auto-enables).'
```

`status.*` feeds the `{status}` placeholder in GUIs and `%edminions_slot_<n>_status%`. `withdraw.lore-addon` is appended to every withdrawn minion item.

Every message lives in `messages.yml` — all of them accept color codes, hex (`&#RRGGBB`) and PlaceholderAPI placeholders.
