From 673ed06998c364a5cbcf21b8f368e0236146af25 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Wed, 4 Mar 2026 09:13:51 +0000 Subject: [PATCH] README.md aktualisiert --- README.md | 230 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 194 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index b80d92d..d02c37d 100644 --- a/README.md +++ b/README.md @@ -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.` | 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,23 +282,63 @@ 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!" - 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" + 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" ``` --- @@ -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 ---