# Config-Referenz (Claim)

Alle Konfigurationsschlüssel aus `plugins/CoreEngine/modules/claim.yml` von CoreEngineClaim. Dieses Plugin ist GriefPrevention-kompatibel und nutzt größtenteils dieselben Konfigurationsschlüssel.

Reload: `/claim admin reload` oder Server-Neustart.

---

## Storage

Backend-Auswahl für die Speicherung von Claims.

```yaml
Storage:
  # Backend-Typ: flatfile oder sqlite. Der Wechsel von flatfile zu sqlite
  # importiert die vorhandenen Claim-Daten automatisch beim ersten Start;
  # manuell lässt sich die Migration auch jederzeit über
  # /claim admin migrate anstoßen.
  Backend: sqlite
```

---

## Claims (Hauptabschnitt)

### Welt-Modi

```yaml
Claims:
  # Claim-Modus pro Welt. Der Platzhalter "*" ist der Standard für alle
  # Welten. Mögliche Modi: Survival (normal), Creative (strikter beim
  # Ablauf von Claims), SurvivalRequiringClaims (Bauen nur in Claims
  # erlaubt), PvP (verhält sich wie Survival), Disabled (kein Claiming).
  WorldModes:
    "*": Survival
  # Liste von Welten, die vollständig als Admin-Land behandelt werden.
  # Spieler können hier keine neuen Top-Level-Claims erstellen;
  # Subdivisions sind weiterhin möglich. Verwaltung über
  # /claim admin world.
  GlobalWorldClaims: []
```

### Schutz-Flags

```yaml
Claims:
  # Blockiert Mob-Spawner-Eier außerhalb von Claims
  PreventGlobalMonsterEggs: true
  # Blockiert Diebstahl aus Containern und Angriffe auf Tiere
  PreventTheft: true
  # Schützt passive Mobs (Tiere) innerhalb von Claims
  ProtectCreatures: true
  # Erfordert Access-Trust für Knöpfe und Hebel
  PreventButtonsSwitches: true
  # Blockiert Enderperlen-Teleport in fremde Claims ohne Access-Trust
  # (die Perle wird zurückgegeben)
  EnderPearlsRequireAccessTrust: true
  # Erfordert Build-Trust zum Läuten von Glocken (Raid-Auslöser)
  RaidTriggersRequireBuildTrust: true
  # Schützt Pferde vor fremdem Zugriff
  ProtectHorses: true
  # Schützt Esel vor fremdem Zugriff
  ProtectDonkeys: true
  # Schützt Lamas vor fremdem Zugriff
  ProtectLlamas: true
  # Wenn true, sind Haustiere auch in der Wildnis geschützt
  ProtectPetsOutsideLandClaims: false
```

> **Hinweis:** Türen, Falltüren und Zauntore erfordern innerhalb von Claims immer Access-Trust. Es gibt dafür keinen globalen Konfigurationsschalter; um sie für alle zu öffnen, nutzt man stattdessen das Claim-Flag "Öffentlicher Zugriff" in der Claim-GUI.

### Claim-Block-Wirtschaft (Basis)

```yaml
Claims:
  # Startguthaben (Claim-Blöcke) für neue Spieler
  InitialBlocks: 400
  # Claim-Blöcke pro Spielstunde (Spielzeit)
  BlocksAccruedPerHour: 100
  # Obergrenze für erspielte Blöcke (Bonus-Blöcke nicht inbegriffen)
  MaxAccruedBlocks: 80000
  # Stunden Inaktivität, bevor der Blockzuwachs pausiert (0 = deaktiviert)
  AccruedIdleThresholdHours: 0
  # Prozentsatz der normalen Rate während der Inaktivitäts-Stunden
  # (0 = keiner)
  AccruedIdleAccrualPercent: 0
  # Anteil der ausgegebenen Blöcke, der bei /claim abandon zurückerstattet
  # wird (1.0 = volle Rückerstattung)
  AbandonReturnRatio: 1.0
```

### Claim-Block-Wirtschaft (Rangstufen)

```yaml
Claims:
  # Benannte Stufen für Start-Blöcke, zugewiesen per Permission
  # coreengineclaim.rank.<key> (höchster Treffer gewinnt). Die direkte
  # Permission coreengineclaim.initialblocks.<Zahl> hat Vorrang. Beispiel:
  # InitialBlocksByGroup:
  #   vip: 800

  # Benannte Stufen für den Blockzuwachs pro Stunde, zugewiesen per
  # coreengineclaim.rank.<key> (höchster Treffer gewinnt). Die direkte
  # Permission coreengineclaim.blocksperhour.<Zahl> hat Vorrang. Beispiel:
  # AccrualPerHourByGroup:
  #   premium: 200
```

