379 lines
14 KiB
Markdown
379 lines
14 KiB
Markdown
# AutoSortChest
|
||
|
||
*Intelligente Lagerverwaltung & automatisierte Sortiersysteme ohne Redstone-Chaos*
|
||
|
||

|
||

|
||

|
||
|
||
---
|
||
|
||
## Über AutoSortChest
|
||
|
||
Schluss mit unordentlichen Truhen und stundenlangem Sortieren! **AutoSortChest** ermöglicht es dir, komplexe Sortiersysteme für Farmen, Shops oder Lagerhäuser in Sekunden aufzubauen. Alles funktioniert über ein intuitives Schildersystem – keine komplizierten Befehle oder mühsame Redstone-Leitungen erforderlich.
|
||
|
||
---
|
||
|
||
## ✨ Features
|
||
|
||
- **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 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, Titel und Limits lassen sich in der `config.yml` editieren.
|
||
|
||
---
|
||
|
||
## 📖 Einrichtung
|
||
|
||
### 1. Eingangstruhe (Input)
|
||
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:
|
||
```
|
||
[asc]
|
||
input
|
||
```
|
||
Dein Spielername wird automatisch in Zeile 4 eingetragen.
|
||
|
||
---
|
||
|
||
### 2. Zieltruhe (Target)
|
||
Hier landen die spezifisch sortierten Items.
|
||
|
||
Schild an die Truhe platzieren:
|
||
```
|
||
[asc]
|
||
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. 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.
|
||
|
||
---
|
||
|
||
## 🔐 Zugriff & Modi
|
||
|
||
| 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]`. |
|
||
|
||
> Nur der Besitzer (Name auf dem Schild) kann den Modus ändern oder die Truhe/das Schild abbauen.
|
||
> Zum Abbauen immer **Shift gedrückt halten**.
|
||
|
||
---
|
||
|
||
## 🎨 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.
|
||
|
||
**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 (`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.
|
||
|
||
---
|
||
|
||
## 💬 Befehle & Berechtigungen
|
||
|
||
| Befehl | Beschreibung | Berechtigung |
|
||
|--------|-------------|-------------|
|
||
| `/asc help` | Zeigt die Hilfe an | – |
|
||
| `/asc info` | Plugin-Informationen (Version, Autor) | `autosortchest.use` |
|
||
| `/asc reload` | Konfiguration neu laden | `autosortchest.reload` |
|
||
| `/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`**
|
||
Überträgt alle Spielerdaten aus der `players.yml` in die MySQL-Datenbank. Sinnvoll beim erstmaligen Wechsel von YAML auf MySQL. Bestehende MySQL-Einträge werden dabei nicht gelöscht, sondern aktualisiert (`REPLACE INTO`).
|
||
|
||
**`/asc export`**
|
||
Exportiert alle Daten aus MySQL zurück in die `players.yml`. Enthält die `players.yml` noch Daten, wird vorher automatisch ein Backup erstellt (`players_backup_<timestamp>.yml`). Ist die Datei bereits leer, wird kein unnötiges Backup angelegt.
|
||
|
||
---
|
||
|
||
## ⚙️ Konfiguration (config.yml)
|
||
|
||
```yaml
|
||
# Version der Konfigurationsdatei
|
||
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
|
||
host: "localhost"
|
||
port: 3306
|
||
database: "autosortchest"
|
||
user: "autosortchest"
|
||
password: "autosortchest"
|
||
|
||
# Serverübergreifende Sortierung (benötigt MySQL)
|
||
server_crosslink: true
|
||
|
||
# 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:
|
||
- "world_nether"
|
||
- "world_the_end"
|
||
|
||
# Sortier-Intervall in Ticks (1 Tick = 0,05s)
|
||
# Empfohlen: 10 (= 0,5s)
|
||
sort_interval_ticks: 10
|
||
|
||
# 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:
|
||
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"
|
||
line2: "&0"
|
||
line4: "&1"
|
||
target:
|
||
line1: "&6"
|
||
line2: "&0"
|
||
line3: "&f"
|
||
line4: "&1"
|
||
full:
|
||
line1: "&c"
|
||
line2: "&4"
|
||
line3: "&e"
|
||
line4: "&1"
|
||
rest:
|
||
line1: "&6"
|
||
line2: "&0"
|
||
line3: "&f"
|
||
line4: "&1"
|
||
trash:
|
||
line1: "&6"
|
||
line2: "&0"
|
||
line4: "&1"
|
||
|
||
# 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!"
|
||
not-your-chest: "&cDiese Truhe gehört dir nicht!"
|
||
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"
|
||
```
|
||
|
||
---
|
||
|
||
## 🗄️ Datenbank-Tabellen
|
||
|
||
Bei aktiviertem MySQL erstellt das Plugin folgende Tabellen automatisch:
|
||
|
||
| 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 |
|
||
|
||
---
|
||
|
||
## 🔧 Technische Details
|
||
|
||
- **Kompatibilität:** Paper, Spigot, Purpur (1.18.x – 1.21.x)
|
||
- **Java:** 17+
|
||
- **Datenbank:** YAML (Standard) oder MySQL/MariaDB (optional)
|
||
- **Performance:** Asynchrones Speichern der `players.yml`, konfigurierbarer Sortier-Intervall, TTL-Caching für öffentliche Truhen
|
||
|
||
---
|
||
|
||
## 💬 Support
|
||
|
||
[](https://discord.com/invite/FdRs4BRd8D)
|
||
|
||
---
|
||
|
||
**Copyright © 2026 - M_Viper - Alle Rechte vorbehalten**
|
||
|
||
Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt. |