# AutoSortChest *Intelligente Lagerverwaltung & automatisierte Sortiersysteme ohne Redstone-Chaos* ![Version](https://img.shields.io/badge/Version-1.18.x--1.21.x-green.svg) ![Java](https://img.shields.io/badge/Java-17+-orange.svg) ![Type](https://img.shields.io/badge/Type-Utility-blue.svg) --- ## Ü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- und Rest-Truhen 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. - **Dynamic Item Update:** Ändere das sortierte Item einer Truhe jederzeit per Rechtsklick – kein Abbauen nötig! - **Privatsphäre-Modus:** Schalte Truhen per Shift-Rechtsklick zwischen Öffentlich und Privat um. - **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. - **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. --- ## 📖 Einrichtung ### 1. Eingangstruhe (Input) Hier wirfst du alle unsortierten Items hinein. 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. --- ### 3. Rest-Truhe (Fallback) Das Auffangbecken für alle Items ohne Zieltruhe. ``` [asc] rest ``` --- ## 🔐 Zugriff & Modi | Aktion | Beschreibung | |--------|-------------| | **Shift + Rechtsklick** (leere Hand) auf Schild/Truhe | Wechselt zwischen Privat und Öffentlich | | **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**. --- ## 🌐 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. **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) | ### 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_.yml`). Ist die Datei bereits leer, wird kein unnötiges Backup angelegt. --- ## ⚙️ Konfiguration (config.yml) ```yaml # Version der Konfigurationsdatei version: "2.0" # Debug-Modus (nur für Entwicklung) debug: false # 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 # Sprache: 'de' oder 'en' language: "de" # Welten, in denen das Plugin deaktiviert ist world_blacklist: - "world_nether" - "world_the_end" # Sortier-Intervall in Ticks (1 Tick = 0,05s) sort_interval_ticks: 5 # Maximale Anzahl Zieltruhen pro Spielergruppe chest_limits: default: 5 vip: 100 # Schildfarben (Minecraft-Farbcodes) sign-colors: input: line1: "&6" # [asc] line2: "&0" # input line4: "&1" # Spielername target: line1: "&6" # [asc] line2: "&0" # ziel line3: "&f" # Item-Typ line4: "&1" # Spielername full: line1: "&c" line2: "&4" line3: "&e" line4: "&1" rest: line1: "&6" line2: "&0" line3: "&f" line4: "&1" # Nachrichten 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!" 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!" reload-success: "&aKonfiguration erfolgreich neu geladen!" mode-changed: "&aModus gewechselt: &e%mode%" mode-public: "&aÖffentlich" mode-private: "&cPrivat" ``` --- ## 🗄️ 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 | | `asc_rest_chests` | Rest-/Fallback-Truhen | | `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:** Ressourcenschonende Sortier-Algorithmen mit konfigurierbarem Intervall --- ## 💬 Support [![Discord](https://img.shields.io/badge/Discord-Support-7289DA?style=for-the-badge&logo=discord)](https://discord.com/invite/FdRs4BRd8D) --- *Viper Plugins © 2026 – Effizienz für deinen Server*