### Werkzeug- und Interaktions-Tuning

```yaml
Claims:
  # Minimale Zeit (ms) zwischen zwei Stick-Klicks desselben Spielers.
  # Verhindert Spam. 0 = deaktiviert.
  StickCooldownMillis: 500
  # Radius (Blöcke) für die Sneak+Stick-Anzeige "alle nahegelegenen Claims"
  NearbyClaimRadius: 30
  # Minimale Zeit (ms) zwischen zwei Sneak+Bone-Klicks
  SubdivisionVisualizationCooldownMillis: 200
  # Radius (Blöcke) für die Sneak+Bone-Anzeige "nahegelegene Subdivisions"
  SubdivisionNearbyRadius: 200
```

### Auto-Claim beim Kisten-Platzieren

```yaml
Claims:
  # Radius (Blöcke) um eine neu platzierte Kiste von Neu-Spielern für den
  # Auto-Claim
  AutomaticNewPlayerClaimsRadius: 4
  # Minimum-Radius-Override
  AutomaticNewPlayerClaimsRadiusMinimum: 0
```

### Claim-Geometrie

```yaml
Claims:
  # Nur für GriefPrevention-Kompatibilität, ohne eigene Funktion, manuell
  # erstellte Claims reichen immer über die volle Welthöhe
  ExtendIntoGroundDistance: 5
  # Minimale Seitenlänge (verhindert winzige Claims)
  MinimumWidth: 5
  # Minimale Gesamtfläche in Blöcken (Breite mal Länge)
  MinimumArea: 25
  # Niedrigste Y-Koordinate für automatisch erstellte Claims. Der Default
  # (eine sehr große negative Zahl) bedeutet: keine Beschränkung.
  # Beispiel: 0 verhindert Auto-Claims unter Meereshöhe.
  MinimumY: -2147483648
  # Per-Welt-Overrides für MinimumY. Beispiel: world_nether: 127
  MinimumYOverrides: {}
  # Nur für Kompatibilität, ohne eigene Funktion (siehe
  # ExtendIntoGroundDistance)
  MaximumDepth: 0
```

### Werkzeuge

```yaml
Claims:
  # Material für das Untersuchungswerkzeug
  InvestigationTool: STICK
  # Material für die Claim-Erstellung/Änderung
  ModificationTool: GOLDEN_SHOVEL
  # Material für die Subdivision-Übersicht
  SubdivisionVisualizationTool: BONE
```

### Claim-Ablauf (Expiration)

```yaml
Claims:
  # Auto-Chest-Claims werden nach N Tagen Inaktivität gelöscht
  ChestClaimDays: 7
  # Reserviert, aktuell ohne Funktion, AllClaimDays/ChestClaimDays regeln
  # den Ablauf
  UnusedClaimDays: 14
  # Alle Claims werden nach N Tagen Inaktivität gelöscht (0 = deaktiviert)
  AllClaimDays: 0
  # Maximale Claims pro Spieler (0 = unbegrenzt)
  MaximumNumberOfClaimsPerPlayer: 0
  # Maximale Subdivisions pro Top-Level-Claim (0 = unbegrenzt)
  MaximumSubdivisionsPerClaim: 100
```

### Creative-Welten

```yaml
Claims:
  # Reserviert, aktuell ohne Funktion. Das tatsächliche Creative-Verhalten
  # (Renaturierung beim Claim-Ablauf) hängt ausschließlich an
  # Claims.WorldModes: <welt>: Creative
  CreativeRulesWorlds: []
```

### Kolben & Portale

```yaml
Claims:
  # Kolben-Regeln: CLAIMS_ONLY (Kolben und alle bewegten Blöcke müssen im
  # selben Claim liegen, oder alles in der Wildnis), EVERYWHERE_SIMPLE
  # (vereinfachte Grenz-Prüfung), EVERYWHERE (nur Claim-Grenzen
  # geschützt), IGNORED (alle Kolben-Prüfungen aus, auch
  # Wilderness.DisablePistons)
  PistonMovement: CLAIMS_ONLY
  # Blockiert Portale, die von Mobs oder Maschinen erstellt wurden
  PreventNonPlayerCreatedPortals: true
  # Erlaubt Plünderern, Blöcke in Claims zu zerstören
  RavagersBreakBlocks: false
  # Warnt Spieler, die in der Wildnis bauen
  WarnWhenBuildingOutsideClaims: true
  # Verhindert, dass Wildfeuer in Claims übergreift
  ProtectFireSpreadingIntoClaims: true
```

