# Team-Claims, Plots & Welten

Land an ein CoreEngine-Team binden: über konvertierte Top-Level-Claims oder über Team-Plots (Subdivisions). Plus globale Welt-Claims und World Modes.

## Claim-Arten

| Besitzer | Übergeordnet | Team | Bedeutung |
|---|---|---|---|
| gesetzt | keiner | keine | normaler Spieler-Claim |
| keiner | keiner | keine | Admin-Claim (oder Global-World-Claim) |
| beliebig | gesetzt | keine | normale Subdivision |
| gesetzt | keiner | gesetzt | konvertierter Team-Claim |
| beliebig | gesetzt | gesetzt | Team-Plot |

Ein Claim ist ein Team-Claim, sobald ihm ein Team zugeordnet ist; die Team-Baurechte gelten für Top-Level und Subdivision gleich.

## Konvertieren

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| Zu Team-Claim | `/claim convert` | `coreengineclaim.claim.convert` | true | Eigener Top-Level-Claim ans eigene Team |
| Zurück an Spieler | `/claim team convert <player> [force]` | `coreengineclaim.teamclaims.convert` | true | Nur Team-Owner, im Team-Claim stehend |
| Annehmen/Ablehnen | `/claim team accept` / `deny` | (Teil obiger) | true | Empfänger bestätigt binnen 60 s |

`/claim convert`: im eigenen Top-Level-Claim stehend, Besitzer, Team-Mitglied, Claim noch teamfrei. Zusätzlich braucht der Spieler das Team-Rang-Recht **Convert claims** (der Team-Owner hat es immer), und das Team braucht genug freie **Team-Claim-Blöcke** für die Claim-Fläche. Beim Konvertieren werden die persönlichen Blöcke des Besitzers frei; die Fläche belastet ab dann den Team-Pool.

`/claim team convert`: Der Empfänger muss die Claim-Fläche aus seinen freien Blöcken bezahlen (erneute Vollprüfung beim Annehmen); der Team-Pool wird automatisch wieder frei. `force` löst Team-Container beim Annehmen zu normalen Kisten auf.

## Team-Claim-Blöcke

Konvertierte Team-Claims laufen über einen eigenen Block-Pool des Teams. Ohne gekaufte Team-Blöcke kann nichts konvertiert werden, so kann sich kein Team über Konvertierungen unbegrenzt Fläche verschaffen.

