# TicketSystem ![Version](https://img.shields.io/badge/Minecraft-1.18.x--1.21.x-green?style=for-the-badge) ![Java](https://img.shields.io/badge/Java-17+-orange?style=for-the-badge) ![Type](https://img.shields.io/badge/Type-Support-blue?style=for-the-badge) **TicketSystem** ist das flexible, moderne Support- und Feedback-Plugin für Minecraft-Server. Es bietet flexible Speicherung (MySQL oder Datei), automatische Archivierung, Migration, Export/Import, Statistiken, vollständige Validierung, Debug-Modus, eine übersichtliche config.yml mit Versionsprüfung und eine dynamische GUI. ## Features - **MySQL oder Datei-Speicherung** – YAML/JSON oder MySQL/MariaDB, jederzeit umschaltbar, Migration & Backup inklusive - **Automatische Backups & Migration** – Sicheres Wechseln zwischen Speicherarten, Datenverlust ausgeschlossen - **Export/Import** – Tickets einfach zwischen Servern oder Instanzen übertragen - **Statistiken & Archivierung** – Übersichtliche Auswertung, automatische Archivierung nach Zeitplan, manuelles Archivieren möglich - **Rollenbasierter Archiv-Zugriff** – Nur Spieler mit `ticket.archive` können das Archiv sehen, öffnen und Tickets permanent löschen – unabhängig von `ticket.admin` oder OP-Status - **Konfigurierbare Speicherpfade** – Daten- und Archivdateien frei wählbar, auch absolute Pfade - **Vollständige Validierung** – Fehlerhafte Tickets werden beim Laden erkannt, gemeldet und übersprungen - **Bessere Fehlerausgaben** – Alle Fehler erscheinen im Log und für Admins im Chat, inkl. Validierungs- und Speicherfehler - **Debug-Modus & Versionsprüfung** – Für Entwickler und Admins, erkennt veraltete config.yml automatisch - **Komplett anpassbar** – Nachrichten, Farben, Limits, Speicherpfade, Archiv-Intervall, Cooldowns, Rechte - **Unit-Tests** – Getestete Speicher-Logik für maximale Zuverlässigkeit - **Dynamische GUI** – Die Ticket-GUI passt sich automatisch der Ticketanzahl an (bis zu 54 Tickets pro Seite) - **Seiten-System** – Bei sehr vielen Tickets wird automatisch geblättert - **Performance** – Optimiert für große Server, alle Operationen laufen asynchron und ressourcenschonend - **Support & Erweiterbarkeit** – Sauberer Code, viele Hooks für eigene Erweiterungen --- ## Installation & Setup 1. **config.yml** anpassen (Speicherorte, Nachrichten, Limits, Farben, MySQL-Daten etc.) 2. **TicketSystem.jar** in den plugins-Ordner legen und Server starten 3. **/ticket**-Befehle nutzen (siehe unten) --- ## Beispiel-Konfiguration ```yaml config-version: 1 debug: false storage: type: "file" # "file" oder "mysql" data-file: "data.yml" archive-file: "archive.yml" mysql: host: "localhost" port: 3306 database: "tickets" user: "root" password: "password" useSSL: false auto-archive-interval-hours: 24 messages: prefix: "&7[&eTicket&7]" ticket-created: "&aDein Ticket wurde erstellt!" error: "&cEin Fehler ist aufgetreten!" ``` --- ## Befehle & Rechte ### Spieler-Befehle ``` /ticket - Ticket erstellen, verwalten, Status abfragen /ticket create - Neues Ticket erstellen /ticket list - Zeigt alle Tickets des Spielers /ticket close - Ticket schließen ``` ### Admin-Befehle ``` /ticket reload - Plugin neu laden /ticket migrate - Speicherart wechseln (Migration) /ticket export/import - Tickets exportieren/importieren /ticket stats - Statistiken anzeigen /ticket archive - Tickets archivieren /ticket claim - Ticket übernehmen /ticket forward - Ticket weiterleiten /ticket close - Ticket schließen ``` ### Permissions | Permission | Beschreibung | Standard | |---|---|---| | `ticket.create` | Ticket erstellen | ✅ alle Spieler | | `ticket.support` | Tickets einsehen, claimen & schließen | ❌ manuell vergeben | | `ticket.archive` | Archiv öffnen, einsehen & Tickets permanent löschen | ❌ manuell vergeben | | `ticket.admin` | Voller Zugriff inkl. Weiterleitung & Reload (beinhaltet `ticket.support`) | OP | > ⚠️ **Wichtig:** `ticket.archive` ist bewusst **nicht** in `ticket.admin` enthalten und wird auch **nicht automatisch an OPs vergeben**. Das Archiv-Recht muss explizit zugewiesen werden: > ``` > /lp user permission set ticket.archive true > ``` --- ## FAQ **Kann ich zwischen MySQL und Datei-Speicherung wechseln?** > Ja! Das Plugin migriert alle Daten automatisch und sicher. **Wie viele Tickets passen in die GUI?** > Bis zu 54 pro Seite, bei mehr Tickets wird automatisch geblättert. **Wie kann ich Nachrichten und Limits anpassen?** > Alle Texte, Farben und Limits findest du in der `config.yml`. **Wie aktiviere ich den Debug-Modus?** > Setze `debug: true` in der `config.yml`. **Wie kann ich Tickets exportieren/importieren?** > Mit `/ticket export` und `/ticket import` – ideal für Server-Umzüge. **Wer darf das Ticket-Archiv sehen?** > Nur Spieler mit der Permission `ticket.archive`. Diese wird weder automatisch an OPs noch an Admins vergeben und muss explizit zugewiesen werden. --- ## Vergleich mit anderen Plugins | Feature | TicketSystem | SimpleTickets | AdvancedTickets | |----------------------------------|:------------:|:-------------:|:---------------:| | Speicher-Migration | ✔️ | ⚠️ | ✖️ | | Automatische Backups | ✔️ | ⚠️ | ✖️ | | GUI | ✔️ | ⚠️ | ✖️ | | Archivierung | ✔️ | ⚠️ | ✖️ | | Rollenbasierter Archiv-Zugriff | ✔️ | ✖️ | ✖️ | | Update-Checker | ✔️ | ✖️ | ✖️ | --- ## Support & Community - [Discord Support](https://discord.com/invite/FdRs4BRd8D) - [Git Issues](https://git.viper.ipv64.net/M_Viper/TicketSystem/issues) Wir antworten in der Regel innerhalb von 24 Stunden! --- ## ⭐ Unterstütze das Projekt Wenn TicketSystem deinen Server bereichert hat, freuen wir uns über eine **5-Sterne Bewertung auf spigotmc**! Dein Feedback hilft uns, das Plugin weiter zu verbessern.