# Configuration
Sign uses `config.yml` for all nametag settings. Changes are applied by running `/sign reload`. The config includes automatic version migration when new options are added.
---
## Config Version
| Field | Type | Default | Description |
|---|---|---|---|
| `version` | Integer | `1` | Internal config version. Do not modify. |
---
## General Settings
| Field | Type | Default | Description |
|---|---|---|---|
| `nametags.enabled` | Boolean | `true` | Enables nametag rendering. When `false`, vanilla nametags are restored. |
| `nametags.show-self` | Boolean | `true` | Whether players see their own nametag above their head. |
| `nametags.update-interval` | Integer | `20` | How often nametags update, in ticks. Lower values are more responsive but use more CPU. |
| `nametags.visibility-distance` | Integer | `32` | Maximum distance (in blocks) at which nametags are visible. |
---
## Display Settings
### Lines
| Field | Type | Default | Description |
|---|---|---|---|
| `nametags.display.lines` | String List | `["{player}", "❤ {health}"]` | The lines of text shown on the nametag, from top to bottom. Supports MiniMessage formatting and PlaceholderAPI. |
**Built-in placeholders:**
| Placeholder | Description |
|---|---|
| `{player}` | The player's name |
| `{health}` | The player's current health (e.g. `20`) |
**Conditional tags:**
Lines support `<condition:'value'>text</condition>` syntax. When `value` resolves to `true`, the text is shown. Otherwise the line is hidden. Useful with PlaceholderAPI boolean placeholders.
```yaml
lines:
- "<gray>{player}"
- "<condition:'%player_is_op%'><gold>OP</condition>"
- "<red>❤ <white>{health}"
```
Lines that resolve to empty (after stripping colors) are automatically hidden with no gaps.
---
### Text Display Properties
| Field | Type | Default | Description |
|---|---|---|---|
| `nametags.display.text-shadow` | Boolean | `true` | Enables text shadow on the nametag display. |
| `nametags.display.see-through` | Boolean | `false` | Whether the nametag is visible through blocks. Automatically set to `false` when crouching. |
| `nametags.display.support-crouching` | Boolean | `true` | When enabled, crouching lowers nametag opacity and disables see-through. |
| `nametags.display.condense-holograms` | Boolean | `false` | When `true`, all lines are combined into a single text display. When `false`, each line gets its own display for tighter backgrounds. |
| `nametags.display.text-alignment` | String | `center` | Text alignment. Available values: `left`, `right`, `center`. |
| `nametags.display.background` | String | `default` | Background color. Use a hex color (e.g. `#FFFFFF`), `transparent`, or `default`. |
| `nametags.display.billboard` | String | `center` | Billboard mode. Available values: `fixed`, `vertical`, `horizontal`, `center`. |
---
### Scale
| Field | Type | Default | Description |
|---|---|---|---|
| `nametags.display.scale.x` | Number | `1` | Horizontal scale of the nametag display. |
| `nametags.display.scale.y` | Number | `1` | Vertical scale of the nametag display. |
| `nametags.display.scale.z` | Number | `1` | Depth scale of the nametag display. |
---
## Config Migration
Sign automatically migrates configs from older versions. The migration runs on startup when the `version` field is below the current version.
| From | To | Changes |
|---|---|---|
| `0` | `1` | `update-interval` converted from seconds to ticks. Added `support-crouching` and `condense-holograms` options. |
---
## Example Configuration
```yaml
version: 1
nametags:
enabled: true
show-self: true
update-interval: 20
visibility-distance: 32
display:
lines:
- "<gray>{player}"
- "<red>❤ <white>{health}"
text-shadow: true
see-through: false
support-crouching: true
condense-holograms: false
text-alignment: "center"
background: "default"
billboard: "center"
scale:
x: 1
y: 1
z: 1
```
---
## Related Pages
- [[Sign/Server Owners/Overview]] — plugin features and dependencies
- [[Sign/Server Owners/Commands]] — command reference