# TPA

Mit TPA bitten sich Spieler gegenseitig um Erlaubnis für einen Teleport. Nur die jeweils neueste eingehende Anfrage ist über `/tpaccept`/`/tpdeny` erreichbar, ältere laufen per Zeitüberschreitung ab. Angenommene Teleports laufen über die [Teleport-Engine](teleport.html) (Warmup, Cooldown, Kosten, Sicherheitsprüfung, Kampf-Sperre).

## Commands

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| `/tpa` | `/tpa <spieler>` | `tpa.send` | `true` | "Ich möchte zu dir teleportieren" |
| `/tpahere` | `/tpahere <spieler>` | `tpa.sendhere` | `true` | "Komm zu mir" |
| `/tpaccept` | `/tpaccept` (Alias `/tpyes`) | `tpa.accept` | `true` | Nimmt die neueste Anfrage an |
| `/tpdeny` | `/tpdeny` (Alias `/tpno`) | `tpa.deny` | `true` | Lehnt die neueste Anfrage ab |
| `/tptoggle` | `/tptoggle` | `tpa.toggle` | `true` | Schaltet den Empfang von Anfragen an/aus |

## Weitere Permissions

| Permission | Default | Beschreibung |
|---|---|---|
| `tpa.bypass.toggle` | `false` | Sendet Anfragen auch bei ausgeschaltetem Empfang des Ziels |
| `tpa.bypass.distance` | `false` | Ignoriert das Distanzlimit |
| `tpa.bypass.crossdimension` | `false` | Ignoriert die Dimensions-Sperre |

> **Achtung:** `/tphere` ist **kein** Alias von `/tpahere`, sondern ein eigenständiger Admin-Befehl (`teleport.tphere`, Default `false`) ohne Bestätigung durch den Zielspieler.

> **Tipp:** Der Empfänger bekommt klickbare Annehmen/Ablehnen-Knöpfe. Der Empfangs-Status (`/tptoggle`) bleibt über Neustarts erhalten. Verlässt einer der Beteiligten den Server, wird die Anfrage entfernt und die andere Seite benachrichtigt.

## Konfiguration (modules/tpa.yml)

```yaml
# Schaltet das TPA-Modul ein oder aus.
enabled: true

tpa:
  # Sekunden, nach denen eine unbeantwortete Anfrage abläuft.
  request-timeout: 60
  # Maximale Entfernung zwischen Absender und Ziel. 0 = kein Limit.
  # Bei aktivem Limit zählt eine andere Welt immer als zu weit.
  max-distance: 0
  # Erlaubt Anfragen über Welt-/Dimensionsgrenzen (nur relevant,
  # wenn kein Distanzlimit gilt).
  allow-cross-dimension: true

cooldown:
  # Wartezeit in Sekunden zwischen zwei Anfragen.
  commands:
    tpa: 10

cost:
  # Preis pro Anfrage. 0 = kostenlos.
  commands:
    tpa: 0

warmup:
  # Countdown vor dem angenommenen Teleport.
  commands:
    tpa:
      duration: 3
```

## Komplette Beispiel-Config

```yaml
enabled: true

tpa:
  request-timeout: 30
  max-distance: 5000
  allow-cross-dimension: false

cooldown:
  commands:
    tpa: 30

cost:
  commands:
    tpa: 10.0

warmup:
  commands:
    tpa:
      duration: 5
```