### Visualisierung

```yaml
Claims:
  # Deaktiviert Partikel-Optimierungen für Anti-Cheat-Plugins
  VisualizationAntiCheatCompatMode: false
  # Sekunden, die die Claim-Grenze sichtbar bleibt
  VisualizationDurationSeconds: 30
```

---

## GriefPrevention

GriefPrevention-Kompatibilitätseinstellungen.

```yaml
GriefPrevention:
  Database:
    # Wenn Storage.Backend = sqlite, wird die zentrale Datenbank von
    # CoreEngine mitgenutzt
    UseCoreEngine: true
```

---

## PvP

PvP-Kampfregeln und Schutzmaßnahmen.

```yaml
PvP:
  # Ob PvP überhaupt aktiv ist
  Enabled: true
  # Aktivierung von PvP pro Welt. Platzhalter "*" = Standard
  # (false = PvP aus)
  RulesEnabledInWorld:
    "*": false
  # Neu gespawnte Spieler sind kurzzeitig unverwundbar
  ProtectFreshSpawns: true
  # Sekunden der Post-Spawn-Immunität
  FreshSpawnDurationSeconds: 10
  # Tötet Spieler, die während eines Kampfes ausloggen
  PunishLogout: true
  # Sekunden, bis der Kampf-Status nach dem letzten Treffer abläuft
  CombatTimeoutSeconds: 15
  # Ob Spieler während des Kampfes Items werfen können
  AllowCombatItemDrop: false
  # Commands, die während des Kampfes blockiert sind
  BlockedCommands: [home, spawn, tpa, tpaccept, tpahere, warp, back, tp, teleport, rtp]
  ProtectPlayersInLandClaims:
    # Spieler in Land-Claims in PvP-Welten schützen?
    PvPWorld: false
    # Spieler in Land-Claims in Nicht-PvP-Welten schützen?
    NonPvPWorld: true
  # Spieler in Admin-Claims schützen
  ProtectPlayersInAdminLandClaims: true
  # Spieler in Subdivisions schützen
  ProtectPlayersInSubdivisions: false
  AllowLavaNearPlayers:
    # Lava-Eimer in der Nähe von Spielern in PvP-Welten erlauben?
    PvPWorld: false
    # Lava-Eimer in der Nähe von Spielern in Nicht-PvP-Welten erlauben?
    NonPvPWorld: false
  AllowFireNearPlayers:
    # Feuerzeuge in der Nähe von Spielern in PvP-Welten erlauben?
    PvPWorld: false
    # Feuerzeuge in der Nähe von Spielern in Nicht-PvP-Welten erlauben?
    NonPvPWorld: false
  # Reserviert, aktuell ohne Funktion. Der Enderperlen-Schutz läuft
  # ausschließlich über Claims.EnderPearlsRequireAccessTrust
  AllowPearlsToPvpZones: false
  # Radius (Blöcke), in dem Lava-Eimer und Feuerzeuge in der Nähe von
  # Spielern blockiert werden
  LavaBucketRadius: 5
  # Sekunden, in denen nur der Spieler selbst seine eigenen Drops
  # aufheben kann
  LootProtectionSeconds: 180
```

---

## Pets

Haustier-Verwaltung.

```yaml
Pets:
  # Erlaubt den Command /givepet
  EnableGivePetCommand: true
```

---

## Mobs

Mob-Verhalten in der Wildnis und in Claims.

```yaml
Mobs:
  # Endermen können Blöcke bewegen (betrifft alle Bereiche)
  EndermenMoveBlocks: false
  # Silberfische können Steinblöcke zerstören
  SilverfishBreakBlocks: false
  # Mobs/Tiere können Feldfrüchte zertrampeln
  CreaturesTrampleCrops: false
  # Kaninchen können Feldfrüchte fressen
  RabbitsEatCrops: true
  # Zombies können Holztüren aufbrechen
  ZombiesBreakDoors: false
```

---

## Fire

