TicketSystem ist die Komplettlösung für Support, Bug-Reports und Feedback auf Ihrem Server. Spieler erstellen Tickets direkt im Spiel, Admins verwalten alles komfortabel per GUI, Befehl oder über die
moderne Weboberfläche . Das Plugin ist für kleine und große Server optimiert, vollständig konfigurierbar und bietet viele Profi-Features für Support-Teams – inklusive einem vollständigen
FAQ-System ,
Performance-Caching , einer
sauberen Konsole ohne unnötigen Spam und einem
Web-Dashboard .
Was macht TicketSystem besonders?
MySQL oder Datei-Speicherung – YAML/JSON oder MySQL/MariaDB, jederzeit umschaltbar, Migration & Backup inklusive
Dynamische GUI – Die Ticket-GUI passt sich automatisch der Ticketanzahl an (bis zu 45 Tickets pro Seite)
Seiten-System – Bei sehr vielen Tickets wird automatisch geblättert
Kategorie- & Prioritäten-System – Frei konfigurierbar, mit Aliases und Material-Auswahl
Bewertungs- & Kommentar-System – Spieler und Support können Tickets bewerten und kommentieren
Offline-Benachrichtigungen – Verpasste Ticket-Events werden beim Login angezeigt
Discord-Webhook – Benachrichtigungen mit Embeds, Rollen-Ping und Server-Namen
BungeeCord-Unterstützung – Tickets, Teleports und Benachrichtigungen serverübergreifend
Moderne Weboberfläche (NEU) – Eigenes Web-Dashboard mit drei Rollen (Admin, Archive Viewer, Supporter), case-insensitiven Benutzernamen, Archiv-Ansicht und komfortabler Ticket- & FAQ-Verwaltung direkt im Browser
FAQ-System (NEU) – Eigene GUI mit Custom-Skull-Items, wahlweise faqs.yml oder MySQL-Speicherung, Migration per Befehl, vollständige In-Game- und Web-Verwaltung
Backup-System (NEU) – Automatische JSON-Backups per /ticket backup, gespeichert im backups/-Ordner mit Zeitstempel
HTTPS/TLS (NEU) – Optionaler eingebetteter HTTPS-Server via JKS-Keystore, TLS 1.2+, automatischer Fallback auf HTTP
MySQL Auto-Reconnect (NEU) – Automatische Wiederherstellung der Datenbankverbindung bei Unterbrechung
Brute-Force-Schutz (NEU) – IP-Sperre nach 5 Fehlversuchen im Web-Panel, 15 Minuten Sperrzeit
Archiv-Verwaltung im Web-Panel (NEU) – Archivierte Tickets einsehen, permanent löschen oder in die aktive Datenbank wiederherstellen
Benutzerverwaltung zur Laufzeit (NEU) – Web-Panel-Benutzer über die API anlegen, Passwort ändern und löschen – kein Neustart nötig
Rollenbasiertes Archiv-System: Nur Spieler mit ticket.archive können das Archiv sehen, Tickets darin öffnen und 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
Dynamische GUI: Die Ticket-GUI passt sich automatisch der Ticketanzahl an (bis zu 45 Tickets pro Seite)
Seiten-System: Bei sehr vielen Tickets wird automatisch geblättert
Kategorie- & Prioritäten-System: Frei konfigurierbar, mit Aliases und Material-Auswahl
Bewertungs- & Kommentar-System: Spieler und Support können Tickets bewerten und kommentieren
Offline-Benachrichtigungen: Verpasste Ticket-Events werden beim Login angezeigt
Discord-Webhook: Benachrichtigungen mit Embeds, Rollen-Ping und Server-Namen
BungeeCord-Unterstützung: Tickets, Teleports und Benachrichtigungen serverübergreifend
Moderne Weboberfläche: Eigene Web-GUI mit Benutzerkonten, Rollen (Admin/Supporter), automatischem SHA-256 Passwort-Hashing und Session-Management. Verwaltung von Tickets, FAQs, Kommentaren und Statistiken direkt im Browser.
FAQ-System: Eigene faqs.yml, Custom-Skull-GUI, Chat-gesteuerte Admin-Eingabe, Spieler-Lesemodus und Admin-Verwaltungsmodus in einer GUI
Performance-Caching: TTL-basierter In-Memory-Cache für häufig abgerufene Tickets – konfigurierbar, thread-sicher, automatische Invalidierung bei Änderungen
Saubere Konsole: Minimale Start-Logs, Netzwerkfehler beim Update-Check werden still ignoriert (nur Debug-Modus loggt Details)
PlaceholderAPI-Integration: Automatische Registrierung bei PAPI (optional) – Placeholder für Scoreboards, Chat-Plugins, HolographicDisplays u.v.m.
Support & Erweiterbarkeit: Sauberer Code, viele Hooks für eigene Erweiterungen
Verschiebe sie in den /plugins Ordner deines Servers
Starte den Server neu (kein reload!)
Die Konfigurationsdateien werden automatisch generiert – inkl. faqs.yml mit Beispiel-FAQs
Schritt 3: Grundkonfiguration
Öffne die config.yml im plugins/TicketSystem/ Ordner
Passe Speicherpfade, Nachrichten, Limits und Farben an
Aktiviere MySQL falls gewünscht und trage Zugangsdaten ein
Cache-Lebenszeit optional über cache-ttl-seconds anpassen (Standard: 60 Sek.)
Nutze /ticket reload um Änderungen zu laden
Schritt 4: Weboberfläche einrichten (Optional)
Setze in der config.yml unter web-panel.enabled den Wert auf true
Trage unter web-panel.users deine Admins und Supporter mit einem gewünschten Klartext-Passwort ein (dieses wird beim ersten Start automatisch sicher gehasht)
Passe den port (Standard: 8085) und die bind-address an
Setze bind-address auf "127.0.0.1", wenn du einen Reverse-Proxy (Nginx/Apache) nutzt
Greife über http://deine-server-ip:port auf das Dashboard zu und logge dich ein
Optional: Aktiviere HTTPS über web-panel.ssl.enabled: true und lege keystore.jks im Plugin-Ordner ab
Schritt 5: Erweiterte Features (Optional)
FAQs in-game per /ticket faq add anlegen oder direkt über das Web-Dashboard bearbeiten
Exportiere/Importiere Tickets zwischen Servern
Nutze die Statistik- und Archivierungsfunktionen
» Fertig! Dein Support-System ist einsatzbereit «
/ticket faq add <Frage> | <Antwort> - Neues FAQ hinzufügen
/ticket faq edit <ID> <Frage> | <Antwort> - FAQ bearbeiten
/ticket faq delete <ID> - FAQ löschen
/ticket faq reload - FAQs neu laden
/ticket faq migrate tomysql - FAQs aus faqs.yml in MySQL importieren
/ticket faq migrate tofile - FAQs aus MySQL in faqs.yml exportieren
/ticket backup - Datenbank-Backup erstellen (backups/-Ordner)
Permissions:
Code (Text):
ticket.create - Ticket erstellen (Standard: alle Spieler)
ticket.support - Tickets einsehen, claimen und schließen (Standard: false)
ticket.web - Zugriff auf die Weboberfläche (Benutzerkonto in config.yml erforderlich) (Standard: false)
ticket.archive - Ticket-Archiv öffnen, einsehen & permanent löschen (Standard: false)
ticket.admin - Voller Zugriff inkl. FAQ-Verwaltung, Weiterleitung & Reload (Standard: OP)
⚠ Wichtig:ticket.archive ist bewusst
nicht in
ticket.admin enthalten und wird auch
nicht automatisch an OPs vergeben.
Das Archiv-Recht muss in LuckPerms o.ä. explizit zugewiesen werden:
Code (Text):
/lp user <Spielername> permission set ticket.archive true
/lp user <Spielername> permission set ticket.web true
❯ Mehrsprachigkeit
TicketSystem unterstützt drei Sprachmodi über einen einzigen Schlüssel in der
config.yml:
Code (YAML):
language: de
# Deutsch – deutsche Texte & deutsche Befehlsnamen language: en
# Englisch – englische Texte & englische Befehlsnamen language: both
# Beides – deutsche Texte & beide Befehlsnamen gleichzeitig
⚠ Hinweis:command-language existiert nicht mehr – alles läuft über
language.
Befehlsnamen je Sprachmodus:
Befehl
language: de
language: en
language: both
create
/ticket erstellen
/ticket create
/ticket create (erstellen)
list
/ticket liste
/ticket list
/ticket list (liste)
comment
/ticket kommentar
/ticket comment
/ticket comment (kommentar)
rate
/ticket bewerten
/ticket rate
/ticket rate (bewerten)
claim
/ticket übernehmen
/ticket claim
/ticket claim (übernehmen)
close
/ticket schließen
/ticket close
/ticket close (schließen)
forward
/ticket weiterleiten
/ticket forward
/ticket forward (weiterleiten)
reload
/ticket neuladen
/ticket reload
/ticket reload (neuladen)
stats
/ticket statistik
/ticket stats
/ticket stats (statistik)
archive
/ticket archivieren
/ticket archive
/ticket archive (archivieren)
migrate
/ticket migrieren
/ticket migrate
/ticket migrate (migrieren)
export
/ticket exportieren
/ticket export
/ticket export (exportieren)
import
/ticket importieren
/ticket import
/ticket import (importieren)
blacklist
/ticket sperrliste
/ticket blacklist
/ticket blacklist (sperrliste)
setpriority
/ticket priorität
/ticket setpriority
/ticket setpriority (priorität)
faq
/ticket faq
/ticket faq
/ticket faq
top
/ticket top
/ticket top
/ticket top
{cmd_X}-Platzhalter in den Sprachdateien:
Alle Texte in
lang_de.yml /
lang_en.yml verwenden Platzhalter statt fester Befehlsnamen. Der
LanguageManager ersetzt diese automatisch anhand des aktiven Modus.
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
/ticket reload wechselt die gesamte Oberfläche sofort.
❯ Weboberfläche (Web-Dashboard)
Neben der In-Game-Verwaltung bietet TicketSystem nun ein
eigenes Web-Dashboard. Dies ist besonders praktisch für Admins und Supporter, die gerade nicht im Spiel sind, aber dennoch schnell auf Tickets reagieren müssen.
Einblick ins Dashboard:
— Admin-Ansicht —
— Supporter-Ansicht —
Funktionen der Weboberfläche:
Dashboard-Übersicht: Direkter Blick auf offene, geschlossene und in Bearbeitung befindliche Tickets.
Ticket-Verwaltung: Tickets kommentieren, schließen, Prioritäten ändern und Zuweisungen vornehmen – alles per Klick.
FAQ-Verwaltung: Häufige Fragen und Antworten direkt im Web-Dashboard hinzufügen, bearbeiten und löschen – ohne im Spiel sein zu müssen.
Live-Statistiken: Detaillierte Auswertungen der Support-Leistung (ähnlich wie bei /ticket stats).
Rollenbasierte Zugriffe: Drei Rollen: Admin (voller Zugriff inkl. FAQ & Archiv), Archive Viewer (Tickets + Archiv) und Supporter (nur Tickets).
Archiv-Ansicht: Admins und Archive Viewer können archivierte Tickets direkt im Web-Dashboard einsehen.
Flexible Benutzernamen: Groß-/Kleinschreibung wird beim Login ignoriert, Sonderzeichen (-, _, / usw.) sind erlaubt.
Sichere Authentifizierung: Passwörter werden automatisch als SHA-256-Hash gespeichert. Sessions laufen nach Inaktivität automatisch ab.
Brute-Force-Schutz: IP-Sperre nach 5 Fehlversuchen (15 Minuten), X-Forwarded-For wird bei Reverse-Proxy berücksichtigt.
Benutzerverwaltung zur Laufzeit: Benutzer über die REST-API anlegen, Passwort ändern oder löschen – ohne Serverneustart.
Archiv-Verwaltung: Admins können archivierte Tickets permanent löschen oder in die aktive Datenbank wiederherstellen.
Sicherheitshinweis: Wir empfehlen dringend, die Weboberfläche nicht direkt über das Internet ohne Absicherung anzubieten. Setze
bind-address auf
"127.0.0.1" und nutze einen
Reverse-Proxy (z.B. Nginx, Apache oder Cloudflare Tunnels), um HTTPS zu aktivieren und die Anfragen abzusichern.
Web-Panel Konfiguration (Ausschnitt):
Code (YAML):
# ============================================================ # WEB-PANEL # ============================================================ # Ermöglicht die Verwaltung von Tickets über den Browser. # Zugriff: http://<server-ip>:<port> # # FIREWALL: Port muss freigegeben sein! # # SICHERHEIT: # - Passwörter werden beim ersten Start automatisch als # SHA-256-Hash gespeichert (Klartext wird danach entfernt). # - Sessions laufen nach session-timeout-minuten Inaktivität ab. # - bind-address auf "127.0.0.1" setzen wenn nur lokaler # Zugriff gewünscht ist (z.B. hinter Nginx/Apache). # ============================================================ web-panel:
enabled: false
port: 8085
# Bind-Adresse: # "0.0.0.0" = alle Interfaces (direkt erreichbar) # "127.0.0.1" = nur lokal (Reverse-Proxy empfohlen) bind-address: "0.0.0.0"
# Session-Timeout in Minuten (nach Inaktivität) session-timeout-minutes: 60
logo-file: "logo.png"# Datei in plugins/TicketSystem/ ablegen brand-name: "TicketSystem"# optional: eigener Name links tagline: "Verwalte Support-Tickets..."# optional: eigener Untertitel
# ── Benutzer ────────────────────────────────────────────── # Rollen: # admin → Voller Zugriff: Tickets, FAQ, Weiterleiten, Archiv # supporter → Tickets anzeigen, claimen, schließen, kommentieren # archive_viewer → Wie supporter + Zugriff auf das Ticket-Archiv # # Benutzernamen: # - Groß-/Kleinschreibung wird beim Login ignoriert (case-insensitiv) # - Sonderzeichen erlaubt (z.B. Viper-Admin, support_01, max/muster) # # Passwort setzen: # Trage "password: deinPasswort" ein. # Beim nächsten Serverstart wird es automatisch gehasht # und durch "password-hash: ..." ersetzt. # ────────────────────────────────────────────────────────── users:
admin:
password: "aendere_mich" role: "admin" supporter:
password: "aendere_mich" role: "supporter" # Beispiel: Supporter mit Archiv-Zugriff # archiv-viewer: # password: "deinPasswort" # role: "archive_viewer"
❯ FAQ-System
Das FAQ-System erlaubt es Admins, häufige Fragen und Antworten zu pflegen. Alle Daten werden in einer eigenen
faqs.yml gespeichert – unabhängig von Tickets und Config. Die Verwaltung ist sowohl In-Game als auch über die
Weboberfläche möglich.
Für Spieler:
/ticket faq öffnet eine GUI mit Custom-Skull-Items – für jeden FAQ-Eintrag ein eigener Kopf mit individueller Textur
Klick auf einen Eintrag zeigt die vollständige Antwort im Chat
/ticket faq list listet alle FAQs direkt im Chat auf
Für Admins (In-Game & Web):
In-Game: Dieselbe GUI öffnet sich im Verwaltungsmodus: Klick → Aktions-GUI mit Bearbeiten & Löschen
In-Game: "Neues FAQ hinzufügen"-Button in der GUI – geführte Chat-Eingabe (erst Frage, dann Antwort)
Web-Dashboard: Komfortable Eingabefelder zum Erstellen, Ändern von Frage/Antwort und sofortigen Löschen von FAQs
Alternativ per Befehl: Frage und Antwort mit | trennen
FAQ-Speicherung – MySQL oder Datei:
FAQs werden automatisch im selben Modus gespeichert wie Tickets – kein separater Schalter nötig:
use-mysql: false → FAQs in faqs.yml (Standard, Einzelserver)
use-mysql: true → FAQs in MySQL (Tabellen: faq_entries, faq_categories) – empfohlen für BungeeCord / Multi-Server
Bestehende FAQs aus der
faqs.yml lassen sich mit
/ticket faq migrate in die Datenbank importieren. Duplikate werden automatisch übersprungen.
Beispiel-Befehle (In-Game):
Code (Text):
/ticket faq add Wie melde ich einen Bug? | Nutze /ticket create bug <Beschreibung>.
/ticket faq edit 1 Neue Frage? | Neue Antwort hier.
/ticket faq delete 3
/ticket faq reload
/ticket faq migrate
faqs.yml Format:
Code (YAML):
faqs:
1:
question: "Wie erstelle ich ein Ticket?" answer: "Nutze /ticket create [Kategorie] [Beschreibung]." 2:
question: "Wie lange dauert die Bearbeitung?" answer: "Unser Team bearbeitet Tickets so schnell wie möglich."
Beim ersten Start werden automatisch vier Beispiel-FAQs erstellt.
❯ Performance-Caching
TicketSystem hält häufig abgerufene Tickets in einem
TTL-basierten In-Memory-Cache vor. Das reduziert die Datenbankbelastung bei GUI-Zugriffen, Kommentaren, Bewertungen und
Web-API Aufrufen deutlich.
Standard-Lebenszeit: 60 Sekunden (konfigurierbar: cache-ttl-seconds in config.yml)
Automatische Invalidierung: Bei Claim, Close, Prioritätsänderung usw. wird der Cache-Eintrag sofort gelöscht
Regelmäßige Bereinigung: Abgelaufene Einträge werden alle 5 Minuten entfernt
Transparenz: Aktueller Cache-Status ist in /ticket stats einsehbar
Thread-sicher: Kann aus asynchronen Tasks heraus lese- und schreibend aufgerufen werden
❯ Backup-System
Mit
/ticket backup erstellt TicketSystem sofort ein Backup der aktuellen Ticket-Daten.
MySQL-Modus: Exportiert alle aktiven Tickets als JSON-Datei
Datei-Modus: Kopiert die aktuelle data.yml / data.json
Automatisch: Wird vor jeder Datenmigration automatisch erstellt
❯ PlaceholderAPI-Integration
TicketSystem registriert automatisch Placeholder bei
PlaceholderAPI (PAPI), sobald dieses Plugin installiert ist – kein Eintrag in der config.yml nötig. Prefix:
ticketsystem
Verfügbare Placeholder:
Placeholder
Für wen
Beschreibung
%ticketsystem_my_open%
Spieler
Eigene aktive Tickets (OPEN + CLAIMED + FORWARDED)
%ticketsystem_admin_open%
Supporter, Admin
Alle offenen Tickets (Status: OPEN)
%ticketsystem_admin_claimed%
Admin
Alle Tickets in Bearbeitung (Status: CLAIMED)
%ticketsystem_admin_rating_good%
Admin
Positive Bewertungen gesamt
%ticketsystem_admin_rating_bad%
Admin
Negative Bewertungen gesamt
%ticketsystem_admin_rating_total%
Admin
Alle Bewertungen gesamt
%ticketsystem_admin_rating_percent%
Admin
Prozentsatz positiver Bewertungen (oder - wenn keine)
⚠ Hinweis: PlaceholderAPI ist
optional. Das Plugin erkennt automatisch ob PAPI installiert ist und registriert die Placeholder nur dann. Ohne PAPI läuft TicketSystem vollständig normal weiter.
❯ HTTPS / TLS
Der eingebettete Web-Server unterstützt optionales HTTPS via Java Keystore.
Discord Server: Schneller Support von uns und der Community
GitHub: Bug-Reports, Feature-Requests und Changelogs
Ein großes Dankeschön an Mucki2020 für das Melden von Bugs & Fehlern!
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 ! Dein Feedback hilft uns, das Plugin weiter zu verbessern.