README.md aktualisiert

This commit is contained in:
2026-03-04 09:13:51 +00:00
parent 4d805abebe
commit 673ed06998

202
README.md
View File

@@ -16,22 +16,28 @@ Schluss mit unordentlichen Truhen und stundenlangem Sortieren! **AutoSortChest**
## ✨ Features
- **Einfache Schild-Steuerung:** Erstelle Input-, Ziel- und Rest-Truhen durch das Platzieren eines Schildes.
- **Einfache Schild-Steuerung:** Erstelle Input-, Ziel-, Rest- und Mülltruhen durch das Platzieren eines Schildes.
- **Visuelles Status-System:** Schilder ändern ihre Farbe, wenn eine Truhe voll ist, und senden Warnungen im Chat.
- **Smart Rest-Truhe (Fallback):** Konfiguriere eine Auffangtruhe für alle Items ohne spezielles Ziel.
- **Smart Rest-Truhe (Fallback):** Konfiguriere mehrere Auffangtruhen für alle Items ohne spezielles Ziel.
- **Mülltruhe:** Definiere eine Truhe, die bestimmte oder alle Items automatisch vernichtet mit konfigurierbarer Filter-Liste und optionalem Auto-Clear-Intervall.
- **Dynamic Item Update:** Ändere das sortierte Item einer Truhe jederzeit per Rechtsklick kein Abbauen nötig!
- **Mehrere Zieltruhen pro Item:** Definiere mehrere Zieltruhen für denselben Item-Typ volle Truhen werden automatisch übersprungen.
- **Privatsphäre-Modus:** Schalte Truhen per Shift-Rechtsklick zwischen Öffentlich und Privat um.
- **Hopper-Schutz:** Input- und Rest-Truhen blockieren Hopper automatisch Sortierung läuft ausschließlich über das ASC-System.
- **Clean-Modus:** Optionaler sauberer Schild-Stil ohne sichtbaren Item-Namen übersichtlicheres Aussehen im Lager.
- **Visuelle Effekte:** Optionale Partikel- und Sound-Effekte beim Sortiervorgang.
- **Server-übergreifend (CrossLink):** Mit MySQL können Zieltruhen auf anderen Servern des Netzwerks liegen. Items werden automatisch via Transfer-Tabelle weitergeleitet.
- **Import & Export:** Daten lassen sich bequem zwischen `players.yml` und MySQL hin- und herwechseln per Admin-Befehl.
- **Update-Checker:** Admins werden beim Login automatisch über neue Versionen informiert.
- **Multiplayer-Optimiert:** Jeder Spieler verwaltet sein eigenes System kein gegenseitiges Stören.
- **Vollständig Anpassbar:** Alle Nachrichten, Farben und Limits lassen sich in der `config.yml` editieren.
- **Vollständig Anpassbar:** Alle Nachrichten, Farben, Titel und Limits lassen sich in der `config.yml` editieren.
---
## 📖 Einrichtung
### 1. Eingangstruhe (Input)
Hier wirfst du alle unsortierten Items hinein.
Hier wirfst du alle unsortierten Items hinein. Hopper können keine Items direkt einlegen die Sortierung läuft ausschließlich über den eigenen Mechanismus.
Schild an die Truhe platzieren und folgendes schreiben:
```
@@ -52,14 +58,33 @@ ziel
```
Danach mit dem gewünschten Item (z. B. Diamant) auf das Schild **Rechtsklicken** der Item-Typ wird automatisch eingetragen.
> Sind mehrere Zieltruhen für denselben Item-Typ vorhanden, wird die nächste automatisch befüllt, wenn die erste voll ist.
---
### 3. Rest-Truhe (Fallback)
Das Auffangbecken für alle Items ohne Zieltruhe.
Das Auffangbecken für alle Items ohne Zieltruhe. Hopper können keine Items einlegen.
```
[asc]
rest
```
> Es können mehrere Rest-Truhen registriert werden. Sind alle voll, bleibt das Item in der Eingangstruhe.
---
### 4. Mülltruhe (Trash)
Items, die in diese Truhe gelangen, werden automatisch vernichtet.
```
[asc]
trash
```
Nach dem Platzieren des Schildes erscheint ein **Rechtsklick-Hinweis**. Durch Rechtsklick auf das Schild öffnet sich ein Konfiguration-GUI:
- **Ohne Filter-Liste:** Alle Items in der Truhe werden gelöscht.
- **Mit Filter-Liste:** Nur die eingetragenen Item-Typen werden gelöscht, der Rest bleibt erhalten.
- Items können per Rechtsklick zur Liste hinzugefügt oder entfernt werden.
- Der **Auto-Clear-Intervall** lässt sich in der `config.yml` einstellen (z. B. alle 5 Minuten).
- Auch Items, die per **Hopper** eingeworfen werden, werden sofort verarbeitet.
---
@@ -68,6 +93,8 @@ rest
| Aktion | Beschreibung |
|--------|-------------|
| **Shift + Rechtsklick** (leere Hand) auf Schild/Truhe | Wechselt zwischen Privat und Öffentlich |
| **Rechtsklick** auf Ziel-Schild (Item in Hand) | Ändert den zugeordneten Item-Typ |
| **Rechtsklick** auf Mülltruhen-Schild | Öffnet das Filter-Konfiguration-GUI |
| **Privat** | Nur der Besitzer kann die Truhe nutzen. Sortierung nur bei Online-Status. |
| **Öffentlich** | Alle Spieler dürfen Items einwerfen. Sortierung auch offline. Schild zeigt `[Public]`. |
@@ -76,6 +103,21 @@ rest
---
## 🎨 Clean-Modus
Wenn `sign-style.clean-target: true` in der `config.yml` gesetzt ist, werden Schilder in einem aufgeräumten Format ohne sichtbare `[asc]`-Kennung angezeigt:
| Schild-Typ | Zeile 1 | Zeile 2 | Zeile 3 |
|-----------|---------|---------|---------|
| **Input** | Spielername | „Eingang" / „Input" | Öffentlich / Privat |
| **Target** | Item-Name | Spielername | Öffentlich / Privat |
| **Rest** | Spielername | „Rest" | Öffentlich / Privat |
| **Trash** | Spielername | „Müll" / „Trash" | — |
Die Farben für den Clean-Modus werden separat unter `sign-colors-clean` konfiguriert.
---
## 🌐 Serverübergreifende Sortierung (CrossLink)
Wenn MySQL aktiviert und `server_crosslink: true` gesetzt ist, können Zieltruhen auf **anderen Servern desselben Netzwerks** liegen.
@@ -85,6 +127,14 @@ Wenn MySQL aktiviert und `server_crosslink: true` gesetzt ist, können Zieltruhe
2. Server A schreibt den Transfer in die gemeinsame Datenbank (`asc_transfers`).
3. Server B liest die Transfer-Tabelle und befüllt seine lokale Zieltruhe automatisch.
**BungeeCord-Setup:**
1. Dieselbe MySQL-Datenbank auf allen Servern eintragen.
2. Auf jedem Server einen **eindeutigen** `server_name` setzen (z. B. `survival`, `creative`).
3. `mysql.enabled: true` und `server_crosslink: true` setzen.
4. Alle Server neu starten das Schema wird automatisch migriert.
> Wird `server_name` leer gelassen, läuft das Plugin im Legacy-Modus (welt-basierte Erkennung, kein BungeeCord).
**Voraussetzung:** Alle Server müssen dieselbe MySQL-Datenbank nutzen.
---
@@ -99,6 +149,21 @@ Wenn MySQL aktiviert und `server_crosslink: true` gesetzt ist, können Zieltruhe
| `/asc import` | Importiert Daten aus `players.yml` → MySQL | `autosortchest.import` (OP) |
| `/asc export` | Exportiert Daten aus MySQL → `players.yml` | `autosortchest.export` (OP) |
### Berechtigungen Vollständige Übersicht
| Permission | Beschreibung | Standard |
|-----------|-------------|---------|
| `autosortchest.use` | Erlaubt das Erstellen von ASC-Schildern | `true` |
| `autosortchest.reload` | Erlaubt `/asc reload` | OP |
| `autosortchest.import` | Erlaubt `/asc import` | OP |
| `autosortchest.export` | Erlaubt `/asc export` | OP |
| `autosortchest.bypass` | Schilder ohne Shift abbauen, unabhängig vom Besitzer | OP |
| `autosortchest.limit.bypass` | Umgeht alle Truhen-Limits | OP |
| `autosortchest.admin` | Zugriff auf fremde ASC-Truhen | OP |
| `autosortchest.limit.<gruppe>` | Weist dem Spieler die Limits einer Gruppe zu (z. B. `autosortchest.limit.vip`) | `false` |
> Spieler **ohne** jede `autosortchest.limit.*`-Permission können bei aktivierten Limits **keine** Truhen erstellen. Vergib `autosortchest.limit.default` an alle normalen Spieler (z. B. in LuckPerms).
### Import & Export Details
**`/asc import`**
@@ -110,13 +175,17 @@ Exportiert alle Daten aus MySQL zurück in die `players.yml`. Enthält die `play
---
## ⚙️ Konfiguration (config.yml)
```yaml
# Version der Konfigurationsdatei
version: "2.0"
version: "2.3"
# Debug-Modus (nur für Entwicklung)
debug: false
# Sprache: 'de' oder 'en'
language: "de"
# MySQL/MariaDB für CrossLink und zentralen Datenspeicher
mysql:
enabled: false
@@ -129,8 +198,10 @@ mysql:
# Serverübergreifende Sortierung (benötigt MySQL)
server_crosslink: true
# Sprache: 'de' oder 'en'
language: "de"
# Eindeutiger Servername im BungeeCord-Netzwerk
# Leer lassen = Legacy-Modus (welt-basiert, kein BungeeCord)
# Beispiele: lobby | survival | creative
server_name: ""
# Welten, in denen das Plugin deaktiviert ist
world_blacklist:
@@ -138,24 +209,69 @@ world_blacklist:
- "world_the_end"
# Sortier-Intervall in Ticks (1 Tick = 0,05s)
sort_interval_ticks: 5
# Empfohlen: 10 (= 0,5s)
sort_interval_ticks: 10
# Maximale Anzahl Zieltruhen pro Spielergruppe
# Rest-Truhen Nachsortierung (0 = deaktiviert)
rest_resort_interval_ticks: 400 # 400 Ticks = 20 Sekunden
# Mülltruhe
trash:
# 0 = Nur beim Schließen leeren | 300 = alle 5 Min | 3600 = stündlich
auto_clear_interval_seconds: 0
# Visuelle Effekte
effects:
enabled: false # Partikel-Effekte anzeigen?
sound: false # Ton beim Ankommen von Items?
type: "DUST" # Partikel-Typ ('DUST' = bunter Regenbogen-Effekt)
# Schild-Stil
sign-style:
clean-target: false # true = sauberer Modus (kein Item-Name auf dem Schild)
# Maximale Anzahl Truhen pro Spielergruppe
chest_limits:
default: 5
vip: 100
enabled: true
default:
input: 1
rest: 1
target: 50
target_per_item: 1 # Wie viele Zieltruhen pro Item-Typ erlaubt sind
vip:
input: 2
rest: 2
target: 100
target_per_item: 3
# Truhen-Fenstertitel (Platzhalter: %item%)
chest-titles:
input:
de: "&6Eingangstruhe"
en: "&6Input Chest"
target:
de: "&6%item%"
en: "&6%item%"
rest:
de: "&6Rest-Truhe"
en: "&6Rest Chest"
trash:
de: "&4Mülltruhe"
en: "&4Trash Chest"
# Schildfarben (Minecraft-Farbcodes)
sign-colors:
input:
line1: "&6" # [asc]
line2: "&0" # input
line4: "&1" # Spielername
line1: "&6"
line2: "&0"
line4: "&1"
target:
line1: "&6" # [asc]
line2: "&0" # ziel
line3: "&f" # Item-Typ
line4: "&1" # Spielername
line1: "&6"
line2: "&0"
line3: "&f"
line4: "&1"
full:
line1: "&c"
line2: "&4"
@@ -166,8 +282,34 @@ sign-colors:
line2: "&0"
line3: "&f"
line4: "&1"
trash:
line1: "&6"
line2: "&0"
line4: "&1"
# Nachrichten
# Schildfarben im Clean-Modus
sign-colors-clean:
input:
line1: "&1"
line2: "&0"
line3: "&a"
target:
line1: "&f"
line2: "&1"
line3: "&a"
full:
line1: "&e"
line2: "&1"
line3: "&a"
rest:
line1: "&1"
line2: "&0"
line3: "&a"
trash:
line1: "&1"
line2: "&0"
# Nachrichten (Platzhalter: %player%, %item%, %x%, %y%, %z%, %mode%, %max%)
messages:
no-chest-near-sign: "&cKeine Truhe in der Nähe des Schildes!"
no-item-in-hand: "&cDu musst ein Item in der Hand halten!"
@@ -175,14 +317,28 @@ messages:
input-chest-set: "&aEingangstruhe erfolgreich gesetzt!"
target-chest-set: "&aZieltruhe erfolgreich für %item% eingerichtet!"
rest-chest-set: "&aRest-Truhe (Fallback) erfolgreich gesetzt!"
trash-chest-set: "&aMülltruhe erfolgreich eingerichtet!"
trash-chest-hint: "&7Rechtsklicke das Schild um Items zu konfigurieren."
target-chest-missing: "&cZieltruhe für %item% fehlt!"
target-chest-full: "&cZieltruhe für %item% ist voll! Koordinaten: (%x%, %y%, %z%)"
sign-break-denied: "&cDu musst Shift gedrückt halten, um dieses Schild oder die Truhe abzubauen!"
no-permission: "&cDu hast keine Berechtigung für diesen Befehl!"
world-blacklisted: "&cIn dieser Welt kannst du keine AutoSortChest erstellen!"
reload-success: "&aKonfiguration erfolgreich neu geladen!"
mode-changed: "&aModus gewechselt: &e%mode%"
mode-public: "&aÖffentlich"
mode-private: "&cPrivat"
limit-input-reached: "&cDu hast das Limit deiner Eingangstruhen erreicht! &7(%max%)"
limit-rest-reached: "&cDu hast das Limit deiner Rest-Truhen erreicht! &7(%max%)"
limit-target-reached: "&cDu hast das Limit deiner Zieltruhen erreicht! &7(%max%)"
limit-target-per-item: "&cDu hast das Limit für %item%-Truhen erreicht! &7(%max%)"
limit-no-permission: "&cDu hast keine Berechtigung um Truhen zu erstellen!"
trash-cleared: "&a✔ Mülltruhe wurde geleert!"
trash-item-added: "&a✔ &e%item% &azur Müll-Liste hinzugefügt."
trash-item-already: "&eDiseses Item ist bereits in der Müll-Liste."
trash-item-removed: "&c✖ &e%item% &caus der Müll-Liste entfernt."
trash-info-empty: "&4Mülltruhe &8(Deaktiviert) &7 Rechtsklick Schild zum Konfigurieren"
trash-info-filter: "&4Müll: &f%items% &8| Schild-Rechtsklick: Konfigurieren"
```
---
@@ -195,8 +351,10 @@ Bei aktiviertem MySQL erstellt das Plugin folgende Tabellen automatisch:
|---------|--------|
| `asc_players` | Spieler-UUIDs und Namen |
| `asc_input_chests` | Registrierte Eingangstruhen |
| `asc_target_chests` | Zieltruhen mit Item-Zuordnung |
| `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 |
---
@@ -206,7 +364,7 @@ Bei aktiviertem MySQL erstellt das Plugin folgende Tabellen automatisch:
- **Kompatibilität:** Paper, Spigot, Purpur (1.18.x 1.21.x)
- **Java:** 17+
- **Datenbank:** YAML (Standard) oder MySQL/MariaDB (optional)
- **Performance:** Ressourcenschonende Sortier-Algorithmen mit konfigurierbarem Intervall
- **Performance:** Asynchrones Speichern der `players.yml`, konfigurierbarer Sortier-Intervall, TTL-Caching für öffentliche Truhen
---