# Chat-Format

Formatiert jede öffentliche Chat-Nachricht mit LuckPerms-Prefix/Suffix, Team-Tag und optional Nexo-Glyphen (MiniMessage-Tags). Dieselbe Datei definiert die Formate für Team-Chat, Ally-Chat und Chat-Spy. Das Modul hat keine eigenen Commands.

## Platzhalter

| Platzhalter | Wert |
|---|---|
| `<display_name>` | Vollständig formatierter Name (LP-Prefix + Team-Tag + Name + LP-Suffix) |
| `<lp_prefix>` / `<lp_suffix>` | LuckPerms Prefix/Suffix (leer, wenn nicht gesetzt oder LP fehlt) |
| `<player>` | Spielername oder [Nickname](nick.html), falls gesetzt |
| `<player_name>` | Immer der echte Spielername |
| `<team_tag>` | Team-Präfix wie `[RED]` (nur wenn das Team ein gültiges Tag hat) |
| `<team>` / `<team_name>` | Team-interner Name / Anzeigename |
| `<team_color>` | Farb-Tag des Teams (z. B. `<red>`) |
| `<message>` | Die geschriebene Nachricht |

> **Hinweis:** Formatierungscode im Nachrichtentext von Team-/Ally-Chat wird immer entfernt. Das separate `/socialspy` für private Nachrichten nutzt ein eigenes Format in der `messages.yml` (siehe [Moderation](moderation.html#socialspy)). Der optionale Job-Titel vor dem Namen wird in `modules/jobs.yml` konfiguriert (siehe [Jobs](jobs.html)).

## Konfiguration (modules/chat.yml)

```yaml
# Schaltet Chat-, Team-Chat- und Chat-Spy-Formatierung ein oder aus.
enabled: true

# Aufbau der öffentlichen Chat-Zeile.
format: "<display_name><font:minecraft:default><gray>: <message>"
# Aufbau des <display_name>-Platzhalters.
display-name-format: "<lp_prefix><font:minecraft:default><team_tag><player><lp_suffix><font:minecraft:default>"

luckperms:
  # Prefix und Suffix unabhängig voneinander ein-/ausblendbar.
  prefix-enabled: true
  suffix-enabled: true

nexo-glyphs:
  # Löst %nexo_<glyphid>% und %nexo_shift_<pixels>% in LP-Prefixen auf,
  # auch ohne PlaceholderAPI.
  resolve-placeholders-without-papi: true
  # Rank-Glyphen sind optisch breiter als ihre Textur: fügt nach jeder
  # Glyphe einen Shift-Tag ein, damit der Name näher ans Abzeichen rückt.
  compact-spacing-enabled: true
  compact-shift: -2
  # Zusätzliche Pixel-Korrektur vor/nach dem LP-Prefix.
  prefix-leading-shift: 0
  prefix-trailing-shift: 0

team-tag:
  # Team-Tag vor dem Namen im öffentlichen Chat.
  enabled: true
  format: "<team_color>[<tag>] "

# Format für /team chat.
team-chat:
  format: "<gray>[Team] <<team_color>><player><gray>: <white><message>"

# Format für /team allychat (Team + Allianzen).
ally-chat:
  format: "<gray>[Ally] <<team_color>><player><gray>: <white><message>"

# Admin-Format für mitgelesenen Team-/Ally-Chat (/teama chatspy).
chatspy:
  format: "<dark_gray>[<red>Spy<dark_gray>] [<team_color><team><dark_gray>] <gray><player><dark_gray>: <gray><message>"
```

## Komplette Beispiel-Config

```yaml
enabled: true

format: "<display_name><gray> » <white><message>"
display-name-format: "<lp_prefix><team_tag><player>"

luckperms:
  prefix-enabled: true
  suffix-enabled: false

nexo-glyphs:
  resolve-placeholders-without-papi: true
  compact-spacing-enabled: true
  compact-shift: -3
  prefix-leading-shift: 0
  prefix-trailing-shift: 1

team-tag:
  enabled: true
  format: "<team_color><bold>[<tag>]</bold> "

team-chat:
  format: "<dark_green>[Team] <green><player><gray>: <white><message>"

ally-chat:
  format: "<dark_aqua>[Ally] <aqua><player><gray>: <white><message>"

chatspy:
  format: "<dark_gray>[<red>Spy<dark_gray>] <gray><team>/<player>: <message>"
```
