Files
TicketSystem/README.md
2026-02-20 23:49:35 +00:00

182 lines
9.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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] <Text> - Neues Ticket erstellen
/ticket list - Eigene Tickets in der GUI anzeigen
/ticket comment <ID> <Nachricht> - Kommentar zu einem Ticket hinzufügen
/ticket rate <ID> <good|bad> - Abgeschlossenes Ticket bewerten
```
### Support/Admin-Befehle
```
/ticket claim <ID> - Ticket annehmen
/ticket close <ID> [Kommentar] - Ticket schließen
/ticket forward <ID> <Spieler> - Ticket weiterleiten
/ticket setpriority <ID> <low|normal|high|urgent> - Priorität eines Tickets ändern
/ticket reload - Konfiguration neu laden (inkl. Kategorien)
/ticket stats - Statistiken anzeigen
/ticket archive - Geschlossene Tickets archivieren
/ticket blacklist <add|remove|list> [Spieler] [Grund] - Blacklist verwalten
/ticket migrate <tomysql|tofile> - Speicherart wechseln
/ticket export <Dateiname> - Tickets exportieren
/ticket import <Dateiname> - 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 <Spielername> 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 <Text> → Kategorie: Standard, Priorität: NORMAL
/ticket create bug <Text> → Kategorie: Bug, Priorität: NORMAL
/ticket create high <Text> → Kategorie: Standard, Priorität: HIGH
/ticket create bug high <Text> → Kategorie: Bug, Priorität: HIGH
/ticket create question urgent <Text> → 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 <ID> <Priorität>` 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.