TicketSystem
TicketSystem ist das flexible, moderne Support- und Feedback-Plugin für Minecraft-Server (Spigot/Paper 1.18.x–1.21.x, Java 17+). Es bietet flexible Speicherung, automatische Backups & Migration, Export/Import, Statistiken, dynamische GUI, Kategorie- und Prioritäten-System, Bewertungs- und Kommentar-System, FAQ-System, Discord-Webhook und volle BungeeCord-Unterstützung.
Features
- MySQL oder Datei-Speicherung (YAML/JSON oder MySQL/MariaDB, jederzeit umschaltbar)
- Automatische Backups & Migration
- Export/Import von Tickets
- Statistiken & Archivierung
- Rollenbasierter Archiv-Zugriff
- Konfigurierbare Speicherpfade
- Vollständige Validierung & Fehlerausgaben
- Debug-Modus & Versionsprüfung
- Anpassbare Nachrichten, Farben, Limits, Speicherpfade, Archiv-Intervall, Cooldowns, Rechte
- Dynamische GUI mit Seiten-System
- Kategorie- und Prioritäten-System
- Bewertungs- und Kommentar-System
- Offline-Benachrichtigungen
- Discord-Webhook mit Embeds & Rollen-Ping
- Blacklist für Spieler
- FAQ-System mit eigenem GUI, eigener Datei (
faqs.yml) und vollständiger In-Game-Verwaltung durch Admins - Performance-Caching – TTL-basierter In-Memory-Cache reduziert Datenbankabfragen spürbar
- Saubere Konsole – minimale Start-Logs, kein unnötiger Spam
- Erweiterbarkeit: viele Hooks
- BungeeCord-Unterstützung: serverübergreifende Tickets, Teleports, Weiterleitungen, Benachrichtigungen
Installation & Setup
- TicketSystem.jar in den plugins-Ordner legen und Server starten
config.ymlanpassen (Speicherorte, Nachrichten, Limits, Farben, MySQL-Daten etc.)/ticket-Befehle nutzen
Befehle & Rechte
Übersicht der Befehle
| Befehl | Beschreibung | Nutzergruppe |
|---|---|---|
/ticket |
Hilfe & Übersicht | Spieler, Support |
/ticket create [Kategorie] [Priorität] <Text> |
Ticket erstellen | Spieler |
/ticket list |
Eigene Tickets in der GUI anzeigen | Spieler |
/ticket comment <ID> <Nachricht> |
Kommentar hinzufügen | Spieler, Support |
/ticket rate <ID> <good|bad> |
Support bewerten | Spieler |
/ticket faq |
FAQ-GUI öffnen (häufige Fragen) | Spieler |
/ticket faq list |
FAQs im Chat auflisten | Spieler |
/ticket faq add <Frage> | <Antwort> |
Neues FAQ hinzufügen | Admin |
/ticket faq edit <ID> <Frage> | <Antwort> |
Bestehendes FAQ bearbeiten | Admin |
/ticket faq delete <ID> |
FAQ löschen | Admin |
/ticket faq reload |
FAQs aus faqs.yml neu laden | Admin |
/ticket claim <ID> |
Ticket annehmen | Support/Admin |
/ticket close <ID> [Kommentar] |
Ticket schließen | Support/Admin |
/ticket forward <ID> <Spieler> |
Ticket weiterleiten | Support/Admin |
/ticket setpriority <ID> <low|normal|high|urgent> |
Priorität ändern | Support/Admin |
/ticket reload |
Konfiguration neu laden | Admin |
/ticket stats |
Statistiken anzeigen | Admin |
/ticket archive |
Tickets archivieren | Admin |
/ticket blacklist <add|remove|list> [Spieler] [Grund] |
Blacklist verwalten | Admin |
/ticket migrate <tomysql|tofile> |
Speicherart wechseln | Admin |
/ticket export <Dateiname> |
Tickets exportieren | Admin |
/ticket import <Dateiname> |
Tickets importieren | Admin |
/ticket teleport <ID> |
Teleport zu Ticket (BungeeCord) | Support/Admin |
Rechte
| 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, Tickets permanent löschen | manuell vergeben |
ticket.admin |
Voller Zugriff inkl. Weiterleitung, Reload, Blacklist, FAQ-Verwaltung | OP |
ticket.archiveist nicht inticket.adminenthalten und muss explizit vergeben werden.
Mehrsprachigkeit
TicketSystem unterstützt drei Sprachmodi, die über einen einzigen Schlüssel in der config.yml gesteuert werden:
language: de # Deutsch – deutsche Texte & deutsche Befehlsnamen
language: en # Englisch – englische Texte & englische Befehlsnamen
language: both # Beides – deutsche Texte & beide Befehlsnamen gleichzeitig
command-languageexistiert nicht mehr. Alle Einstellungen laufen überlanguage.
Befehlsnamen je Sprachmodus
| Interner Schlüssel | language: de |
language: en |
language: both |
|---|---|---|---|
create |
/ticket erstellen |
/ticket create |
/ticket create §8(§7erstellen§8) |
list |
/ticket liste |
/ticket list |
/ticket list §8(§7liste§8) |
comment |
/ticket kommentar |
/ticket comment |
/ticket comment §8(§7kommentar§8) |
rate |
/ticket bewerten |
/ticket rate |
/ticket rate §8(§7bewerten§8) |
claim |
/ticket übernehmen |
/ticket claim |
/ticket claim §8(§7übernehmen§8) |
close |
/ticket schließen |
/ticket close |
/ticket close §8(§7schließen§8) |
forward |
/ticket weiterleiten |
/ticket forward |
/ticket forward §8(§7weiterleiten§8) |
reload |
/ticket neuladen |
/ticket reload |
/ticket reload §8(§7neuladen§8) |
stats |
/ticket statistik |
/ticket stats |
/ticket stats §8(§7statistik§8) |
archive |
/ticket archivieren |
/ticket archive |
/ticket archive §8(§7archivieren§8) |
migrate |
/ticket migrieren |
/ticket migrate |
/ticket migrate §8(§7migrieren§8) |
export |
/ticket exportieren |
/ticket export |
/ticket export §8(§7exportieren§8) |
import |
/ticket importieren |
/ticket import |
/ticket import §8(§7importieren§8) |
blacklist |
/ticket sperrliste |
/ticket blacklist |
/ticket blacklist §8(§7sperrliste§8) |
setpriority |
/ticket priorität |
/ticket setpriority |
/ticket setpriority §8(§7priorität§8) |
faq |
/ticket faq |
/ticket faq |
/ticket faq |
top |
/ticket top |
/ticket top |
/ticket top |
{cmd_X}-Platzhalter in den Sprachdateien
Alle Hilfetexte, Fehlermeldungen und GUI-Hinweise in lang_de.yml / lang_en.yml verwenden {cmd_X}-Platzhalter statt fester Befehlsnamen. Beim Anzeigen ersetzt der LanguageManager diese automatisch anhand des aktiven Sprachmodus.
| Platzhalter | Beispiel-Ausgabe (language: en) |
|---|---|
{cmd_create} |
/ticket create |
{cmd_list} |
/ticket list |
{cmd_comment} |
/ticket comment |
{cmd_rate} |
/ticket rate |
{cmd_claim} |
/ticket claim |
{cmd_close} |
/ticket close |
{cmd_forward} |
/ticket forward |
{cmd_reload} |
/ticket reload |
{cmd_stats} |
/ticket stats |
{cmd_archive} |
/ticket archive |
{cmd_migrate} |
/ticket migrate |
{cmd_export} |
/ticket export |
{cmd_import} |
/ticket import |
{cmd_blacklist} |
/ticket blacklist |
{cmd_setpriority} |
/ticket setpriority |
{cmd_faq} |
/ticket faq |
{cmd_top} |
/ticket top |
Verwendungsbeispiel in der Sprachdatei:
help:
create: "&e{cmd_create} [Kategorie] <Text> &7– Neues Ticket erstellen"
# → language: de gibt aus: /ticket erstellen [Kategorie] <Text>
# → language: en gibt aus: /ticket create [Kategorie] <Text>
GUI-Sprachanpassung
Seit dieser Version sind auch alle GUI-Texte vollständig sprachabhängig – Inventar-Titel, Item-Lore-Labels und Action-Buttons werden aus gui.item.* in der aktiven Sprachdatei geladen. Nach einem /ticket reload mit geändertem language-Wert wechselt die gesamte Oberfläche sofort.
FAQ-System
Das FAQ-System ermöglicht es Admins, häufige Fragen und Antworten direkt im Spiel zu verwalten. Spieler können die FAQs per GUI oder Befehl einsehen.
Für Spieler
/ticket faq – öffnet die FAQ-GUI mit Custom-Skull-Items
/ticket faq list – listet alle FAQs im Chat auf
In der GUI wird für jeden FAQ-Eintrag ein Custom-Skull-Item mit individueller Textur angezeigt. Ein Klick auf einen Eintrag zeigt die vollständige Antwort im Chat.
Für Admins
/ticket faq add Wie melde ich einen Bug? | Nutze /ticket create bug <Beschreibung>.
/ticket faq edit 1 Neue Frage? | Neue Antwort.
/ticket faq delete 1
/ticket faq reload
Alternativ können FAQs auch direkt über die Admin-FAQ-GUI verwaltet werden (öffnet sich automatisch wenn ticket.admin-Berechtigung vorhanden). Ein Klick auf einen Eintrag öffnet eine Aktions-GUI mit den Optionen Bearbeiten und Löschen. Neue FAQs lassen sich ebenfalls per Schaltfläche in der GUI hinzufügen – das Plugin führt den Admin Schritt für Schritt durch eine Chat-Eingabe.
faqs.yml
Alle FAQs werden in einer eigenen Datei plugins/TicketSystem/faqs.yml gespeichert:
faqs:
1:
question: "Wie erstelle ich ein Ticket?"
answer: "Nutze den Befehl /ticket create [Kategorie] [Beschreibung]."
2:
question: "Wie lange dauert die Bearbeitung?"
answer: "Unser Support-Team bearbeitet Tickets so schnell wie möglich."
Beim ersten Start werden automatisch vier Beispiel-FAQs erstellt.
Performance-Caching
Ab dieser Version hält TicketSystem häufig abgerufene Tickets in einem TTL-basierten In-Memory-Cache vor. Das reduziert die Datenbankbelastung bei wiederholten Zugriffen (GUI, Kommentare, Bewertungen) deutlich.
- Standard-Lebenszeit: 60 Sekunden (konfigurierbar:
cache-ttl-secondsinconfig.yml) - Der Cache wird bei Ticket-Änderungen (Claim, Close, Priorität usw.) automatisch invalidiert
- Regelmäßige Bereinigung abgelaufener Einträge alle 5 Minuten
- Der aktuelle Cache-Status ist in
/ticket statseinsehbar
Kategorie & Priorität
Beim Erstellen eines Tickets können Kategorie und Priorität optional angegeben werden:
| Befehl | Kategorie | Priorität |
|---|---|---|
/ticket create <Text> |
Standard | NORMAL |
/ticket create bug <Text> |
Bug | NORMAL |
/ticket create high <Text> |
Standard | HIGH |
/ticket create bug high <Text> |
Bug | HIGH |
/ticket create question urgent <Text> |
Frage | URGENT |
Verfügbare Prioritäten: low, normal, high, urgent (auch deutsch: niedrig, hoch, dringend)
Kategorien und Aliases sind frei in der config.yml konfigurierbar.
Discord-Webhook
- Embeds mit Kategorie & Priorität
- Rollen-Ping pro Nachrichtentyp
- Drei Ereignisse: neues Ticket, Ticket geschlossen, Ticket weitergeleitet
Konfiguration in config.yml:
discord:
enabled: true
webhook-url: "https://discord.com/api/webhooks/..."
role-ping-id: "123456789012345678"
messages:
new-ticket:
role-ping: true
show-category: true
show-priority: true
ticket-closed:
enabled: true
role-ping: false
BungeeCord-Unterstützung
TicketSystem bietet volle Unterstützung für BungeeCord-Netzwerke:
- Tickets von jedem Server im Netzwerk
- Teleport zu Tickets auf anderen Servern (
/ticket teleport <ID>) - Tickets im Archiv und GUI serverübergreifend
- Benachrichtigungen an alle Server
- Discord-Webhooks zeigen Server-Namen
- Tickets an Supporter auf anderen Servern weiterleiten
Voraussetzungen:
spigot.yml:bungeecord: trueconfig.yml:bungeecord: true,server-namepro Server- TicketSystem.jar auf allen Spigot-Servern
- Alle Server nutzen dieselbe MySQL-Datenbank
Vergleich mit anderen Plugins
| Feature | TicketSystem | SimpleTickets | AdvancedTickets |
|---|---|---|---|
| Speicher-Migration | ✔️ | ⚠️ | ✖️ |
| Automatische Backups | ✔️ | ⚠️ | ✖️ |
| GUI mit Kategorien | ✔️ | ⚠️ | ✖️ |
| Archivierung | ✔️ | ⚠️ | ✖️ |
| Rollenbasierter Archiv-Zugriff | ✔️ | ✖️ | ✖️ |
| Kategorie-System | ✔️ | ✖️ | ✖️ |
| Prioritäten-System | ✔️ | ✖️ | ✖️ |
| FAQ-System | ✔️ | ✖️ | ✖️ |
| Performance-Caching | ✔️ | ✖️ | ✖️ |
| Offline-Benachrichtigungen | ✔️ | ✖️ | ✖️ |
| Discord-Webhook | ✔️ | ✖️ | ✖️ |
| Bewertungs-System | ✔️ | ✖️ | ✖️ |
| Update-Checker | ✔️ | ✖️ | ✖️ |
| BungeeCord-Unterstützung | ✔️ | ✖️ | ✖️ |
Legende: ✔️ Vollständige Unterstützung · ⚠️ Eingeschränkt · ✖️ Nicht vorhanden
FAQ
Kann ich zwischen MySQL und Datei-Speicherung wechseln?
Ja! Mit
/ticket migrate tomysqloder/ticket migrate tofilewerden alle Daten automatisch migriert.
Wie konfiguriere ich eigene Kategorien?
In der
config.ymluntercategories:– Name, Farbe, Material und Aliases frei wählbar. Änderungen mit/ticket reloadübernehmen.
Wie verwalte ich FAQs?
Mit
/ticket faqöffnest du die GUI. Als Admin kannst du über die GUI oder per/ticket faq add|edit|deleteFAQs verwalten. Alle Daten liegen infaqs.yml.
Was passiert mit Benachrichtigungen wenn ein Spieler offline ist?
Alle Benachrichtigungen werden gespeichert und beim nächsten Login angezeigt.
Wie ändere ich die Priorität eines Tickets?
Als Support/Admin per
/ticket setpriority <ID> <Priorität>oder direkt in der GUI.
Wie aktiviere ich den Debug-Modus?
debug: truein derconfig.ymlsetzen.
Wer darf das Ticket-Archiv sehen?
Nur Spieler mit
ticket.archive. Muss explizit vergeben werden.
Wie funktioniert Teleport bei BungeeCord?
Mit
/ticket teleport <ID>wirst du automatisch auf den richtigen Server und zur Ticket-Position teleportiert.
Wie lange werden Tickets gecacht?
Standardmäßig 60 Sekunden. Über
cache-ttl-secondsin derconfig.ymlanpassbar. Der Cache wird bei Änderungen sofort invalidiert.
Support, Community & Motivation
Du hast Fragen, brauchst Hilfe oder möchtest Feedback geben?
Wir antworten in der Regel innerhalb von 24 Stunden!
Dein Feedback zählt: Wenn TicketSystem deinen Server bereichert hat, freuen wir uns über eine 5-Sterne Bewertung auf SpigotMC! Jede Rückmeldung hilft, das Plugin weiter zu verbessern und die Community zu stärken.