> 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/edmortars/getting-started/configuration.md).

# Configuration

## config.yml

| Key                        | Default                    | Meaning                                                                                                                                                                 |
| -------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `placeable-type`           | `mortar`                   | The `type:` used in PinnaPrison mine placeables. Restart to change it.                                                                                                  |
| `install-models`           | `false`                    | Copy the bundled ModelEngine models into ModelEngine (only for `models.type: modelengine`, see [Looks](/p/edmortars/mortars/looks.md)).                                 |
| `save-interval`            | `60`                       | Seconds between background saves of changed player data. Data is also saved on unlock, upgrade, quit and shutdown.                                                      |
| `storage.type`             | `yaml`                     | `yaml` (files in `plugins/EdMortars/data/`) or `mysql` (a shared MySQL / MariaDB database). Restart to change it.                                                       |
| `storage.mysql.*`          | `localhost:3306/minecraft` | Host, port, database, username, password, `table-prefix` (`edmortars_`), `use-ssl` and extra JDBC `properties`. See [Storage](/p/edmortars/getting-started/storage.md). |
| `hologram-update-ticks`    | `10`                       | Ticks between hologram refreshes. A packet is only sent when the text changed.                                                                                          |
| `explosion-threads`        | `2`                        | Threads that break and pay out blasts (1-8). Restart to change it.                                                                                                      |
| `menus.folder`             | `EdMortars`                | Sub-folder of `plugins/PinnaPrison/guis/` the menus are installed to.                                                                                                   |
| `menus.click-cooldown-ms`  | `150`                      | Minimum time between two button clicks of one player (0 = off).                                                                                                         |
| `menus.fail-sound`         | `entity.villager.no;0.8;1` | Played when a click is refused (`sound;volume;pitch`, `''` = none).                                                                                                     |
| `menus.shift-click-levels` | `10`                       | Levels a shift-click on an upgrade buys at once.                                                                                                                        |
| `menus.progress-bar`       | 20 `\|`, `&a` / `&8`       | The `{progress-bar}` token: `length`, `symbol`, `filled` and `empty` colours.                                                                                           |

## messages.yml

Every chat message. Colours (`&a`, `&#RRGGBB`), PlaceholderAPI and `{prefix}` work everywhere; set a message to `''` to turn it off, or make it a list to send several lines. Missing keys use the built-in English text.

The requirement lines of the menus (`requirement-met`, `requirement-unmet`, `requirements-none`) and the status words (`status-locked`, `status-ready`, `status-reloading`, `status-unlocked`) live here too.

## Mortar types

Everything about one mortar (look, hologram, unlock requirements, shots, upgrades, rewards) is in `plugins/EdMortars/mortars/<id>.yml`. The bundled `default.yml` explains every option in comments. See [Mortar Types](/p/edmortars/mortars/mortar-types.md).

## Reloading

`/edmortars reload` reloads config.yml, messages.yml and every mortar type, installs missing menu files and rebuilds the mortars in loaded mines. The menus are PinnaPrison GUI files: after editing them, run `/pinna reload`. `placeable-type`, `explosion-threads` and `storage` need a restart.

## Performance

* Mortars, shells, debris and holograms are packet entities (EdLib): no real entities, nothing is ticked by the server.
* The per-block chance roll is one map lookup for players without a mortar.
* Blasts are broken and paid on their own threads, so big explosions never slow down other animations.
* Player data is loaded before the player joins, written only when it changed, on one background thread. Cooldowns shorter than a minute stay in memory only. With MySQL every database call runs on that thread too.
