ModsJava
TicketSystem
Das flexible, moderne Ticketsystem für Support, Feedback & Bugreports – mit MySQL/YAML, dynamischer. Free Minecraft Java mod for 1.20, 1.20.6, 1.21.
⬇ Download on Spigot
Ticketsystem
Das flexible, moderne Support- und Feedback-System für Minecraft-Server
⭐ Für Support, Bug-Reports & Feedback | Null-Lag | Produktionsbereit ⭐
Das flexible, moderne Support- und Feedback-System für Minecraft-Server
⭐ Für Support, Bug-Reports & Feedback | Null-Lag | Produktionsbereit ⭐
❯ Über TicketSystem
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
- 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
- Rollenbasiertes Archiv-System – Nur Spieler mit der Archiv-Permission können geschlossene Tickets sehen, öffnen und dauerhaft löschen
- 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)
- 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
- Performance-Caching (NEU) – TTL-basierter In-Memory-Cache reduziert Datenbankabfragen spürbar
- Saubere Konsole (NEU) – Minimale Start-Logs, kein unnötiger Spam, Debug-Modus separat steuerbar
- PlaceholderAPI-Integration (NEU) – Ticket-Statistiken als PAPI-Placeholder für Scoreboards, Chat-Plugins u.v.m.
- Support & Erweiterbarkeit – Sauberer Code, viele Hooks für eigene Erweiterungen
»» Keine Datenverluste. Keine Limits. Pure Zuverlässigkeit. ««
❯ ✨ Features im Detail
Spoiler: Alle Features
- MySQL oder Datei-Speicherung: YAML/JSON oder MySQL/MariaDB, jederzeit umschaltbar – Migration und 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
- 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
- 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)
- 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
❯ ⚙️ Installation & Setup
Schritt 1: Requirements
- Minecraft Server: Paper/Spigot 1.18.x–1.21.x
- Java Version: Java 17 oder höher
- Optional: MySQL/MariaDB (für Datenbankbetrieb & Web-Oberfläche empfohlen)
Schritt 2: Installation
- Lade die TicketSystem.jar herunter
- 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 «
❯ Beispiel-Konfiguration
Spoiler: Beispiel: config.yml (Basis)
# TicketSystem - Hauptkonfiguration
config-version : 1
debug : false
cache-ttl-seconds : 60 # Lebenszeit gecachter Tickets in Sekunden
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
# (Web-Panel Konfiguration siehe separater Spoiler unten)
messages:
prefix : "&7[&eTicket&7]"
ticket-created : "&aDein Ticket wurde erstellt!"
error : "&cEin Fehler ist aufgetreten!"
Code (YAML):
# TicketSystem - Hauptkonfiguration
config-version : 1
debug : false
cache-ttl-seconds : 60 # Lebenszeit gecachter Tickets in Sekunden
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
# (Web-Panel Konfiguration siehe separater Spoiler unten)
messages:
prefix : "&7[&eTicket&7]"
ticket-created : "&aDein Ticket wurde erstellt!"
error : "&cEin Fehler ist aufgetreten!"
❯ Befehle & Permissions
Spieler-Befehle:
Code (Text):
/ticket - Hilfe & Übersicht
/ticket create <Nachricht> - Neues Ticket erstellen
/ticket list - Eigene Tickets in der GUI anzeigen
/ticket comment <ID> <Nachricht> - Kommentar hinzufügen
/ticket rate <ID> <good|bad> - Support bewerten
/ticket faq - FAQ-GUI öffnen (häufige Fragen)
/ticket faq list - FAQs im Chat auflisten
Admin-Befehle:
Code (Text):
/ticket reload - Plugin neu laden (inkl. FAQs & Cache leeren)
/ticket migrate - Speicherart wechseln (Migration)
/ticket export/import - Tickets exportieren/importieren
/ticket stats - Statistiken + Cache-Status anzeigen
/ticket archive - Tickets archivieren
/ticket claim <ID> - Ticket übernehmen
/ticket forward <ID> <Spieler> - Ticket weiterleiten
/ticket close <ID> - Ticket schließen
/ticket setpriority <ID> <low|normal|high|urgent> - Priorität ändern
/ticket blacklist <add|remove|list> [Spieler] [Grund] - Blacklist verwalten
/ticket teleport <ID> - Teleport zu Ticket (BungeeCord)
/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:
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
Spoiler: Sprachmodi & Platzhalter
TicketSystem unterstützt drei Sprachmodi über einen einzigen Schlüssel in der
config.yml:
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:
{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.
Beispiel in der Sprachdatei:
help:
create : "&e{cmd_create} [Kategorie] <Text> &7– Neues Ticket erstellen"
# language: de → /ticket erstellen [Kategorie] <Text>
# language: en → /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 /ticket reload wechselt die gesamte Oberfläche sofort.
Code (YAML):
language : de # Deutsch – deutsche Texte & deutsche Befehlsnamen
language : en # Englisch – englische Texte & englische Befehlsnamen
language : both # Beides – deutsche Texte & beide Befehlsnamen gleichzeitig
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.
| Platzhalter | language: de | language: en |
| {cmd_create} | /ticket erstellen | /ticket create |
| {cmd_list} | /ticket liste | /ticket list |
| {cmd_comment} | /ticket kommentar | /ticket comment |
| {cmd_rate} | /ticket bewerten | /ticket rate |
| {cmd_claim} | /ticket übernehmen | /ticket claim |
| {cmd_close} | /ticket schließen | /ticket close |
| {cmd_forward} | /ticket weiterleiten | /ticket forward |
| {cmd_reload} | /ticket neuladen | /ticket reload |
| {cmd_stats} | /ticket statistik | /ticket stats |
| {cmd_archive} | /ticket archivieren | /ticket archive |
| {cmd_migrate} | /ticket migrieren | /ticket migrate |
| {cmd_export} | /ticket exportieren | /ticket export |
| {cmd_import} | /ticket importieren | /ticket import |
| {cmd_blacklist} | /ticket sperrliste | /ticket blacklist |
| {cmd_setpriority} | /ticket priorität | /ticket setpriority |
| {cmd_faq} | /ticket faq | /ticket faq |
| {cmd_top} | /ticket top | /ticket top |
Beispiel in der Sprachdatei:
Code (YAML):
help:
create : "&e{cmd_create} [Kategorie] <Text> &7– Neues Ticket erstellen"
# language: de → /ticket erstellen [Kategorie] <Text>
# language: en → /ticket create [Kategorie] <Text>
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)
Spoiler: Details zur Web-GUI & Konfiguration
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:
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):
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):
Spoiler: config.yml - Web-Panel
# ============================================================
# 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"
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
Spoiler: Details & Beispiele
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:
Für Admins (In-Game & Web):
FAQ-Speicherung – MySQL oder Datei:
FAQs werden automatisch im selben Modus gespeichert wie Tickets – kein separater Schalter nötig:
Beispiel-Befehle (In-Game):
/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:
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.
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
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
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."
❯ Performance-Caching
Spoiler: Details
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
Spoiler: Details
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
- Speicherort: plugins/TicketSystem/backups/backup_tickets_YYYY-MM-DD_HH-mm-ss.json
- Automatisch: Wird vor jeder Datenmigration automatisch erstellt
❯ PlaceholderAPI-Integration
Spoiler: Verfügbare Placeholder & Beispiele
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:
Verwendungsbeispiele (z.B. im Scoreboard):
# Spieler-Zeile
Meine Tickets: %ticketsystem_my_open%
# Supporter-Zeile
Offen: %ticketsystem_admin_open%
# Admin-Zeilen
Offen: %ticketsystem_admin_open% | Aktiv: %ticketsystem_admin_claimed%
Bewertung: %ticketsystem_admin_rating_good% / %ticketsystem_admin_rating_bad% (%ticketsystem_admin_rating_percent%%)
⚠ 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.
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) |
Verwendungsbeispiele (z.B. im Scoreboard):
Code (Text):
# Spieler-Zeile
Meine Tickets: %ticketsystem_my_open%
# Supporter-Zeile
Offen: %ticketsystem_admin_open%
# Admin-Zeilen
Offen: %ticketsystem_admin_open% | Aktiv: %ticketsystem_admin_claimed%
Bewertung: %ticketsystem_admin_rating_good% / %ticketsystem_admin_rating_bad% (%ticketsystem_admin_rating_percent%%)
❯ HTTPS / TLS
Spoiler: Einrichtung & Konfiguration
Der eingebettete Web-Server unterstützt optionales HTTPS via Java Keystore.
Konfiguration (config.yml):
web-panel:
ssl:
enabled : true
keystore-file : "keystore.jks" # im plugins/TicketSystem/-Ordner
keystore-password : "changeit"
key-password : "changeit"
Self-Signed Zertifikat erstellen (Test):
keytool -genkeypair -alias ticketsystem -keyalg RSA -keysize 2048 -validity 365 -keystore plugins/TicketSystem/keystore.jks -storepass changeit
Konfiguration (config.yml):
Code (YAML):
web-panel:
ssl:
enabled : true
keystore-file : "keystore.jks" # im plugins/TicketSystem/-Ordner
keystore-password : "changeit"
key-password : "changeit"
Code (Text):
keytool -genkeypair -alias ticketsystem -keyalg RSA -keysize 2048 -validity 365 -keystore plugins/TicketSystem/keystore.jks -storepass changeit
- Fehlt der Keystore, startet der Server automatisch ohne TLS
- Nur TLS 1.2 und TLS 1.3 werden zugelassen
- Für Produktion: Reverse-Proxy (Nginx/Apache) oder Let's Encrypt empfohlen
❯ Kategorie & Priorität
Spoiler: Beispiele & Übersicht
Prioritäten: low, normal, high, urgent (auch deutsch: niedrig, hoch, dringend)
Kategorien und Aliases sind frei in der config.yml konfigurierbar.
| 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 |
Prioritäten: low, normal, high, urgent (auch deutsch: niedrig, hoch, dringend)
Kategorien und Aliases sind frei in der config.yml konfigurierbar.
❯ Vergleich mit anderen Plugins
Spoiler: TicketSystem vs. Konkurrenz
TicketSystem vs. SimpleTickets vs. AdvancedTickets
Speicher-Migration
• TicketSystem: ✔ Vollständig integriert
• SimpleTickets: ⚠ Nur manuell
• AdvancedTickets: ✖ Nicht möglich
Automatische Backups
• TicketSystem: ✔ Ja
• SimpleTickets: ⚠ Teilweise
• AdvancedTickets: ✖ Nein
GUI
• TicketSystem: ✔ Modern & dynamisch
• SimpleTickets: ⚠ Basic
• AdvancedTickets: ✖ Nein
Web-Oberfläche
• TicketSystem: ✔ Eigenes Web-Dashboard (Tickets & FAQ)
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Archivierung
• TicketSystem: ✔ Automatisch & manuell
• SimpleTickets: ⚠ Nur manuell
• AdvancedTickets: ✖ Nein
Rollenbasierter Archiv-Zugriff
• TicketSystem: ✔ Eigene Permission, nicht an OP gebunden
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
FAQ-System
• TicketSystem: ✔ GUI, Web-Dashboard & In-Game Verwaltung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Performance-Caching
• TicketSystem: ✔ TTL-Cache, automatische Invalidierung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
BungeeCord-Unterstützung
• TicketSystem: ✔ Serverübergreifende Tickets, Teleports & Benachrichtigungen
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Update-Checker
• TicketSystem: ✔ Integriert, saubere Konsole
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Backup-System
• TicketSystem: ✔ Automatisch & manuell, JSON mit Zeitstempel
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
HTTPS/TLS-Unterstützung
• TicketSystem: ✔ Eingebettet, TLS 1.2+, JKS-Keystore
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Brute-Force-Schutz (Web)
• TicketSystem: ✔ IP-Sperre nach 5 Fehlversuchen
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
MySQL Auto-Reconnect
• TicketSystem: ✔ Automatisch bei Verbindungsabbruch
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
PlaceholderAPI-Integration
• TicketSystem: ✔ 7 Placeholder, automatische Registrierung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Speicher-Migration
• TicketSystem: ✔ Vollständig integriert
• SimpleTickets: ⚠ Nur manuell
• AdvancedTickets: ✖ Nicht möglich
Automatische Backups
• TicketSystem: ✔ Ja
• SimpleTickets: ⚠ Teilweise
• AdvancedTickets: ✖ Nein
GUI
• TicketSystem: ✔ Modern & dynamisch
• SimpleTickets: ⚠ Basic
• AdvancedTickets: ✖ Nein
Web-Oberfläche
• TicketSystem: ✔ Eigenes Web-Dashboard (Tickets & FAQ)
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Archivierung
• TicketSystem: ✔ Automatisch & manuell
• SimpleTickets: ⚠ Nur manuell
• AdvancedTickets: ✖ Nein
Rollenbasierter Archiv-Zugriff
• TicketSystem: ✔ Eigene Permission, nicht an OP gebunden
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
FAQ-System
• TicketSystem: ✔ GUI, Web-Dashboard & In-Game Verwaltung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Performance-Caching
• TicketSystem: ✔ TTL-Cache, automatische Invalidierung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
BungeeCord-Unterstützung
• TicketSystem: ✔ Serverübergreifende Tickets, Teleports & Benachrichtigungen
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Update-Checker
• TicketSystem: ✔ Integriert, saubere Konsole
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Backup-System
• TicketSystem: ✔ Automatisch & manuell, JSON mit Zeitstempel
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
HTTPS/TLS-Unterstützung
• TicketSystem: ✔ Eingebettet, TLS 1.2+, JKS-Keystore
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
Brute-Force-Schutz (Web)
• TicketSystem: ✔ IP-Sperre nach 5 Fehlversuchen
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
MySQL Auto-Reconnect
• TicketSystem: ✔ Automatisch bei Verbindungsabbruch
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
PlaceholderAPI-Integration
• TicketSystem: ✔ 7 Placeholder, automatische Registrierung
• SimpleTickets: ✖ Nein
• AdvancedTickets: ✖ Nein
❯ Support & Community
Benötigst du Hilfe?
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
© 2026 Viper Plugins | TicketSystem
Alle Rechte vorbehalten
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Wenn TicketSystem deinen Server bereichert hat, freuen wir uns über eine 5-Sterne-Bewertung !
Dein Feedback hilft uns, das Plugin weiter zu verbessern.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
© 2026 Viper Plugins | TicketSystem
Alle Rechte vorbehalten
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TicketSystem is a free Minecraft Java mod. Compatible with Minecraft 1.20, 1.20.6, 1.21, 26.1 and newer. Downloaded 199 times (via Spigot). Download it and open it directly in the game.