# Config-Übersicht

Struktur der Konfigurationsdateien von Mira. Jede Datei lässt sich direkt bearbeiten, für die meisten Änderungen reicht danach `/mira reload` statt eines Server-Neustarts.

## Hauptkonfiguration (config.yml)

Speicherort: `plugins/Mira/config.yml`

Diese Datei enthält nur gemeinsame Grundeinstellungen. Feature-spezifische Einstellungen liegen in den einzelnen Dateien unter `plugins/Mira/modules/`.

Wichtigste Bereiche:

```yaml
general:
  # Sekunden bis Bestätigungen (z.B. Shop-Käufe) ablaufen.
  # Mindestens 5 Sekunden; kleinere Werte werden auf 5 angehoben.
  confirmation-timeout: 30

economy:
  # Startguthaben für neue Accounts
  start-balance: 1000.0
  # Währungsname und Symbol
  currency-name: "Coin"
  currency-name-plural: "Coins"
  currency-symbol: "⛃"
  # Grenzen und Mindestbetrag
  max-balance: 1000000000.0
  min-transfer: 0.01
  # Einträge pro /baltop-Seite
  baltop-entries-per-page: 10

cooldown:
  # Fallback-Cooldown für Commands ohne eigenen Wert
  default: 0
  # Cooldowns für zentrale Commands (Modul-Cooldowns stehen in modules/*.yml)
  commands:
    pay: 1

cost:
  # Kosten für zentrale Commands (0 = kostenlos)
  commands: {}

warmup:
  # Standard-Wartezeit für alle Teleport-Commands
  default:
    duration: 3
    cancel-on-move: true
    # true = jeder Schaden bricht das Warmup ab (Standard: nur Bewegung)
    cancel-on-damage: false
    display: actionbar
    particles:
      enabled: true
      type: PORTAL
      count: 10
      radius: 0.5
  # Warmups für zentrale Commands
  commands: {}
```

## Modul-Konfigurationen (modules/*.yml)

Speicherort: `plugins/Mira/modules/<modul>.yml`

Jede Moduldatei lässt sich per `enabled: true/false` ein- oder ausschalten. Viele Module haben zusätzlich eigene `cooldown`, `cost` und `warmup`-Einstellungen im gleichen Format wie in `config.yml`.

| Moduldatei | Kategorie | Wichtigste Einstellungen |
|---|---|---|
| `afk.yml` | AFK | Auto-AFK-Timeout, AFK-Kick-Zeit, Broadcast, Tabliste-Deko, Anti-AFK-Machine-Erkennung |
| `betterhud.yml` | Integration | BetterHud-PopUp-Integration für Economy und Teams |
| `chat.yml` | Chat | Chat-Format, Anzeigename, LuckPerms-Integration, Nexo-Glyphs, Team/Allianz-Chat |
| `claim.yml` | Claims | Grundstücksschutz: Welt-Modi, Schutz-Flags, Claim-Block-Wirtschaft, PvP-Regeln, Wildnis, Sieges, Team-Plots, Speicher-Backend |
| `holograms.yml` | Hologramme | Sichtweite, Zeilenabstand, Placeholder-Update-Takt, Textschatten, Hintergrund |
| `homes.yml` | Homes | Home-Limit, Namenslänge, Welt-Sperrliste, Cooldown, Kosten, Warmup |
| `jobs.yml` | Jobs | Max. Jobs, Leveling, Quests, Boosts, dynamische Bezahlung, Integrationen, Job-Shop, Exploit-Schutz |
| `joinleave.yml` | Join/Leave | Join/Leave-Texte, MOTD, Sounds, Titel, Actionbar, Vanish-Unterdrückung |
| `messaging.yml` | Nachrichten | Formate für private Nachrichten, maximale Nachrichtenlänge |
| `mobteleport.yml` | Mob Teleport | Radius, Leash-Wiederanbindung, Unverwundbarkeit, Entity-Filter, Regionsschutz |
| `moderation.yml` | Moderation | Warn-Aktionen, Jail-Regeln, CommandSpy-Sperrliste, Vanish |
| `joinprotection.yml` | Join-Schutz | Dauer, Modus (alles oder nur PvP), Ende beim Angriff, Bossbar-Farbe und -Stil |
| `nick.yml` | Nicknames | Nick-Länge, Farben, Formatierung |
| `permissions.yml` | Command-Sichtbarkeit | Tab-Vervollständigung nur mit berechtigten Commands, Namespace-Duplikate ausblenden |
| `rtp.yml` | Random Teleport | Radius, Höhenbereich, Versuche, Weltgrenze, Biom, Warteschlange, Claim-Schutz, Kosten |
| `shop.yml` | Chest Shops | Shop-Limit, Hopper-Schutz, Preisgrenzen, Steuer, Sounds, Integrationen |
| `sleep.yml` | Sleep | Sleep-Prozentsatz, Skip-Geschwindigkeit, AFK-Ausschluss, Welt-Modus |
| `reminder.yml` | Reminder | Intervall der Chat-Tipps, mitgelieferte Tipps abschalten, eigene Tipps mit Gewicht |
| `spawn.yml` | Spawn | First-Spawn, Respawn-Logik, Cooldown, Kosten, Warmup |
| `stations.yml` | Stations | Virtuelle Workstation-Commands, Hub-Menü |
| `tab.yml` | Tabliste | Tab-Name, LuckPerms-Integration, Nexo-Glyphs, optionales festes Tab-Layout |
| `team.yml` | Teams | Limits, Ränge, Team-Level, Punktestand, Bank, Menü, CoreProtect-Logging |
| `teleport.yml` | Teleport | Sicherheitscheck, Kampf-Sperre, Back-Positionen, Cooldown, Kosten, Warmup |
| `tpa.yml` | TPA | Anfrage-Timeout, Distanzlimit, Cross-Dimension, Cooldown, Kosten, Warmup |
| `utility.yml` | Utility | God-Persistenz, Near-Radius, abschaltbare Util-Commands, Kosten/Cooldowns |
| `warps.yml` | Warps | Namenslänge, Cooldown, Kosten, Warmup |
| `websession.yml` | Web Interface | Konfiguration des Web-Interfaces für `/cweb` |
| `world.yml` | World | Gamerule-Menü, eigene Gamerule-Presets |
| `leafdecay.yml` | Fast Leaf Decay | Wartezeit der Blätter, Partikel und Geräusch, Welt-Modus |
| `mobtoegg.yml` | Mob to Egg | Chance, gesperrte Mobs, Haustiere und Namensschilder, Ablage, Effekte, Welt-Modus |
| `worldspawn.yml` | World Spawn | Schalter für `/setworldspawn` |

