# Configuration
Lead uses a single `config.yml` file for all server-side settings. The configuration controls team behavior, command permissions, display options, and integration settings.
---
## General Settings
| Key | Type | Default | Description |
|---|---|---|---|
| `version` | Integer | `16` | Internal config version. Do not modify manually; Lead auto-migrates older configs on startup. |
| `should_update` | Boolean | `true` | If `false`, Lead will not update Frame, TAB, or nametags with team prefixes. Useful when storing teams in the backend only. |
| `verbose` | Boolean | `false` | Enables detailed debug output to the console and players with the `lead.debug` permission. |
| `automatic_updates` | Boolean | `true` | If `true`, Lead automatically refreshes team display entries after every team change (create, join, leave, modify, etc.). Set to `false` if you want to control when updates happen by calling `api.update()` manually or using `/lead reload`. |
> [!info] Display Backend
> Lead renders team nametags and the TAB list through the best available backend, in order: **[[Frame]]** → **TAB** → the vanilla scoreboard. If Frame is installed it is used automatically — no configuration needed. Unlike TAB, Frame resolves per-viewer and carries each team's collision and nametag-visibility settings over, so those keys are **not** redundant when Frame is the active backend.
---
## Team Behavior
| Key | Type | Default | Description |
|---|---|---|---|
| `max_team_size` | Integer | `5` | Maximum number of players allowed in a single team. |
| `max_teams` | Integer | `1000` | Maximum number of teams that can exist at once. |
| `nameable_teams` | Boolean | `true` | If `true`, players choose their own team name with `/team create [name]`. If `false`, names are auto-generated based on the generator type in `random.yml`. |
| `minimum_team_name_length` | Integer | `3` | Minimum character length for player-chosen team names. Only applies when `nameable_teams` is `true`. |
| `maximum_team_name_length` | Integer | `16` | Maximum character length for player-chosen team names. Only applies when `nameable_teams` is `true`. |
| `friendly_fire` | Boolean | `true` | Global default for whether teammates can damage each other. Can be overridden per team with `/team modify friendly_fire`. |
| `auto_assign` | Boolean | `false` | If `true`, players are automatically assigned to a team when they join the server. Toggle at runtime with `/lead auto_assign`. |
| `is_public` | Boolean | `true` | If `true`, all team commands are publicly accessible. If `false`, players require the `lodestone.lead.manage` permission to use team commands. |
| `should_increment` | Boolean | `false` | Only applies when the generator type is `NUMBER`. If `true`, team numbers increment sequentially (1, 2, 3...). If `false`, numbers are assigned randomly from the available pool. |
---
## Display Settings
### Team Alignment
The `team_alignment` key controls whether the team label appears before or after the player's name.
| Value | Behavior |
|---|---|
| `PREFIX` | Team label displays before the player name (default). |
| `SUFFIX` | Team label displays after the player name. |
```yaml
team_alignment: PREFIX
```
### Color Names
| Key | Type | Default | Description |
|---|---|---|---|
| `color_names` | Boolean | `false` | If `true`, player chat names are colored to match their team color. |
| `show_in_chat` | Boolean | `true` | If `false`, the team prefix/suffix is hidden from public chat messages. Name colors and LuckPerms rank prefixes still apply, and team chat (`/team chat`) is unaffected. |
| `font` | String | `null` | Custom font namespace for team display names. Set to `null` to use the default Minecraft font. |
---
## Collision Rules
The `collidable` key controls player collision behavior for all teams. Individual teams can be overridden with `/team modify collidable`.
| Value | Behavior |
|---|---|
| `ALWAYS` | Players always collide with each other (default). |
| `NEVER` | Players never collide with each other. |
| `FOR_OTHER_TEAMS` | Players collide with members of other teams but not their own. |
| `FOR_OWN_TEAM` | Players collide with their own teammates but not other teams. |
```yaml
collidable: ALWAYS
```
**Note:** If TAB is the active backend, this value is redundant — TAB manages collision behavior independently. With **Frame**, the setting is honored and applied per team.
---
## Nametag Visibility
The `name_tag_visibility` key controls nametag visibility for all teams. Individual teams can be overridden with `/team modify nametag`.
| Value | Behavior |
|---|---|
| `ALWAYS` | Nametags are always visible (default). |
| `NEVER` | Nametags are never visible. |
| `FOR_OTHER_TEAMS` | Nametags are visible to members of other teams but hidden from teammates. |
| `FOR_OWN_TEAM` | Nametags are visible to teammates but hidden from other teams. |
```yaml
name_tag_visibility: ALWAYS
```
**Note:** If TAB is the active backend, this value is redundant — TAB manages nametag visibility independently. With **Frame**, the setting is honored and applied per team.
---
## Permissions Configuration
The `permissions` block controls access to the top-level commands. Setting a value to `null` makes the command publicly accessible.
```yaml
permissions:
team: null
teammsg: null
```
The `commands` block controls access to individual subcommands. Each key maps to a permission string. Setting a value to `null` removes the permission requirement.
```yaml
commands:
help: null
list: null
edit: null
kick: null
invite: null
create: null
join: null
leave: null
disband: null
chat: null
shuffle: "lodestone.lead.manage"
spawn: "lodestone.lead.manage"
teleport: "lodestone.lead.manage"
friendly_fire: "lodestone.lead.manage"
nametag: "lodestone.lead.manage"
collidable: "lodestone.lead.manage"
merge: "lodestone.lead.manage"
place: "lodestone.lead.manage"
remove: "lodestone.lead.manage"
delete: "lodestone.lead.manage"
id: "lodestone.lead.manage"
display_name: "lodestone.lead.manage"
color: "lodestone.lead.manage"
```
Commands without an explicit permission default to unrestricted access. Admin commands default to `lodestone.lead.manage`.
---
## Full Default Config
```yaml
version: 15
should_update: true
verbose: false
automatic_updates: true
team_alignment: PREFIX
max_team_size: 5
nameable_teams: true
minimum_team_name_length: 3
maximum_team_name_length: 16
friendly_fire: true
auto_assign: false
collidable: ALWAYS
name_tag_visibility: ALWAYS
is_public: true
font: null
color_names: false
show_in_chat: true
max_teams: 1000
should_increment: false
permissions:
team: null
teammsg: null
commands:
help: null
list: null
edit: null
kick: null
invite: null
create: null
join: null
leave: null
disband: null
chat: null
shuffle: "lodestone.lead.manage"
spawn: "lodestone.lead.manage"
teleport: "lodestone.lead.manage"
friendly_fire: "lodestone.lead.manage"
nametag: "lodestone.lead.manage"
collidable: "lodestone.lead.manage"
merge: "lodestone.lead.manage"
place: "lodestone.lead.manage"
remove: "lodestone.lead.manage"
delete: "lodestone.lead.manage"
id: "lodestone.lead.manage"
display_name: "lodestone.lead.manage"
color: "lodestone.lead.manage"
```
---
## Related Pages
- [[Lead/Server Owners/Overview]] — Feature summary and dependency information.
- [[Lead/Server Owners/Commands]] — Complete command and permission reference.