# 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 - **Dynamische GUI** – Die Ticket-GUI passt sich automatisch der Ticketanzahl an (bis zu 45 Tickets pro Seite), Item-Material richtet sich nach der konfigurierten Kategorie - **Seiten-System** – Bei sehr vielen Tickets wird automatisch geblättert - **Kategorie-System** – Frei konfigurierbare Kategorien (Name, Farbe, Material, Aliases) in der config.yml - **Prioritäten-System** – Vier Stufen (LOW / NORMAL / HIGH / URGENT), beim Erstellen wählbar und nachträglich via GUI oder Befehl änderbar - **Bewertungs-System** – Spieler können nach Ticket-Schließung den Support bewerten (`good` / `bad`), Ergebnisse in `/ticket stats` - **Kommentar-System** – Spieler und Support können Nachrichten direkt am Ticket hinterlassen - **Offline-Benachrichtigungen** – Verpasste Kommentar-, Schließ- und Status-Benachrichtigungen werden gespeichert und beim nächsten Login angezeigt - **Discord-Webhook** – Benachrichtigungen mit Embeds, konfigurierbarem Rollen-Ping und Kategorie/Priorität-Anzeige - **Blacklist** – Spieler vom Ticket-System ausschließen - **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. **TicketSystem.jar** in den `plugins`-Ordner legen und Server starten 2. **config.yml** anpassen (Speicherorte, Nachrichten, Limits, Farben, MySQL-Daten etc.) 3. **/ticket**-Befehle nutzen (siehe unten) --- ## Befehle & Rechte ### Spieler-Befehle ``` /ticket - Hilfe & Befehlsübersicht /ticket create [Kategorie] [Priorität] - Neues Ticket erstellen /ticket list - Eigene Tickets in der GUI anzeigen /ticket comment - Kommentar zu einem Ticket hinzufügen /ticket rate - Abgeschlossenes Ticket bewerten ``` ### Support/Admin-Befehle ``` /ticket claim - Ticket annehmen /ticket close [Kommentar] - Ticket schließen /ticket forward - Ticket weiterleiten /ticket setpriority - Priorität eines Tickets ändern /ticket reload - Konfiguration neu laden (inkl. Kategorien) /ticket stats - Statistiken anzeigen /ticket archive - Geschlossene Tickets archivieren /ticket blacklist [Spieler] [Grund] - Blacklist verwalten /ticket migrate - Speicherart wechseln /ticket export - Tickets exportieren /ticket import - Tickets importieren ``` ### Permissions | Permission | Beschreibung | Standard | |---|---|---| | `ticket.create` | Ticket erstellen | ✅ alle Spieler | | `ticket.support` | Tickets einsehen, claimen, schließen & Priorität ändern | ❌ manuell vergeben | | `ticket.archive` | Archiv öffnen, einsehen & Tickets permanent löschen | ❌ manuell vergeben | | `ticket.admin` | Voller Zugriff inkl. Weiterleitung, Reload & Blacklist (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 > ``` --- ## Kategorie & Priorität beim Erstellen Beim Erstellen eines Tickets können Kategorie und Priorität optional angegeben werden: ``` /ticket create → Kategorie: Standard, Priorität: NORMAL /ticket create bug → Kategorie: Bug, Priorität: NORMAL /ticket create high → Kategorie: Standard, Priorität: HIGH /ticket create bug high → Kategorie: Bug, Priorität: HIGH /ticket create question urgent → Kategorie: Frage, Priorität: URGENT ``` Verfügbare Prioritäten: `low`, `normal`, `high`, `urgent` (auch auf Deutsch: `niedrig`, `hoch`, `dringend`) Kategorien und ihre Aliases sind frei in der `config.yml` konfigurierbar. --- ## Discord-Webhook Der integrierte Discord-Webhook unterstützt: - **Embeds** mit Kategorie und Priorität als eigene Felder - **Rollen-Ping** (`@role`) pro Nachrichtentyp einzeln konfigurierbar - **Drei Ereignisse:** Neues Ticket, Ticket geschlossen, Ticket weitergeleitet Konfiguration in der `config.yml`: ```yaml discord: enabled: true webhook-url: "https://discord.com/api/webhooks/..." role-ping-id: "123456789012345678" # Discord-Rollen-ID (leer = kein Ping) messages: new-ticket: role-ping: true show-category: true show-priority: true ticket-closed: enabled: true role-ping: false ``` --- ## FAQ **Kann ich zwischen MySQL und Datei-Speicherung wechseln?** > Ja! Mit `/ticket migrate tomysql` oder `/ticket migrate tofile` werden alle Daten automatisch migriert. **Wie konfiguriere ich eigene Kategorien?** > In der `config.yml` unter `categories:` — Name, Farbe, Material (für die GUI) und Aliases frei wählbar. Änderungen werden mit `/ticket reload` übernommen. **Was passiert mit Benachrichtigungen wenn ein Spieler offline ist?** > Alle Kommentar-, Schließ- und Status-Benachrichtigungen werden gespeichert und beim nächsten Login gebündelt angezeigt. **Wie ändere ich die Priorität eines bestehenden Tickets?** > Als Support/Admin entweder per Befehl `/ticket setpriority ` oder direkt in der Detail-GUI per Klick. **Wie aktiviere ich den Debug-Modus?** > Setze `debug: true` in der `config.yml`. **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 mit Kategorie-Materialien | ✔️ | ⚠️ | ✖️ | | Archivierung | ✔️ | ⚠️ | ✖️ | | Rollenbasierter Archiv-Zugriff | ✔️ | ✖️ | ✖️ | | Kategorie-System (konfigurierbar)| ✔️ | ✖️ | ✖️ | | Prioritäten-System | ✔️ | ✖️ | ✖️ | | Offline-Benachrichtigungen | ✔️ | ✖️ | ✖️ | | Discord-Webhook mit Rollen-Ping | ✔️ | ✖️ | ✖️ | | Bewertungs-System | ✔️ | ✖️ | ✖️ | | 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.