> For the complete documentation index, see [llms.txt](https://wiki.dyroxplays.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.dyroxplays.de/trichtersystem/konfiguration.md).

# Konfiguration

Passe die Trichterreichweiten, Transportmengen, Speicher-Optionen und die verschiedenen Menü-Designs flexibel an.

***

## Dateiübersicht

Nach dem ersten Serverstart generiert das Plugin folgende Konfigurationsdateien im Ordner `/plugins/Trichtersystem/`:

* **`config.yml`**: Die Hauptkonfigurationsdatei für globale Einstellungen, Welten-Freischaltungen und die Datenbankanbindung.
* **`maingui.yml`**: Konfiguration der Benutzeroberfläche und Items des Hauptmenüs (Sammelradius, Stack-Transfers, etc.).
* **`multiconnectorgui.yml`**: Konfiguration der Benutzeroberfläche für Mehrfachverbindungen.
* **`hopper.yml`**: Lokale Verbindungs-Datenbank (wird nur erstellt, wenn `storage.type` auf `YAML` gesetzt ist).

***

## config.yml

Die Hauptkonfigurationsdatei des Plugins. Alle Optionen sind in logische Bereiche unterteilt.

### Basis-Einstellungen

```yaml
# Der Präfix vor Systemnachrichten
prefix: '&7[&6LinkedHopper&7]'

# Ticks zwischen den Radius-Einsammelvorgängen (20 Ticks = 1 Sekunde)
schedulepickupticks: 200

# Tick-Geschwindigkeit bei aktiviertem 'Force Fast Tick'
fasttick: 5

# Maximaler Radius, den Spieler für einen Trichter einstellen können
maxpickupradius: 7

# Maximale Verbindungsdistanz in Blöcken
maxdistanceblocksofconnection: 30.0

# Benötigen Spieler zum Nutzen die Permission 'linkedhopper.use'?
permissionneededtouse: true

# Sollen Verbindungspartikel asynchron gerendert werden (Performance-schonend)?
spawnparticleasync: true
```

***

### Speicherung & MySQL (storage)

Das Speichersystem unterstützt drei Speicher-Typen. Falls MySQL genutzt wird, müssen die Zugangsdaten zwingend unter `storage.mysql` eingetragen werden.

> \[!IMPORTANT] **Korrektur der MySQL-Pfade:** Die Zugangsdaten befinden sich **nicht** unter dem Hauptschlüssel `MySQL`, sondern verschachtelt unter **`storage.mysql`**. Bitte verwende exakt die folgende Struktur:

```yaml
storage:
  # Mögliche Werte: SQLITE, MYSQL, YAML
  type: SQLITE
  
  # Speicherintervall in Sekunden
  save-interval-seconds: 60
  
  # MySQL Verbindungsdaten (nur aktiv bei type: MYSQL)
  mysql:
    host: localhost
    port: '3306'
    username: root
    database: linkedhopper
    password: password123
```

***

### Schutz & PlotSquared (destory / whereenable)

> \[!WARNING] **Achtung Code-Schreibfehler:** In der Konfiguration und in den Permissions ist die Zerstörungs-Option als **`destory`** (mit "o" vor "r") benannt. Achte auf die korrekte Schreibweise im Config-Key!

```yaml
destory:
  onlywithpermission: false # Abbau nur mit Permission 'linkedhopper.destory'
  needpermission: false
  havebeownerofhopper: false # Nur der Ersteller darf den Trichter abbauen

# PlotSquared Welteneinstellungen
whereenable:
  alloweverywhere: true
  worlds:
    enablethisfeature: false
    onthelistenable: true
    list:
    - world
  ONLYonplots: false # Trichterverbindungen NUR auf Grundstücken erlauben
  onplots: true
```

***

## maingui.yml

Diese Datei steuert das Aussehen und das Verhalten des Trichter-Hauptmenüs.

```yaml
gui:
  # Name der GUI
  name: '&7Trichter'
  # Anzahl der Zeilen (1-6)
  lenght: 5

# Formatierung für freie Plätze im Inventar
placeholder:
  enable: true
  # Format ab Version 1.13: MATERIALNAME: "Slots"
  # Format bis 1.12: MATERIAL;SHORTID: "Slots" (z.B. STAINED_GLASS_PANE;15: "0-45")
  BLACK_STAINED_GLASS_PANE: "0-45"

# Detailbeschreibungen des Filters im GUI
filteredItemlore:
  nofilter:
  - '&7Aktuell kein Filter aktiviert'
  - '&7Klicke auf ein Item in deinem Inventar,'
  - '&7welches du filtern möchtest'
  filter:
  - '&7Aktuell wird dieses Item gefiltert'
  - '&a'
  - '&7Aktuelle Filtereinstellungen'
  - '&7Enchantmentsfilter: %ENCHANTMENT%'
  - '&7Beschreibungsfilter: %LORE%'
  - '&7Displaynamefilter: %DISPLAYNAME%'
  - '&b'
  - '&fOHNE Shiftklick &7kannst du zwischen den Filtern wechseln'
  - '&fMIT Shiftklick &7kannst du den Filter ausschalten'

# Definition aller Funktionselemente im Menü
items:
  # Stackgröße für den Transfer (z.B. 1, 12, 32, 64)
  transportAmount:
    '1':
      material: CHEST
      name: '&7Items werden &e&leinzeln &7transferiert'
      amount: 1
      slot: 10
    '64':
      material: CHEST
      name: '&7Items werden &e&lStackweise &7transferiert'
      amount: 64
      slot: 10
  
  # Schnelles Redstone-Ticking (Force Fast Tick)
  forcefasttick:
    enabled:
      material: DIAMOND_BOOTS
      name: '&b&lForce Fast Tick &a&lAKTIV'
      slot: 11
      lore:
      - '&7Status: &a&lAKTIV'
      - '&7Klicke zum Deaktivieren'
    disabled:
      material: DIAMOND_BOOTS
      name: '&b&lForce Fast Tick &c&lINAKTIV'
      slot: 11
      lore:
      - '&7Status: &c&lINAKTIV'
      - '&7Klicke zum Aktivieren'
      
  # Info über Trichter-ID, Ziel und Radius
  info:
    material: HOPPER
    name: '&6Trichter'
    slot: 13
    lore:
    - '&7ID: &e%id%'
    - '&7Verbunden mit:'
    - '&7  Welt: &e%targetloc_world%'
    - '&7  X: &e%targetloc_x%'
    - '&7  Y: &e%targetloc_y%'
    - '&7  Z: &e%targetloc_z%'
    - '&7PickupRadius: &e%pickupradius%'
    
  # Partikel anzeigen
  showconnections:
    material: ENDER_EYE
    name: '&dVerbindungen & Aufsammelbereich anzeigen'
    slot: 16
    lore:
    - '&7Zeigt kurz die Verbindungen mit Partikeln an'
    
  # Mehrfachverbindung öffnen
  multiconnections:
    material: REPEATER
    name: '&eMehrfachverbindungen'
    slot: 15
    lore:
    - '&7Verbinde einzelne Materialien mit unterschiedlichen Ausgängen'
    
  # Status der Verbindung
  connected:
    material: ARROW
    name: '&bVerbinden'
    slot: 34
    lore:
    - '&7Aktueller Blocktype: &e%targetblocktype%'
    - '&7Ziel-Location:'
    - '&7  Welt: &e%targetloc_world%'
    - '&7  X: &e%targetloc_x%'
    - '&7  Y: &e%targetloc_y%'
    - '&7  Z: &e%targetloc_z%'
    - '&7&lOhne &7Shiftklick kannst du einen neuen Trichter auswählen'
    
  # Filter-Status
  filteredItem:
    material: BARRIER
    name: '&6Alle Items werden aufgesammelt'
    slot: 28

  # Radius verringern (-1)
  minus:
    material: PLAYER_HEAD
    name: '&c-1'
    skullowner: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTNkN2E5ZWUzMTM0OGEzNTc1NDM4M2MxNjdmYTMzYWJjMDJlOGU2OGNhMmM0YTk2OTE0MDBlN2ZlMzRiM2ViNSJ9fX0='
    slot: 30
    lore:
    - '&7Radius verringern'

  # Radius Info
  radiusinfo:
    material: HOPPER_MINECART
    name: '&6Sammelradius'
    slot: 31
    lore:
    - '&7Gegenstände werden im Radius von &e%pickupradius% &7eingesammelt.'

  # Radius erhöhen (+1)
  plus:
    material: PLAYER_HEAD
    name: '&a+1'
    skullowner: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19'
    slot: 32
    lore:
    - '&7Radius erhöhen'
```

***

## multiconnectorgui.yml

Dieses Menü steuert das Zuweisen von material-spezifischen Verbindungen.

```yaml
gui:
  name: '&7Mehrfachverbindungen'
  lenght: 6

placeholder:
  enable: true
  BLACK_STAINED_GLASS_PANE: "0-54"

# Die Lore-Darstellung für bereits verknüpfte Materialien
materialConnectionLore:
- '&7Aktueller Blocktype: &e%targetblocktype%'
- '&a'
- '&7Ziel-Location:'
- '&7  Welt: &e%targetworld%'
- '&7  X: &e%targetx%'
- '&7  Y: &e%targety%'
- '&7  Z: &e%targetz%'

items:
  info:
    material: REPEATER
    name: '&eMehrfachverbindungen'
    slot: 4
    lore:
    - '&7Verbinde einzelne Materialien mit'
    - '&7unterschiedlichen Ausgängen'
    - '&a'
    - '&7Klicke auf ein Material in deinem Inventar'
    - '&7und dann auf einen Block, um eine'
    - '&7material-spezifische Verbindung zu erstellen'
    
  back:
    material: PLAYER_HEAD
    name: '&cZurück'
    slot: 45
    shortid: 3
    skullowner: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjdhYWNhZDE5M2UyMjI2OTcxZWQ5NTMwMmRiYTQzMzQzOGJlNDY0NGZiYWI1ZWJmODE4MDU0MDYxNjY3ZmJlMiJ9fX0='
    lore:
    - '&7Zurück zum Hauptmenü'
    
  addconnector:
    material: LIME_DYE
    name: '&aVerbindung hinzufügen'
    slot: 53
    shortid: 10
    lore:
    - '&7Halte ein Material in der Hand'
    - '&7und klicke hier, um eine neue'
    - '&7Verbindung zu erstellen'
```

***

## Systemnachrichten

Alle Chat-Meldungen des Plugins lassen sich am Ende der `config.yml` anpassen:

```yaml
messages:
  alreadyopen: '&cDieser Trichter ist aktuell bereits von Jemanden geöffnet!'
  noperm: '&cDazu hast du keine Rechte'
  onlyplotowner: '&cDas kann nur der PlotOwner!'
  overroad: '&cDu kannst nicht über Straßen Trichter verbinden!'
  radiusoverplot: '&cDu kannst den Radius nicht weiter erhöhen, weil es sonst über den Plot hinaus gehen würde!'
  connecting:
    interact: '&7Bitte klicke nun einen Trichter an, mit dem du diesen Trichter verbinden willst'
    set: '&aTrichter %from% leitet nun an Trichter %to% weiter'
    error: '&cDu kannst diese beiden Trichter nicht mit einander verbinden'
    cancel: '&cVorgang wurde abgebrochen'
```
