Datenbank hinzugefügt

2026-03-19 06:41:10 +00:00
parent 8a204f1fc0
commit 44f524e60b

88
Datenbank.md Normal file

@@ -0,0 +1,88 @@
# Datenbank & CrossLink
ASC unterstützt zwei Datenspeicher-Backends: **YAML** (Standard, keine Einrichtung nötig) und **MySQL/MariaDB** (empfohlen für Netzwerke).
---
## YAML-Modus (Standard)
Ohne MySQL-Konfiguration werden alle Spielerdaten in `plugins/AutoSortChest/players.yml` gespeichert. Kein weiteres Setup erforderlich.
---
## MySQL aktivieren
In der `config.yml`:
```yaml
mysql:
enabled: true
host: "localhost"
port: 3306
database: "autosortchest"
user: "autosortchest"
password: "autosortchest"
```
Das Datenbankschema wird beim Start **automatisch migriert** keine manuellen SQL-Befehle nötig.
---
## Datenbank-Tabellen
| Tabelle | Inhalt |
| --- | --- |
| `asc_players` | Spieler-UUIDs und Namen |
| `asc_input_chests` | Registrierte Eingangstruhen |
| `asc_target_chests` | Zieltruhen mit Item-Zuordnung und Slot-Index |
| `asc_rest_chests` | Rest-/Fallback-Truhen |
| `asc_trash_chests` | Mülltruhen mit Serverzuordnung |
| `asc_trash_items` | Filter-Listen der Mülltruhen |
| `asc_transfers` | Ausstehende CrossLink-Transfers zwischen Servern |
---
## CrossLink (Serverübergreifende Sortierung)
Mit CrossLink können Zieltruhen auf **anderen Servern desselben Netzwerks** liegen. Benötigt MySQL.
### Funktionsweise
1. Server A hat die Eingangstruhe und erkennt, dass die Zieltruhe für `OAK_LOG` auf Server B liegt
2. Server A schreibt den Transfer in die gemeinsame Datenbank-Tabelle `asc_transfers`
3. Server B liest die Transfer-Tabelle periodisch und befüllt seine lokale Zieltruhe automatisch
### Einrichtung (BungeeCord / Velocity)
1. **Dieselbe** MySQL-Datenbank auf allen Servern eintragen
2. Auf jedem Server einen **eindeutigen** `server_name` setzen
```yaml
server_crosslink: true
server_name: "survival" # z. B. "lobby", "survival", "creative"
```
3. `mysql.enabled: true` und `server_crosslink: true` setzen
4. Alle Server neu starten
> ⚠️ Wird `server_name` leer gelassen, läuft das Plugin im **Legacy-Modus** (welt-basierte Erkennung, kein BungeeCord).
### Voraussetzungen
* Alle Server nutzen **dieselbe** MySQL-Datenbank
* Jeder Server hat einen eindeutigen `server_name`
* `server_crosslink: true` auf allen beteiligten Servern
---
## Import & Export
Zum Wechsel zwischen YAML und MySQL gibt es zwei Admin-Befehle:
| Befehl | Richtung | Beschreibung |
| --- | --- | --- |
| `/asc import` | YAML → MySQL | Überträgt `players.yml` in die Datenbank |
| `/asc export` | MySQL → YAML | Exportiert Datenbank zurück in `players.yml` |
Beim Export wird automatisch ein Backup der bestehenden `players.yml` erstellt:
`players_backup_<timestamp>.yml`