From 52ad98a643bbe447861ee41d493823c9bb7f9aec Mon Sep 17 00:00:00 2001 From: Git Manager GUI Date: Thu, 18 Jun 2026 20:56:01 +0200 Subject: [PATCH] Upload folder via GUI - src --- .../bungee/network/BungeeAlertManager.java | 13 +++++++++++++ .../de/serverpulse/bungee/utils/BungeeConfig.java | 1 + .../de/serverpulse/spigot/alerts/AlertManager.java | 13 +++++++++++++ .../de/serverpulse/spigot/utils/SpigotConfig.java | 1 + src/main/resources/config.yml | 1 + 5 files changed, 29 insertions(+) diff --git a/src/main/java/de/serverpulse/bungee/network/BungeeAlertManager.java b/src/main/java/de/serverpulse/bungee/network/BungeeAlertManager.java index 00dcfcb..f5ed6fd 100644 --- a/src/main/java/de/serverpulse/bungee/network/BungeeAlertManager.java +++ b/src/main/java/de/serverpulse/bungee/network/BungeeAlertManager.java @@ -14,11 +14,15 @@ import java.util.concurrent.ConcurrentHashMap; public class BungeeAlertManager { private final BungeePlugin plugin; + private final long pluginStartTimeMs; + private final long startupGracePeriodMs; private final Map cooldowns = new ConcurrentHashMap<>(); private static final long COOLDOWN_MS = 5 * 60 * 1000L; public BungeeAlertManager(BungeePlugin plugin) { this.plugin = plugin; + this.pluginStartTimeMs = System.currentTimeMillis(); + this.startupGracePeriodMs = plugin.getBungeeConfig().getStartupCheckDelayMinutes() * 60_000L; } /** @@ -71,6 +75,11 @@ public class BungeeAlertManager { private void trigger(String cooldownKey, String severity, String serverName, String alertType, String message) { + if (isStartupGracePeriodActive()) { + plugin.debug("Startup-Delay aktiv: Alert unterdrückt (" + alertType + ")"); + return; + } + long now = System.currentTimeMillis(); if (cooldowns.containsKey(cooldownKey) && now - cooldowns.get(cooldownKey) < COOLDOWN_MS) return; @@ -82,4 +91,8 @@ public class BungeeAlertManager { plugin.getDiscordWebhook().sendServerAlert(serverName, alertType, severity, message); } } + + private boolean isStartupGracePeriodActive() { + return System.currentTimeMillis() - pluginStartTimeMs < startupGracePeriodMs; + } } diff --git a/src/main/java/de/serverpulse/bungee/utils/BungeeConfig.java b/src/main/java/de/serverpulse/bungee/utils/BungeeConfig.java index a0f8c3f..88e8a02 100644 --- a/src/main/java/de/serverpulse/bungee/utils/BungeeConfig.java +++ b/src/main/java/de/serverpulse/bungee/utils/BungeeConfig.java @@ -41,6 +41,7 @@ public class BungeeConfig { // ── General ────────────────────────────── public boolean isDebugMode() { return config.getBoolean("general.debug", false); } public int getPollInterval() { return config.getInt("general.poll-interval", 30); } + public int getStartupCheckDelayMinutes() { return Math.max(0, config.getInt("general.startup-check-delay-minutes", 5)); } // ── Discord ────────────────────────────── public boolean isDiscordEnabled() { return config.getBoolean("discord.enabled", false); } diff --git a/src/main/java/de/serverpulse/spigot/alerts/AlertManager.java b/src/main/java/de/serverpulse/spigot/alerts/AlertManager.java index f13d46c..59eac26 100644 --- a/src/main/java/de/serverpulse/spigot/alerts/AlertManager.java +++ b/src/main/java/de/serverpulse/spigot/alerts/AlertManager.java @@ -19,6 +19,8 @@ import java.util.Map; public class AlertManager { private final SpigotPlugin plugin; + private final long pluginStartTimeMs; + private final long startupGracePeriodMs; // Cooldown: alertType -> letzter Trigger-Zeitpunkt (ms) private final Map alertCooldowns = new HashMap<>(); @@ -33,6 +35,8 @@ public class AlertManager { public AlertManager(SpigotPlugin plugin) { this.plugin = plugin; + this.pluginStartTimeMs = System.currentTimeMillis(); + this.startupGracePeriodMs = plugin.getSpigotConfig().getStartupCheckDelayMinutes() * 60_000L; } // ────────────────────────────────────────── @@ -44,6 +48,11 @@ public class AlertManager { */ public void triggerAlert(String alertType, AlertSeverity severity, String worldName, String message, Double currentValue, Double threshold) { + if (isStartupGracePeriodActive()) { + plugin.debug("Startup-Delay aktiv: Alert unterdrückt (" + alertType + ")"); + return; + } + // Cooldown prüfen String cooldownKey = alertType + (worldName != null ? "_" + worldName : ""); long now = System.currentTimeMillis(); @@ -216,4 +225,8 @@ public class AlertManager { public int getCriticalEventCount() { return criticalEventCount; } + + private boolean isStartupGracePeriodActive() { + return System.currentTimeMillis() - pluginStartTimeMs < startupGracePeriodMs; + } } diff --git a/src/main/java/de/serverpulse/spigot/utils/SpigotConfig.java b/src/main/java/de/serverpulse/spigot/utils/SpigotConfig.java index 7ce7a5f..bdbc4d1 100644 --- a/src/main/java/de/serverpulse/spigot/utils/SpigotConfig.java +++ b/src/main/java/de/serverpulse/spigot/utils/SpigotConfig.java @@ -14,6 +14,7 @@ public class SpigotConfig { public boolean isDebugMode() { return cfg.getBoolean("general.debug", false); } public int getMetricsInterval() { return Math.max(10, cfg.getInt("general.metrics-interval", 30)); } public int getEntityInterval() { return Math.max(10, cfg.getInt("general.entity-interval", 60)); } + public int getStartupCheckDelayMinutes() { return Math.max(0, cfg.getInt("general.startup-check-delay-minutes", 5)); } public int getDataRetentionDays() { return cfg.getInt("general.data-retention-days", 90); } public boolean isDatabaseEnabled() { return cfg.getBoolean("database.enabled", true); } public String getDbHost() { return cfg.getString("database.host", "localhost"); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7b8d08e..7039c40 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,6 +11,7 @@ # ────────────────────────────────────────── general: debug: false + startup-check-delay-minutes: 5 # Verzögerung nach Start, bevor Alerts/Prüfungen ausgelöst werden metrics-interval: 30 # Sekunden (Spigot: Performance-Erfassung) entity-interval: 60 # Sekunden (Spigot: Entity-Erfassung) poll-interval: 30 # Sekunden (BungeeCord: Daten-Weiterleitung)