# Join-Schutz

Wer zum allerersten Mal auf den Server kommt, kennt weder Spawn noch Regeln und ist die leichteste Beute für Spawn-Camper. Der Join-Schutz gibt neuen Spielern eine Schonfrist (Standard 5 Minuten), in der sie keinen Schaden nehmen. Eine Bossbar oben im Bild zählt die Zeit herunter.

## So funktioniert es

- Startet automatisch beim ersten Join eines Spielers. Es gibt keinen Command und keine Permission.
- Während der Schonfrist wird je nach Modus jeder Schaden abgefangen (`all`: Stürze, Mobs, Lava, Spieler) oder nur der Schaden durch andere Spieler (`pvp`: Nahkampf, Pfeile und Geschosse, geworfene Tränke und Trankwolken, gezündetes TNT, End-Kristalle und gezähmte Tiere anderer Spieler). Nur der Sturz in die Leere und `/kill` bleiben wirksam.
- Greift der Neuling selbst einen Spieler an (auch mit Pfeil, Trank, TNT, Kristall oder Haustier), endet der Schutz sofort (Standard) oder der Angriff wird geblockt (`end-on-attack: false`). Geblockte Treffer erzeugen keinen Kampfzustand im Claim-Modul.
- Loggt der Spieler innerhalb der Frist aus und wieder ein, läuft die restliche Zeit weiter (`resume-on-rejoin`). Nach einem Server-Neustart beginnt für niemanden eine neue Frist.
- Die Bossbar zeigt den Text aus `messages.yml` (`joinprotection.bossbar`) mit der Restzeit als `m:ss`; Farbe und Stil sind einstellbar.

> **Tipp:** Das Claim-Modul hat eine kurze Fresh-Spawn-Immunität nach jedem Respawn (`PvP.ProtectFreshSpawns`, 10 Sekunden). Die Rollen sind getrennt: der Join-Schutz für den allerersten Besuch, die Fresh-Spawn-Immunität für jeden Tod danach. Stirbt ein Neuling noch während des Join-Schutzes, bleibt bei `mode: all` nur dessen Leiste sichtbar; bei `mode: pvp` kommt die Fresh-Spawn-Immunität hinzu, weil sie auch Mobs abhält.

## Konfiguration (modules/joinprotection.yml)

```yaml
# Schaltet den Join-Schutz ein oder aus.
enabled: true

joinprotection:
  # Dauer des Schutzes in Sekunden (Standard 5 Minuten).
  duration-seconds: 300
  # all = gar kein Schaden (Stürze, Mobs, Lava, Spieler),
  # pvp = nur Schaden durch andere Spieler wird abgefangen.
  mode: all
  # true = der Schutz endet, sobald der Neuling einen Spieler angreift,
  # false = der Neuling kann während des Schutzes keine Spieler angreifen.
  end-on-attack: true
  # Restzeit bleibt erhalten, wenn der Spieler innerhalb der Frist neu einloggt.
  resume-on-rejoin: true
  bossbar:
    # PINK, BLUE, RED, GREEN, YELLOW, PURPLE oder WHITE.
    color: GREEN
    # PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12 oder NOTCHED_20.
    style: PROGRESS
```

## Komplette Beispiel-Config

```yaml
enabled: true

joinprotection:
  duration-seconds: 600
  mode: pvp
  end-on-attack: true
  resume-on-rejoin: true
  bossbar:
    color: YELLOW
    style: NOTCHED_10
```