Feuer-Ausbreitung und -Zerstörung.

```yaml
Fire:
  # Feuer breitet sich aus
  Spreads: false
  # Feuer zerstört Blöcke
  Destroys: false
```

---

## Explosions

Explosionen durch Creeper, TNT, Betten usw.

```yaml
Explosions:
  # Blockiert Krater von Creepern/TNT über Meereshöhe
  BlockSurfaceExplosions: true
  # Erlaubt Betten-Explosionen in der Wildnis (Nether/End)
  BedExplosionsAllowed: false
  # Erlaubt Respawn-Anker-Explosionen in der Wildnis (Overworld)
  RespawnAnchorExplosionsAllowed: false
```

---

## Wilderness

Wildnis-Schutzregeln.

```yaml
Wilderness:
  # Verhindert Himmelsplattform-Bäume (Griefing in der Wildnis)
  LimitSkyTrees: true
  # Verhindert das Wachsen von Setzlingen in der Wildnis
  LimitTreeGrowth: false
  # Setzt Redstone-Strom außerhalb von Claims auf 0
  DisableRedstone: true
  # Bricht Kolben außerhalb von Claims ab (PistonMovement: IGNORED deckt
  # das ebenfalls ab)
  DisablePistons: true
  # Meereshöhen-Override: -1 = nutzt die reguläre Weltmeereshöhe,
  # >= 0 = fester Wert
  SeaLevelOverride: -1
```

---

## Sieges

Belagerungssystem (optional).

```yaml
Sieges:
  # Belagerungssystem aktivieren
  Enabled: false
  # Maximale Dauer (Sekunden) einer Belagerung
  MaxDurationSeconds: 1800
  # Welt-Positivliste für Belagerungen (leer = alle Welten; PvP-Regeln
  # müssen in der jeweiligen Welt aktiv sein)
  Worlds: []
```

---

## Spam

Anti-Spam- und Login-Kontrollen.

```yaml
Spam:
  # Reserviert, ohne Funktion
  Enabled: false
  # Reserviert, ohne Funktion
  LoginCooldownSeconds: 60
  # Reserviert, ohne Funktion
  WhisperSlashCommands: [tell, pm, msg, r, whisper]
  # Reserviert, ohne Funktion
  ChatSlashCommands: [me, tell, pm, msg, r, whisper]
  # Reserviert, ohne Funktion
  BanOffenders: true
  # Reserviert, ohne Funktion
  AllowedIpAddresses: []
```

> **Hinweis:** Der gesamte Spam-Abschnitt hat aktuell **keine Wirkung** - CoreEngine übernimmt die Chat-Moderation (Mutes, Spam-Schutz, Login-Cooldowns). Die Softmute-/Ignore-Filterung (siehe `/softmute`, `/ignoreplayer` auf der Wiki-Seite *PvP und Sicherheit*) läuft unabhängig davon und ist immer aktiv.

---

## Economy

Kauf-/Verkaufspreise für Claim-Blöcke und Team-Plots.

```yaml
Economy:
  # Preis pro Claim-Block beim Kauf (0 = deaktiviert)
  ClaimBlocksPurchaseCost: 0.0
  # Erlös pro Claim-Block beim Verkauf (0 = deaktiviert)
  ClaimBlocksSellValue: 0.0
  # Standardpreis für /claim team buy (wird aus der Team-Kasse bezahlt).
  # Einzelne Plots können über /claim team price individuell
  # überschrieben werden. Miet-Plots buchen diesen Betrag pro Mietperiode.
  TeamPlotPurchaseCost: 100000.0
  # Preis pro Team-Claim-Block (/claim team blocks buy), 0 deaktiviert den Kauf.
  # Der Team-Pool finanziert konvertierte Team-Claims (/claim convert).
  TeamClaimBlocksCostPerBlock: 10.0

TeamPlots:
  # Echtzeit-Tage zwischen zwei Mietzahlungen eines Miet-Plots.
  RentPeriodDays: 30
  # Gnadenfrist nach einer geplatzten Zahlung, danach wird der Plot freigegeben.
  RentGraceDays: 7
```

---

## Advanced

Erweiterte Einstellungen für Performance und Diagnose.

