Upload folder via GUI - src

This commit is contained in:
Git Manager GUI
2026-06-15 07:03:50 +02:00
parent 0e1d193653
commit 684f300775
42 changed files with 7336 additions and 0 deletions

View File

@@ -0,0 +1,179 @@
package de.serverpulse.bungee.commands;
import de.serverpulse.bungee.BungeePlugin;
import de.serverpulse.bungee.models.ServerData;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.plugin.Command;
/**
* /bpulse Befehlsverarbeitung für BungeeCord.
* Unterbefehle: status | network | servers | reload
*/
public class BungeeCommand extends Command {
private final BungeePlugin plugin;
public BungeeCommand(BungeePlugin plugin) {
super("bpulse", "serverpulse.bungee.use", "bsp", "networkpulse");
this.plugin = plugin;
}
@Override
public void execute(CommandSender sender, String[] args) {
if (args.length == 0) {
sendHelp(sender);
return;
}
switch (args[0].toLowerCase()) {
case "status" -> handleStatus(sender);
case "network" -> handleNetwork(sender);
case "servers" -> handleServers(sender);
case "reload" -> handleReload(sender);
case "report" -> handleReport(sender);
default -> sendHelp(sender);
}
}
// ──────────────────────────────────────────
// STATUS
// ──────────────────────────────────────────
private void handleStatus(CommandSender sender) {
send(sender, "");
send(sender, "§8§m──────────────────────────────────────────");
send(sender, " §b§lServerPulse §8 §7Netzwerk-Status");
send(sender, "§8§m──────────────────────────────────────────");
send(sender, " §7Spieler gesamt: §f" + plugin.getDataStore().getTotalOnlinePlayers());
send(sender, " §7Server online: §f"
+ plugin.getDataStore().getOnlineServerCount()
+ " §8/ §f" + plugin.getDataStore().getServerCount());
send(sender, " §7Ø TPS (Netz): " + formatTps(plugin.getDataStore().getNetworkAverageTps()));
send(sender, " §7Min TPS: " + formatTps(plugin.getDataStore().getLowestTps()));
send(sender, " §7RAM gesamt: §f"
+ plugin.getDataStore().getTotalRamUsedMb() + " MB"
+ " §8/ §f" + plugin.getDataStore().getTotalRamMaxMb() + " MB");
send(sender, "§8§m──────────────────────────────────────────");
}
// ──────────────────────────────────────────
// NETWORK
// ──────────────────────────────────────────
private void handleNetwork(CommandSender sender) {
send(sender, "");
send(sender, "§b§lServerPulse §8 §7Netzwerk-Übersicht");
send(sender, "§8§m──────────────────────────────────────────");
for (DataEntry entry : java.util.List.of(
new DataEntry("Online Spieler",
String.valueOf(plugin.getDataStore().getTotalOnlinePlayers())),
new DataEntry("Aktive Server",
plugin.getDataStore().getOnlineServerCount() + " / " + plugin.getDataStore().getServerCount()),
new DataEntry("Ø Netz-TPS",
String.format("%.2f", plugin.getDataStore().getNetworkAverageTps())),
new DataEntry("Niedrigste TPS",
String.format("%.2f", plugin.getDataStore().getLowestTps())),
new DataEntry("RAM gesamt",
plugin.getDataStore().getTotalRamUsedMb() + " MB / "
+ plugin.getDataStore().getTotalRamMaxMb() + " MB"))) {
send(sender, " §7" + entry.label + ": §f" + entry.value);
}
send(sender, "§8§m──────────────────────────────────────────");
}
// ──────────────────────────────────────────
// SERVERS
// ──────────────────────────────────────────
private void handleServers(CommandSender sender) {
send(sender, "");
send(sender, "§b§lServerPulse §8 §7Server-Details");
send(sender, "§8§m──────────────────────────────────────────");
for (ServerData data : plugin.getDataStore().getAll()) {
String status = data.isOnline() ? "§a●" : "§c●";
if (data.isOnline()) {
send(sender, " " + status + " §f§l" + data.getServerName());
send(sender, " §7TPS: " + formatTps(data.getTps())
+ " §7MSPT: §f" + String.format("%.1f", data.getMspt()) + "ms");
send(sender, " §7RAM: §f" + data.getRamUsedMb() + "MB §8/ §f" + data.getRamMaxMb() + "MB"
+ " §7Spieler: §f" + data.getOnlinePlayers());
send(sender, " §7Entities: §f" + data.getTotalEntities()
+ " §7Chunks: §f" + data.getLoadedChunks());
if (!data.getLastAlert().isEmpty()) {
String color = data.getLastAlertSeverity().equals("CRITICAL") ? "§c" : "§e";
send(sender, " §7Letzter Alert: " + color + data.getLastAlert());
}
} else {
send(sender, " " + status + " §7" + data.getServerName() + " §8(Offline)");
}
}
if (plugin.getDataStore().getAll().isEmpty()) {
send(sender, " §7Noch keine Server-Daten empfangen.");
}
send(sender, "§8§m──────────────────────────────────────────");
}
// ──────────────────────────────────────────
// REPORT
// ──────────────────────────────────────────
private void handleReport(CommandSender sender) {
if (!plugin.getBungeeConfig().isDiscordEnabled()) {
send(sender, "§cDiscord ist nicht aktiviert. Report kann nicht gesendet werden.");
return;
}
send(sender, "§aSende täglichen Netzwerk-Report an Discord...");
plugin.getProxy().getScheduler().runAsync(plugin,
() -> plugin.getDiscordWebhook().sendDailyReport());
send(sender, "§aReport wurde gesendet!");
}
// ──────────────────────────────────────────
// RELOAD
// ──────────────────────────────────────────
private void handleReload(CommandSender sender) {
if (!sender.hasPermission("serverpulse.bungee.admin")) {
send(sender, "§cKeine Berechtigung.");
return;
}
plugin.getBungeeConfig().load();
send(sender, "§aKonfiguration wurde neu geladen.");
}
// ──────────────────────────────────────────
// HILFE
// ──────────────────────────────────────────
private void sendHelp(CommandSender sender) {
send(sender, "§8§m──────────────────────────────────────────");
send(sender, " §b§lServerPulse BungeeCord §8 §7Befehle");
send(sender, "§8§m──────────────────────────────────────────");
send(sender, " §b/bpulse status §8 §7Netzwerk-Schnellübersicht");
send(sender, " §b/bpulse network §8 §7Netzwerk-Statistiken");
send(sender, " §b/bpulse servers §8 §7Details aller Sub-Server");
send(sender, " §b/bpulse report §8 §7Discord-Report senden");
send(sender, " §b/bpulse reload §8 §7Konfiguration neu laden");
send(sender, "§8§m──────────────────────────────────────────");
}
// ──────────────────────────────────────────
// HILFSMETHODEN
// ──────────────────────────────────────────
private void send(CommandSender sender, String message) {
sender.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('§', message)));
}
private String formatTps(double tps) {
if (tps >= 18.0) return "§a" + String.format("%.2f", tps);
if (tps >= 15.0) return "§e" + String.format("%.2f", tps);
return "§c" + String.format("%.2f", tps);
}
private record DataEntry(String label, String value) {}
}