Upload via Git Manager GUI - AutoMessageModule.java

This commit is contained in:
2026-04-01 10:14:56 +00:00
parent ee8b845c03
commit 6b127573bd

View File

@@ -1,115 +1,115 @@
package net.viper.status.modules.AutoMessage; package net.viper.status.modules.AutoMessage;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Plugin;
import net.viper.status.StatusAPI; import net.viper.status.StatusAPI;
import net.viper.status.module.Module; import net.viper.status.module.Module;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class AutoMessageModule implements Module { public class AutoMessageModule implements Module {
private int taskId = -1; private int taskId = -1;
// Diese Methode fehlte bisher und ist zwingend für das Interface // Diese Methode fehlte bisher und ist zwingend für das Interface
@Override @Override
public String getName() { public String getName() {
return "AutoMessage"; return "AutoMessage";
} }
@Override @Override
public void onEnable(Plugin plugin) { public void onEnable(Plugin plugin) {
// Hier casten wir das Plugin-Objekt zu StatusAPI, um an spezifische Methoden zu kommen // Hier casten wir das Plugin-Objekt zu StatusAPI, um an spezifische Methoden zu kommen
StatusAPI api = (StatusAPI) plugin; StatusAPI api = (StatusAPI) plugin;
// Konfiguration aus der zentralen verify.properties laden // Konfiguration aus der zentralen verify.properties laden
Properties props = api.getVerifyProperties(); Properties props = api.getVerifyProperties();
boolean enabled = Boolean.parseBoolean(props.getProperty("automessage.enabled", "false")); boolean enabled = Boolean.parseBoolean(props.getProperty("automessage.enabled", "false"));
if (!enabled) { if (!enabled) {
api.getLogger().info("AutoMessage-Modul ist deaktiviert."); api.getLogger().info("AutoMessage-Modul ist deaktiviert.");
return; return;
} }
// Interval in Sekunden einlesen // Interval in Sekunden einlesen
int intervalSeconds; int intervalSeconds;
try { try {
intervalSeconds = Integer.parseInt(props.getProperty("automessage.interval", "300")); intervalSeconds = Integer.parseInt(props.getProperty("automessage.interval", "300"));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
api.getLogger().warning("Ungültiges Intervall für AutoMessage! Nutze Standard (300s)."); api.getLogger().warning("Ungültiges Intervall für AutoMessage! Nutze Standard (300s).");
intervalSeconds = 300; intervalSeconds = 300;
} }
// Dateiname einlesen (Standard: messages.txt) // Dateiname einlesen (Standard: messages.txt)
String fileName = props.getProperty("automessage.file", "messages.txt"); String fileName = props.getProperty("automessage.file", "messages.txt");
File messageFile = new File(api.getDataFolder(), fileName); File messageFile = new File(api.getDataFolder(), fileName);
if (!messageFile.exists()) { if (!messageFile.exists()) {
api.getLogger().warning("Die Datei '" + fileName + "' wurde nicht gefunden (" + messageFile.getAbsolutePath() + ")!"); api.getLogger().warning("Die Datei '" + fileName + "' wurde nicht gefunden (" + messageFile.getAbsolutePath() + ")!");
api.getLogger().info("Erstelle eine leere Datei '" + fileName + "' als Vorlage..."); api.getLogger().info("Erstelle eine leere Datei '" + fileName + "' als Vorlage...");
try { try {
messageFile.createNewFile(); messageFile.createNewFile();
} catch (IOException e) { } catch (IOException e) {
api.getLogger().severe("Konnte Datei nicht erstellen: " + e.getMessage()); api.getLogger().severe("Konnte Datei nicht erstellen: " + e.getMessage());
} }
return; return;
} }
// Nachrichten aus der Datei lesen // Nachrichten aus der Datei lesen
List<String> messages; List<String> messages;
try { try {
messages = Files.readAllLines(messageFile.toPath(), StandardCharsets.UTF_8); messages = Files.readAllLines(messageFile.toPath(), StandardCharsets.UTF_8);
} catch (IOException e) { } catch (IOException e) {
api.getLogger().severe("Fehler beim Lesen von '" + fileName + "': " + e.getMessage()); api.getLogger().severe("Fehler beim Lesen von '" + fileName + "': " + e.getMessage());
return; return;
} }
// Leere Zeilen und Kommentare herausfiltern // Leere Zeilen und Kommentare herausfiltern
messages.removeIf(line -> line.trim().isEmpty() || line.trim().startsWith("#")); messages.removeIf(line -> line.trim().isEmpty() || line.trim().startsWith("#"));
if (messages.isEmpty()) { if (messages.isEmpty()) {
api.getLogger().warning("Die Datei '" + fileName + "' enthält keine gültigen Nachrichten!"); api.getLogger().warning("Die Datei '" + fileName + "' enthält keine gültigen Nachrichten!");
return; return;
} }
// Optional: Prefix aus Config lesen // Optional: Prefix aus Config lesen
String prefixRaw = props.getProperty("automessage.prefix", ""); String prefixRaw = props.getProperty("automessage.prefix", "");
String prefix = ChatColor.translateAlternateColorCodes('&', prefixRaw); String prefix = ChatColor.translateAlternateColorCodes('&', prefixRaw);
api.getLogger().info("Starte AutoMessage-Task (" + messages.size() + " Nachrichten aus " + fileName + ")"); api.getLogger().info("Starte AutoMessage-Task (" + messages.size() + " Nachrichten aus " + fileName + ")");
// Finaler Index für den Lambda-Ausdruck // Finaler Index für den Lambda-Ausdruck
final int[] currentIndex = {0}; final int[] currentIndex = {0};
// Task planen // Task planen
taskId = ProxyServer.getInstance().getScheduler().schedule(plugin, () -> { taskId = ProxyServer.getInstance().getScheduler().schedule(plugin, () -> {
String msg = messages.get(currentIndex[0]); String msg = messages.get(currentIndex[0]);
String finalMessage = (prefix.isEmpty() ? "" : prefix + " ") + msg; String finalMessage = (prefix.isEmpty() ? "" : prefix + " ") + msg;
// Nachricht an alle auf dem Proxy senden // Nachricht an alle auf dem Proxy senden
ProxyServer.getInstance().broadcast(TextComponent.fromLegacy(finalMessage)); ProxyServer.getInstance().broadcast(TextComponent.fromLegacy(finalMessage));
// Index erhöhen und Loop starten // Index erhöhen und Loop starten
currentIndex[0] = (currentIndex[0] + 1) % messages.size(); currentIndex[0] = (currentIndex[0] + 1) % messages.size();
}, intervalSeconds, intervalSeconds, TimeUnit.SECONDS).getId(); }, intervalSeconds, intervalSeconds, TimeUnit.SECONDS).getId();
} }
@Override @Override
public void onDisable(Plugin plugin) { public void onDisable(Plugin plugin) {
if (taskId != -1) { if (taskId != -1) {
ProxyServer.getInstance().getScheduler().cancel(taskId); ProxyServer.getInstance().getScheduler().cancel(taskId);
taskId = -1; taskId = -1;
plugin.getLogger().info("AutoMessage-Task gestoppt."); plugin.getLogger().info("AutoMessage-Task gestoppt.");
} }
} }
} }