```yaml
Advanced:
  # Admin-Warnung, wenn ein Spieler mehr als N Claims besitzt (0 = aus)
  ClaimsPerPlayerWarningCount: 0
  # Korrigiert negative Block-Bilanzen automatisch beim Laden
  fixNegativeClaimblockAmounts: true
  # Minuten zwischen den Prüfungen auf abgelaufene Claims
  ClaimExpirationCheckRate: 60
  # Tage, wie lange Offline-Spieler-Profile zwischengespeichert werden
  OfflinePlayer_cache_days: 90
```

---

## Logging

Audit-Log für Claim-Aktionen.

```yaml
Logging:
  # Schreibt alle Claim-Aktionen ins Audit-Log
  AuditLog: true
  # Name der Log-Datei im Plugin-Datenordner
  LogToFile: claim-audit.log
  # Rotiert die Log-Datei täglich
  RotateDaily: true
  # Größenlimit pro Log-Datei (0 = kein Limit). Bei Überschreitung wird
  # in eine neue Datei rotiert.
  MaxFileSizeMb: 10
```

---

## Komplette Beispiel-Config

Die vollständige `config.yml` mit allen Abschnitten. Die zuvor auskommentierten Beispielblöcke (`WorldModes`, `GlobalWorldClaims`, `InitialBlocksByGroup`, `AccrualPerHourByGroup`, `MinimumYOverrides`, `Sieges.Worlds`) sind hier aktiv mit Beispielwerten ausgefüllt, damit die Struktur direkt nachvollziehbar ist. Alle übrigen Werte entsprechen dem Auslieferungszustand.

