Update from Git Manager GUI
This commit is contained in:
135
src/main/java/de/ticketsystem/TicketPlugin.java
Normal file
135
src/main/java/de/ticketsystem/TicketPlugin.java
Normal file
@@ -0,0 +1,135 @@
|
||||
|
||||
package de.ticketsystem;
|
||||
|
||||
import de.ticketsystem.commands.TicketCommand;
|
||||
import de.ticketsystem.database.DatabaseManager;
|
||||
import de.ticketsystem.gui.TicketGUI;
|
||||
import de.ticketsystem.listeners.PlayerJoinListener;
|
||||
import de.ticketsystem.manager.TicketManager;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class TicketPlugin extends JavaPlugin {
|
||||
|
||||
private static TicketPlugin instance;
|
||||
|
||||
private boolean debug;
|
||||
private DatabaseManager databaseManager;
|
||||
private TicketManager ticketManager;
|
||||
private TicketGUI ticketGUI;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
|
||||
// Config speichern falls nicht vorhanden
|
||||
saveDefaultConfig();
|
||||
|
||||
// Update-Checker (Spigot Resource-ID anpassen!)
|
||||
int resourceId = 132757;
|
||||
new UpdateChecker(this, resourceId).getVersion(version -> {
|
||||
String current = getDescription().getVersion();
|
||||
if (!current.equals(version)) {
|
||||
String msg = ChatColor.translateAlternateColorCodes('&',
|
||||
"&6[TicketSystem] &eEs ist eine neue Version verfügbar: &a" + version + " &7(aktuell: " + current + ")");
|
||||
getLogger().info("Es ist eine neue Version verfügbar: " + version + " (aktuell: " + current + ")");
|
||||
// Sende Nachricht an alle Admins (online) mit 1 Sekunde Verzögerung
|
||||
getServer().getScheduler().runTaskLater(this, () -> {
|
||||
getServer().getOnlinePlayers().stream()
|
||||
.filter(p -> p.hasPermission("ticket.admin"))
|
||||
.forEach(p -> p.sendMessage(msg));
|
||||
}, 20L); // 20 Ticks = 1 Sekunde
|
||||
} else {
|
||||
getLogger().info("TicketSystem ist aktuell (Version " + current + ")");
|
||||
}
|
||||
});
|
||||
|
||||
// Versionsprüfung
|
||||
String configVersion = getConfig().getString("version", "");
|
||||
String expectedVersion = "2.0";
|
||||
if (!expectedVersion.equals(configVersion)) {
|
||||
getLogger().warning("[WARNUNG] Die Version deiner config.yml (" + configVersion + ") stimmt nicht mit der erwarteten Version (" + expectedVersion + ") überein! Bitte prüfe, ob deine Konfiguration aktuell ist.");
|
||||
}
|
||||
|
||||
// Debug-Status aus Config lesen
|
||||
debug = getConfig().getBoolean("debug", false);
|
||||
|
||||
// Datenbankverbindung aufbauen
|
||||
databaseManager = new DatabaseManager(this);
|
||||
if (!databaseManager.connect()) {
|
||||
getLogger().severe("Konnte keine Datenbankverbindung herstellen! Plugin läuft im Datei-Modus weiter.");
|
||||
if (isDebug()) getLogger().warning("[DEBUG] DatabaseManager.connect() fehlgeschlagen, Datei-Modus aktiviert.");
|
||||
// Plugin bleibt aktiv, DatabaseManager wechselt auf Datei-Storage
|
||||
}
|
||||
|
||||
// Manager und GUI initialisieren
|
||||
ticketManager = new TicketManager(this);
|
||||
ticketGUI = new TicketGUI(this);
|
||||
|
||||
// Commands registrieren
|
||||
TicketCommand ticketCommand = new TicketCommand(this);
|
||||
Objects.requireNonNull(getCommand("ticket")).setExecutor(ticketCommand);
|
||||
Objects.requireNonNull(getCommand("ticket")).setTabCompleter(ticketCommand);
|
||||
|
||||
// Events registrieren
|
||||
getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(ticketGUI, this);
|
||||
|
||||
// Automatische Archivierung nach Zeitplan (Intervall in Stunden, Standard: 24h)
|
||||
int archiveIntervalH = getConfig().getInt("auto-archive-interval-hours", 24);
|
||||
if (archiveIntervalH > 0) {
|
||||
long ticks = archiveIntervalH * 60L * 60L * 20L; // Stunden → Ticks
|
||||
getServer().getScheduler().runTaskTimer(this, () -> {
|
||||
int archived = databaseManager.archiveClosedTickets();
|
||||
if (archived > 0) {
|
||||
getLogger().info("Automatische Archivierung: " + archived + " Tickets archiviert.");
|
||||
if (isDebug()) getLogger().info("[DEBUG] Archivierung ausgeführt, " + archived + " Tickets verschoben.");
|
||||
}
|
||||
}, ticks, ticks);
|
||||
getLogger().info("Automatische Archivierung alle " + archiveIntervalH + " Stunden aktiviert.");
|
||||
if (isDebug()) getLogger().info("[DEBUG] Archivierungs-Timer gesetzt: alle " + archiveIntervalH + " Stunden.");
|
||||
}
|
||||
|
||||
getLogger().info("TicketSystem erfolgreich gestartet!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (databaseManager != null) {
|
||||
databaseManager.disconnect();
|
||||
}
|
||||
getLogger().info("TicketSystem wurde deaktiviert.");
|
||||
}
|
||||
|
||||
// ─────────────────────────── Hilfsmethoden ─────────────────────────────
|
||||
|
||||
/**
|
||||
* Formatiert eine Nachricht aus der Config mit Prefix und Farben.
|
||||
*/
|
||||
public String formatMessage(String path) {
|
||||
String prefix = color(getConfig().getString("prefix", "&8[&6Ticket&8] &r"));
|
||||
String message = getConfig().getString(path, "&cNachricht nicht gefunden: " + path);
|
||||
return prefix + color(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Konvertiert Farbcodes (&x → §x).
|
||||
*/
|
||||
public String color(String text) {
|
||||
return ChatColor.translateAlternateColorCodes('&', text);
|
||||
}
|
||||
|
||||
// ─────────────────────────── Getter ────────────────────────────────────
|
||||
|
||||
public static TicketPlugin getInstance() { return instance; }
|
||||
public DatabaseManager getDatabaseManager() { return databaseManager; }
|
||||
public TicketManager getTicketManager() { return ticketManager; }
|
||||
public TicketGUI getTicketGUI() { return ticketGUI; }
|
||||
|
||||
/**
|
||||
* Gibt zurück, ob der Debug-Modus aktiv ist (aus config.yml)
|
||||
*/
|
||||
public boolean isDebug() { return debug; }
|
||||
}
|
||||
Reference in New Issue
Block a user