Kaufen geht auf drei Wegen, überall mit denselben Regeln: per Command, im Team-Menü (`/team`, Storage, Button „Team Claim Blocks") und im Web-Panel (`/cweb`, Team-Bereich, Tab Claims). Im Menü fragt der Amboss die Stückzahl ab; die Gesamtkosten kommen danach in den Chat und werden dort per Klick bestätigt oder verworfen (60 Sekunden gültig).

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| Pool anzeigen | `/claim team blocks` | `coreengineclaim.teamclaims.blocks` | true | Gekauft, belegt und frei |
| Blöcke kaufen | `/claim team blocks buy <anzahl>` | `coreengineclaim.teamclaims.blocks` | true | Kauf aus der Team-Kasse (Rang braucht Abheben-Recht) |

```yaml
Economy:
  TeamClaimBlocksCostPerBlock: 10.0   # Preis pro Team-Claim-Block; 0 deaktiviert den Kauf
```

Team-Plots (Subdivisions in Admin-Land) zählen **nicht** auf den Team-Pool, sie werden mit Geld gekauft oder gemietet. Wird das Team aufgelöst, verfällt der Pool.

## Team-Plots

In der Subdivision stehend ausführen.

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| Kaufen/Mieten | `/claim team buy` | `coreengineclaim.teamplots.buy` | true | Kauft den freien Plot fürs eigene Team, bei Miet-Plots startet die Miete |
| Info | `/claim team info` | `coreengineclaim.teamclaims.info` | true | Team-Zuordnung, Preis und Modus |
| Zuweisen | `/claim team assign <team>` (`set`) | `coreengineclaim.teamclaims.assign` | false | Plot direkt zuweisen |
| Zuordnung entfernen | `/claim team clear` (`remove`, `abandon`) | `coreengineclaim.teamclaims.clear` | false | Team-Zuordnung löschen, laufende Miete endet, der Plot selbst bleibt |
| Preis setzen | `/claim team setprice <betrag\|default> [buy\|rent]` (`price`) | `coreengineclaim.teamclaims.setprice` | false | Plot-Preis und Modus; `default` = Config-Default und Kauf-Modus |

**Kauf** (`/claim team buy`): Preis ist der plot-spezifische, sonst `Economy.TeamPlotPurchaseCost`; `<= 0` deaktiviert. Käufer muss Team-Mitglied sein und sein Rang muss aus der Team-Kasse abheben dürfen. Der Preis wird aus der Kasse gebucht, dann der Plot zugewiesen und ins Audit-Log geschrieben. Gibt ein Team einen gekauften Plot wieder frei, bleibt die Subdivision samt Preis bestehen und kann sofort wieder gekauft werden.

> **Tipp:** Per `/claim team setprice` lässt sich pro Plot ein eigener Preis setzen, so stehen teure Premium- neben günstigen Standard-Plots, ohne den Default zu ändern.

## Miet-Plots

Mit `/claim team setprice <betrag> rent` wird ein Plot zum Miet-Plot: Der Betrag wird beim Anmieten sofort und danach jede Mietperiode in Echtzeit aus der Team-Kasse abgebucht.

```yaml
TeamPlots:
  RentPeriodDays: 30   # Echtzeit-Tage zwischen zwei Mietzahlungen
  RentGraceDays: 7     # Frist nach einer geplatzten Zahlung
```

Kann die Kasse eine Miete nicht decken, passiert Folgendes:

1. Alle Team-Mitglieder werden benachrichtigt: online sofort, offline einmalig beim nächsten Login. Zusätzlich zeigt das Team-GUI unten rechts eine Warnung mit Betrag und Frist.
2. Das Team hat die Gnadenfrist (`RentGraceDays`), um Geld in die Kasse einzuzahlen. Danach wird die Zahlung erneut versucht.
3. Schlägt sie wieder fehl, wird der Plot aufgelöst: Team-Zuordnung, Team-Container und Team-Shops im Plot werden entfernt. **Gebaute Blöcke bleiben stehen**; wer den Plot danach mietet, kümmert sich selbst ums Aufräumen. Der Plot bleibt mit Preis und Miet-Modus erhalten und ist sofort wieder mietbar.

## Team-/Ally-Baurechte

Geprüft nach explizitem/Public-Trust, aber vor der Eltern-Vererbung. Die Rechte kommen aus dem CoreEngine-Team-System (nicht LuckPerms):

| Team-Rang-Recht | Ergebnis |
|---|---|
| `MANAGE_TEAM_CLAIM_FLAGS` (eigenes Team) | volle Verwaltung (`MANAGE`) |
| `BUILD_IN_TEAM_SUBDIVISIONS` (eigenes Team) | Baurecht |
| `BUILD_IN_ALLY_SUBDIVISIONS` (eigenes Team, verbündet mit Besitzer-Team) | Baurecht |

> **Tipp:** Die Allianz wird über die Ally-Liste des besitzenden Teams geprüft, das Rang-Recht aber auf dem eigenen Team des Zugreifenden. Ein Team steuert das Ally-Baurecht also selbst, ohne Zustimmung des Zielteams.

## Global World Claims

Ganze Welten als Admin-Land, ohne physischen Riesen-Claim.

```yaml
Claims:
  GlobalWorldClaims: []   # Welten, die vollständig als Admin-Land gelten
```

Jede gelistete Welt bekommt einen synthetischen, besitzerlosen Admin-Claim über die komplette Welt. Subdivisions darin bleiben möglich (für Team-Plots/Shops). Eigene Top-Level-Claims werden dort verweigert (die Schaufel meldet das schon beim ersten Klick).

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| Welt verwalten | `/claim admin world add\|remove\|list <world>` | `coreengineclaim.claim.admin.world` | false | Trägt Welten in `GlobalWorldClaims` ein |

> **Tipp:** `coreengineclaim.globalworldclaims` ist zusätzlich nötig; beide sind in `coreengineclaim.admin` enthalten. Änderungen laden sofort neu, ohne Serverneustart.

## World Modes

```yaml
Claims:
  WorldModes:
    "*": Survival   # Survival / Creative / SurvivalRequiringClaims / PvP / Disabled
```

| Modus | Auswirkung |
|---|---|
| `Survival` | Normal, Auto-Claim beim ersten Kisten-Platzieren |
| `Disabled` | Keine neuen Top-Level-Claims |
| `SurvivalRequiringClaims` | Wie Survival, aber außerhalb von Claims kein Bauen (außer Ignore-Bypass) |
| `Creative` | Renaturiert ablaufende Claims; kein Auto-Claim |
| `PvP` | Wie Survival; PvP-Schaden regelt `PvP.RulesEnabledInWorld` |

## Admin-Claims

Top-Level ohne Besitzer und ohne Elternclaim (manuell erstellt oder Global-World).

| Command | Syntax | Permission | Default | Beschreibung |
|---|---|---|---|---|
| Erstellmodus | `/claim admin mode` | `coreengineclaim.claim.admin.mode` | false | Schaufel in den Admin-Claim-Modus |
| Übertragen | `/claim admin transfer [player]` | `coreengineclaim.claim.admin.transfer` | false | Ohne Arg: zu Admin-Claim; mit Name: Besitzerwechsel |
| Bypass | `/claim admin ignore` (`ic`) | `coreengineclaim.claim.admin.ignore` | false | Voller Zugriff auf alle Claims (Sitzung) |
| Auflisten | `/claim admin list [page]` | `coreengineclaim.claim.admin.list` | false | Alle Admin-Claims |

> **Hinweis:** `coreengineclaim.adminclaims` (Default false) gibt automatisch `MANAGE` in besitzerlosen Claims, aber nicht in Spieler-Claims. `/claim admin transfer` leert Trust und Team-Zuordnung; das alte Team verliert den Zugriff.

Der angezeigte Besitzer ist `Wilderness` ohne Claim, der Teamname bei Team-Zuordnung, `Admin` bei besitzerlosen Claims, sonst der Spielername.

> **Tipp:** Team-ChestShops laufen über die Team-Kasse (Bearbeiten braucht das Team-Recht `EDIT_TEAM_SHOPS`). Team-Container gehen nur in Team-Claims/Plots und werden nie zu Chest-Shops. Details auf der Shop-Seite.

## Komplette Beispiel-Config

```yaml
Claims:
  WorldModes:
    "*": Survival
    world_creative: Creative
    world_hardcore: SurvivalRequiringClaims
    pvp_world: PvP
    world_minigames: Disabled
  GlobalWorldClaims:
    - shopping_district
Economy:
  TeamPlotPurchaseCost: 100000.0
```