```yaml
# =====================================================================
# CoreEngineClaim: config.yml
# Default claim protection settings.
# Reload: restart the server or run /claim admin reload.
# =====================================================================

Storage:
  # 'flatfile' = YAML files under plugins/CoreEngine/modules/coreClaim/data/
  # 'sqlite'   = CoreEngine's shared SQLite pool (default; requires CoreEngine).
  # When switched from flatfile to sqlite, claim data is auto-imported on first start.
  Backend: sqlite

Claims:
  # Per-world claim mode. Key = world name, or "*" for a wildcard default.
  # Modes: Survival, Creative, SurvivalRequiringClaims, PvP, Disabled.
  WorldModes:
    "*": Survival
    world_creative: Creative
    world_hardcore: SurvivalRequiringClaims
    pvp_world: PvP
    world_minigames: Disabled

  # Worlds listed here are treated as fully claimed admin worlds.
  # Normal claims are still indexed normally; subdivisions can be created inside
  # these worlds later without storing a massive full-world claim.
  GlobalWorldClaims:
    - shopping_district

  # ── Protection flags ────────────────────────────────────────────────
  PreventGlobalMonsterEggs: true         # block mob-spawner eggs outside claims
  PreventTheft: true                     # stops container theft and animal attacks
  ProtectCreatures: true                 # protect passive mobs inside claims
  PreventButtonsSwitches: true           # require access-trust for buttons/levers

  # NOTE: Doors, trapdoors and fence gates always require ACCESS trust inside
  # claims. Use the per-claim "Public Access" flag (claim GUI) to open them
  # up for everyone instead of a global config toggle.

  EnderPearlsRequireAccessTrust: true    # deny ender-pearl teleport into claim without access-trust
  RaidTriggersRequireBuildTrust: true    # prevent raid-trigger blocks (bells) from being rung
  ProtectHorses: true
  ProtectDonkeys: true
  ProtectLlamas: true
  ProtectPetsOutsideLandClaims: false    # if true, pets are protected even in wilderness

  # ── Claim-block economy ─────────────────────────────────────────────
  InitialBlocks: 400                     # starting block allowance for new players
  BlocksAccruedPerHour: 100             # blocks earned per Minecraft play-hour
  MaxAccruedBlocks: 80000               # cap on earned blocks (bonus blocks not counted)
  AccruedIdleThresholdHours: 0          # hours of inactivity before accrual pauses (0 = disabled)
  AccruedIdleAccrualPercent: 0          # percentage of normal rate to award during idle hours (0 = none)
  AbandonReturnRatio: 1.0               # fraction of spent blocks returned on /claim abandon (1.0 = full refund)

  # ── Per-rank starting blocks (permission-based) ─────────────────────
  # Simplest way: grant the number directly as a permission, no config
  # entry needed. Highest number wins and beats the entries below:
  #   /lp group vip permission set coreengineclaim.initialblocks.800 true
  #
  # Alternative: define named tiers here and assign them via the
  # `coreengineclaim.rank.<key>` permission. If a player matches multiple
  # entries, the HIGHEST start value wins.
  InitialBlocksByGroup:
    vip: 800
    premium: 1200
    mvp: 1600

  # ── Per-rank block accrual (permission-based) ───────────────────────
  # Simplest way: grant the hourly rate directly as a permission. Highest
  # number wins and beats the entries below:
  #   /lp group vip permission set coreengineclaim.blocksperhour.150 true
  #
  # Alternative: define named tiers here and assign them via the
  # `coreengineclaim.rank.<key>` permission. If a player matches multiple
  # entries, the HIGHEST rate wins. Without any match,
  # BlocksAccruedPerHour is used. The effective rate is applied to the
  # player's full Minecraft playtime, including time before install.
  #
  # Example LuckPerms setup for named tiers:
  #   /lp group vip permission set coreengineclaim.rank.vip true
  #   /lp group premium permission set coreengineclaim.rank.premium true
  AccrualPerHourByGroup:
    vip: 150
    premium: 200
    mvp: 300

  # ── Tool / interaction tuning ───────────────────────────────────────
  # Minimum time (in ms) between two stick (investigation tool) clicks
  # by the same player. Prevents spamming the visualiser. 0 = disabled.
  StickCooldownMillis: 500
  # Radius (blocks) for sneak+stick "show all nearby claims" lookup.
  NearbyClaimRadius: 30
  # Minimum time (in ms) between two sneak+bone subdivision overview clicks.
  SubdivisionVisualizationCooldownMillis: 200
  # Radius (blocks) for sneak+bone "show all nearby subdivisions" lookup.
  SubdivisionNearbyRadius: 200

  # ── Auto-claim on chest placement ───────────────────────────────────
  AutomaticNewPlayerClaimsRadius: 4     # radius (blocks) of the auto-chest claim
  AutomaticNewPlayerClaimsRadiusMinimum: 0  # minimum radius override

  # ── Claim geometry ──────────────────────────────────────────────────
  # NOTE: Manually created claims always span the FULL world height
  # (bottom to build limit). ExtendIntoGroundDistance and MaximumDepth are
  # accepted for GriefPrevention config compatibility but have no effect.
  ExtendIntoGroundDistance: 5
  MinimumWidth: 5                       # minimum side length to prevent tiny claims
  MinimumArea: 25                       # minimum total area (X*Z) in blocks

  # Lowest Y for AUTOMATIC chest claims (manual claims ignore this and
  # always use the full world height).
  # Default -2147483648 = no restriction (uses world bottom).
  MinimumY: -2147483648
  MinimumYOverrides:                    # per-world overrides: worldName: minimumY
    world_nether: 127

  # Accepted for compatibility: currently no effect (see note above).
  MaximumDepth: 0

  # Claim creation and inspection tools.
  InvestigationTool: STICK
  ModificationTool: GOLDEN_SHOVEL
  SubdivisionVisualizationTool: BONE

  # ── Claim expiration ────────────────────────────────────────────────
  ChestClaimDays: 7                     # auto-chest claim deleted after N idle days
  UnusedClaimDays: 14                   # reserved (not implemented yet): use AllClaimDays instead
  AllClaimDays: 0                       # all claims deleted after N idle days (0 = disabled)
  MaximumNumberOfClaimsPerPlayer: 0     # 0 = unlimited
  MaximumSubdivisionsPerClaim: 100      # maximum sub-divisions per top-level claim (0 = unlimited)

  # ── Creative worlds ─────────────────────────────────────────────────
  CreativeRulesWorlds: []

  # ── Piston & portal rules ───────────────────────────────────────────
  PistonMovement: CLAIMS_ONLY           # EVERYWHERE / EVERYWHERE_SIMPLE / CLAIMS_ONLY / IGNORED

  # Blocks portals created by mobs or machines.
  PreventNonPlayerCreatedPortals: true

  RavagersBreakBlocks: false            # allow/deny ravagers breaking blocks in claims
  WarnWhenBuildingOutsideClaims: true   # educate players who build in unclaimed land
  ProtectFireSpreadingIntoClaims: true  # prevent wildfire from entering claimed land

  # ── Visualisation ───────────────────────────────────────────────────
  VisualizationAntiCheatCompatMode: false  # disables particle optimisation for anti-cheat plugins
  VisualizationDurationSeconds: 30      # seconds the claim border stays visible

GriefPrevention:
  Database:                             # if Storage.Backend = sqlite, use CoreEngine pool
    UseCoreEngine: true

PvP:
  Enabled: true
  RulesEnabledInWorld:                  # per-world PvP rule toggle; "*" = wildcard default
    "*": false
  ProtectFreshSpawns: true              # invincibility for new/fresh respawns
  FreshSpawnDurationSeconds: 10         # seconds of post-spawn immunity
  PunishLogout: true                    # kill players who log out during combat
  CombatTimeoutSeconds: 15             # seconds in-combat after last PvP damage
  AllowCombatItemDrop: false            # whether players can drop items mid-fight
  BlockedCommands: [home, spawn, tpa, tpaccept, tpahere, warp, back, tp, teleport, rtp]
  ProtectPlayersInLandClaims:
    PvPWorld: false
    NonPvPWorld: true
  ProtectPlayersInAdminLandClaims: true
  ProtectPlayersInSubdivisions: false
  AllowLavaNearPlayers:
    PvPWorld: false
    NonPvPWorld: false
  AllowFireNearPlayers:
    PvPWorld: false
    NonPvPWorld: false
  AllowPearlsToPvpZones: false
  LavaBucketRadius: 5
  LootProtectionSeconds: 180

Pets:
  EnableGivePetCommand: true

Mobs:
  EndermenMoveBlocks: false             # allow endermen to move blocks (affects all areas)
  SilverfishBreakBlocks: false          # deny silverfish from breaking stone blocks
  CreaturesTrampleCrops: false          # deny mobs/animals trampling crops
  RabbitsEatCrops: true                 # allow rabbits to eat farm crops
  ZombiesBreakDoors: false              # deny zombies breaking wooden doors

Fire:
  Spreads: false                        # allow fire to spread
  Destroys: false                       # allow fire to destroy blocks

Explosions:
  BlockSurfaceExplosions: true          # block creeper/TNT craters above sea level
  BedExplosionsAllowed: false           # allow bed explosions in nether/end dimensions
  RespawnAnchorExplosionsAllowed: false # allow respawn-anchor explosions in the overworld

Wilderness:
  LimitSkyTrees: true                   # prevent sky-platform tree griefing
  LimitTreeGrowth: false                # deny saplings from growing in the wilderness
  # Anti-grief kill switches for unclaimed land. When enabled, redstone
  # power is forced to 0 and pistons will not move outside of claims.
  DisableRedstone: true
  DisablePistons: true                  # PistonMovement: IGNORED also skips this check
  # SeaLevelOverride: -1 delegates to World.getSeaLevel(); >= 0 forces a fixed value.
  SeaLevelOverride: -1

Sieges:
  Enabled: false
  MaxDurationSeconds: 1800
  Worlds:
    - pvp_world

Spam:
  # Reserved for a future spam-detection module, currently has NO effect.
  # CoreEngine already handles chat moderation (mutes, spam protection).
  # Soft-mute (/softmute) and ignore (/ignoreplayer) filtering is always
  # active regardless of this setting.
  Enabled: false

Economy:
  ClaimBlocksPurchaseCost: 0.0          # 0 = buying disabled
  ClaimBlocksSellValue: 0.0             # 0 = selling disabled
  TeamPlotPurchaseCost: 100000.0        # paid from team treasury by /claim team buy; rent plots charge this per period
  TeamClaimBlocksCostPerBlock: 10.0      # price per TEAM claim block (/claim team blocks buy); 0 = buying disabled

TeamPlots:
  RentPeriodDays: 30                    # real-time days between rent payments for rented plots
  RentGraceDays: 7                      # grace period after a failed payment before the plot is released

Advanced:
  ClaimsPerPlayerWarningCount: 0        # warn admins when a player owns more than N claims (0 = off)
  fixNegativeClaimblockAmounts: true    # auto-correct negative block balances on load
  ClaimExpirationCheckRate: 60          # minutes between expiration sweeps (PHASE 14)
  OfflinePlayer_cache_days: 90          # how long to cache offline player profiles

Logging:
  AuditLog: true                        # write all claim actions to the audit log
  LogToFile: claim-audit.log            # log file name inside the plugin data folder
  RotateDaily: true                     # rotate the audit log file each day
  MaxFileSizeMb: 10                     # rotate to a new file when the daily log exceeds this size (0 = no cap)

# CoreEngineClaim is inspired by GriefPrevention's land-claim workflow.
```
