# Configuration
Amplifier's settings live in two files inside the plugin's data folder (`plugins/Amplifier/`):
- `loader.yml` — Loader-level settings. Picks **which** impl build the loader pulls from lode.gg.
- `config.yml` — Runtime plugin settings. Voice chat behavior, storage, Redis, translations.
Both files are auto-generated on first start with safe defaults.
---
## Loader Configuration (`loader.yml`)
`loader.yml` is read by the Amplifier-Loader jar before it fetches and activates the impl plugin. Editing it changes **which build** gets loaded; runtime feature settings live in `config.yml` (below).
| Key | Type | Default | Description |
|---|---|---|---|
| `loader_version` | String | `auto` | Which impl version to pull. `auto` follows the cloud manifest for the configured channel. Set to a specific version (e.g. `1.0.64`) to pin. |
| `loader_channels` | String | `release` | Comma-separated release channels the loader will accept. Add `beta` or `alpha` to opt into pre-release builds (e.g. `release,alpha`). |
```yaml
# Which impl version this loader fetches from lode.gg.
# 'auto' = follow the cloud manifest. '<ver>' = pin a specific impl.
loader_version: auto
# Release channels the loader will accept (comma-separated). Defaults to
# 'release'. Add 'beta' and/or 'alpha' to opt into pre-release builds.
loader_channels: release
```
A restart is required for `loader.yml` changes to take effect — the loader only reads it during plugin load.
---
## Voice Chat Settings
The `voice-chat` section controls core voice chat behavior.
| Key | Type | Default | Description |
|---|---|---|---|
| `voice-chat.max-distance` | Integer | `48` | Maximum distance in blocks for voice chat audibility. |
| `voice-chat.enabled` | Boolean | `true` | Whether voice chat is globally enabled. When disabled, only players with the `lodestone.amplifier.bypass` permission can speak. |
| `voice-chat.debug` | Boolean | `false` | Enables debug logging for troubleshooting voice chat issues. |
| `voice-chat.cross-dimension` | Boolean | `true` | Whether players in groups can hear each other across different dimensions. |
```yaml
voice-chat:
max-distance: 48
enabled: true
debug: false
cross-dimension: true
```
---
## Persistence Settings
The `persistence` section controls whether Amplifier persists voice player data across server restarts.
| Key | Type | Default | Description |
|---|---|---|---|
| `persistence.enabled` | Boolean | `true` | Whether voice player data is saved and restored across server restarts. |
```yaml
persistence:
enabled: true
```
---
## Storage Settings
The `storage` section determines how Amplifier persists voice player data. Set `storage.type` to one of `LOCAL`, `MYSQL`, or `MONGODB`.
### LOCAL
The default storage type. Data is stored in local files on the server. No additional configuration is needed.
```yaml
storage:
type: "LOCAL"
```
### MySQL
Stores voice player data in a MySQL database. Configure the connection details under `storage.mysql`.
| Key | Type | Default | Description |
|---|---|---|---|
| `storage.mysql.url` | String | `jdbc:mysql://localhost:3306/amplifier` | JDBC connection URL for the MySQL database. |
| `storage.mysql.username` | String | `root` | Database username. |
| `storage.mysql.password` | String | `password` | Database password. |
| `storage.mysql.pool-size` | Integer | `10` | Maximum number of connections in the HikariCP connection pool. |
```yaml
storage:
type: "MYSQL"
mysql:
url: "jdbc:mysql://localhost:3306/amplifier"
username: "root"
password: "password"
pool-size: 10
```
### MongoDB
Stores voice player data in a MongoDB collection. Configure the connection details under `storage.mongodb`.
| Key | Type | Default | Description |
|---|---|---|---|
| `storage.mongodb.uri` | String | `mongodb://localhost:27017` | MongoDB connection URI. |
| `storage.mongodb.database` | String | `amplifier` | Name of the database to use. |
| `storage.mongodb.collection` | String | `voice_players` | Name of the collection for voice player documents. |
| `storage.mongodb.pool-size` | Integer | `10` | Maximum number of connections in the pool. |
```yaml
storage:
type: "MONGODB"
mongodb:
uri: "mongodb://localhost:27017"
database: "amplifier"
collection: "voice_players"
pool-size: 10
```
---
## Redis Configuration
The `redis` section enables cross-server voice state broadcasting. When enabled, Amplifier publishes voice events to a Redis channel so that multiple servers can stay synchronized.
| Key | Type | Default | Description |
|---|---|---|---|
| `redis.enabled` | Boolean | `false` | Whether Redis cross-server broadcasting is active. |
| `redis.uri` | String | `redis://localhost:6379` | Redis connection URI. |
| `redis.password` | String | (empty) | Redis password. Leave empty if no password is set. |
| `redis.channel` | String | `amplifier:voice` | The Redis pub/sub channel name for voice broadcasting. |
| `redis.server-id` | String | `null` | A unique identifier for this server instance. Auto-generated by the plugin if left as `null`. |
```yaml
redis:
enabled: false
uri: "redis://localhost:6379"
password: ""
channel: "amplifier:voice"
server-id: null
```
---
## Cipher Voice Analysis
The `cipher` section enables publishing of raw voice packets to a Redis channel for speech-to-text and voice fingerprinting by the Cipher service. Independent of `redis.*` cross-server broadcasting — Cipher uses the same Redis connection but a separate channel.
| Key | Type | Default | Description |
|---|---|---|---|
| `cipher.enabled` | Boolean | `false` | Whether to publish raw opus packets to Cipher. Requires `redis.enabled: true`. |
| `cipher.channel` | String | `amplifier:cipher` | Redis pub/sub channel name Cipher consumes from. |
```yaml
cipher:
enabled: false
channel: "amplifier:cipher"
```
---
## Translations
The `translations` section defines messages sent to players during voice chat events. Messages support MiniMessage formatting.
The `<target>` placeholder in the `*_other` keys is substituted with the targeted player's name.
| Key | Default | Description |
|---|---|---|
| `translations.voicechat_disabled` | `<red>Voice chat is globally muted!</red>` | Shown when a player tries to speak while global voice chat is disabled. |
| `translations.broadcasting_voice` | `<green>Your voice is currently being broadcasted!</green>` | Shown to a player who is actively broadcasting. |
| `translations.voicechat_suppressed` | `<red>Your voice is currently being suppressed!</red>` | Shown when a player's voice is being suppressed. |
| `translations.muted_self` | `<red>You have been muted.</red>` | Sent to a player who muted themselves via `/amplifier mute true`. |
| `translations.unmuted_self` | `<green>You have been unmuted.</green>` | Sent to a player who unmuted themselves via `/amplifier mute false`. |
| `translations.muted_other` | `<gray><target> is now muted.</gray>` | Sent to the executor when muting another player. |
| `translations.unmuted_other` | `<gray><target> is now unmuted.</gray>` | Sent to the executor when unmuting another player. |
```yaml
translations:
voicechat_disabled: "<red>Voice chat is globally muted!</red>"
broadcasting_voice: "<green>Your voice is currently being broadcasted!</green>"
voicechat_suppressed: "<red>Your voice is currently being suppressed!</red>"
muted_self: "<red>You have been muted.</red>"
unmuted_self: "<green>You have been unmuted.</green>"
muted_other: "<gray><target> is now muted.</gray>"
unmuted_other: "<gray><target> is now unmuted.</gray>"
```
---
## Full Default Configuration
```yaml
# Amplifier Plugin Configuration
version: 5
voice-chat:
max-distance: 48
enabled: true
debug: false
cross-dimension: true
persistence:
enabled: true
storage:
type: "LOCAL"
mysql:
url: "jdbc:mysql://localhost:3306/amplifier"
username: "root"
password: "password"
pool-size: 10
mongodb:
uri: "mongodb://localhost:27017"
database: "amplifier"
collection: "voice_players"
pool-size: 10
redis:
enabled: false
uri: "redis://localhost:6379"
password: ""
channel: "amplifier:voice"
server-id: null
cipher:
enabled: false
channel: "amplifier:cipher"
translations:
voicechat_disabled: "<red>Voice chat is globally muted!</red>"
broadcasting_voice: "<green>Your voice is currently being broadcasted!</green>"
voicechat_suppressed: "<red>Your voice is currently being suppressed!</red>"
muted_self: "<red>You have been muted.</red>"
unmuted_self: "<green>You have been unmuted.</green>"
muted_other: "<gray><target> is now muted.</gray>"
unmuted_other: "<gray><target> is now unmuted.</gray>"
```
To reload configuration changes at runtime, use the `/amplifier reload` command. See [[Amplifier/Server Owners/Commands]] for details.