### Gemeinsame Struktur aller Module

```yaml
enabled: true  # Aktiviert/deaktiviert das komplette Modul

# Command-spezifische Cooldowns (Sekunden, 0 = deaktiviert)
cooldown:
  commands:
    home: 180
    warp: 600

# Command-spezifische Kosten (Economy, 0 = kostenlos)
cost:
  commands:
    home: 0
    rtp: 100.0

# Command-spezifische Warmups (Wartezeit vor Aktion/Teleport)
warmup:
  commands:
    home:
      duration: 2
      cancel-on-move: true
      cancel-on-damage: false
      display: actionbar
      particles:
        enabled: true
        type: PORTAL
```

> **Hinweis:** Über Bypass-Permissions lassen sich diese Einschränkungen umgehen: `cooldown.bypass.<command>`, `cost.bypass.<command>` und `warmup.bypass.<command>` (oder `.*` für alle Commands eines Moduls).

## Nachrichten (messages.yml)

Speicherort: `plugins/Mira/messages.yml`

Alle Texte, die Spieler zu sehen bekommen, sind hier zentral im MiniMessage-Format hinterlegt (Farben wie `<red>`, `<b>`, `<#4fc3f7>` usw.) und lassen sich frei anpassen.

Jedes Modul hat seinen eigenen Chat-Präfix im Stil `TEAMS »`, `JOBS »` oder `MOD »`, jeweils in einer eigenen Farbe. Welcher Präfix vor einer Nachricht steht, bestimmt der `prefixes:`-Block am Anfang der Datei: Der erste Teil des Nachrichten-Schlüssels wählt den Eintrag aus (`team.create-success` nutzt `prefixes.team`). Bereiche ohne eigenen Eintrag nutzen `prefixes.default`. Farben, Beschriftung und Trennzeichen lassen sich dort frei ändern.

```yaml
prefixes:
  default: "<b><#f55a7d>MIRA</#f55a7d></b> <#ffb2bd>»</#ffb2bd> "
  team: "<b><#00e5ee>TEAMS</#00e5ee></b> <#00e5ee>»</#00e5ee> "
  jobs: "<b><#ffa502>JOBS</#ffa502></b> <#ffa502>»</#ffa502> "
```

**Farbsystem:** Die mitgelieferten Texte folgen einem festen Schema, damit sofort erkennbar ist, worauf sich eine Hervorhebung bezieht: Spielernamen in Aqua, benannte Dinge wie Homes, Warps, Teams, Jobs oder Cosmetics in Gelb, Gegenstände in Gold, Zahlen, Geld, Zeiten und Koordinaten in Grün, Fehler in Rot. Weiß bleibt dem Freitext vorbehalten (Begründungen, Nachrichten, Beschreibungen). Alles davon lässt sich frei ändern.

> **Hinweis:** Bestehende Server behalten beim Update ihre alte `messages.yml` samt Texten. Wer den neuen Look komplett übernehmen will, löscht die Datei einmalig (eigene Anpassungen vorher sichern), beim nächsten Start wird sie neu erzeugt.

> **Tipp:** Nach Änderungen an `messages.yml` reicht `/mira reload`, ein Neustart ist nicht nötig.

## Jobs: eigene Definitionsdateien

Jobs sind ein Sonderfall: Zusätzlich zu `modules/jobs.yml` (allgemeine Job-Einstellungen) hat jeder Beruf eine eigene Datei unter `modules/jobs/`, zum Beispiel `miner.yml` oder `farmer.yml`.

```yaml
name: "Miner"
color: "<#FFB400>"           # Hex-Farbe
short-name: "MIN"
icon: "DIAMOND_PICKAXE"
description: "Mine ores for profit"
max-level: 100
actions:
  BREAK:
    DIAMOND_ORE:
      money: 10.0
      xp: 5.0
    COAL_ORE:
      money: 2.0
      xp: 1.0
titles:
  "1": "Novice Miner"
  "25": "Expert Miner"
level-up-rewards:
  "10": "give <player> diamond 5"
```

`modules/jobs.yml` steuert die allgemeinen Einstellungen:

```yaml
enabled: true
jobs:
  max-jobs: 2              # Max. gleichzeitig aktive Jobs pro Spieler
  leveling:
    max-level: 100
    xp-per-level: 100.0
  quests:
    enabled: true
    daily-reset: "00:00"
  boosts:
    enabled: true
  dynamic-pay:
    enabled: true
    player-count-multiplier: 0.5
  shop:
    enabled: true
```
