Update from Git Manager GUI

This commit is contained in:
2026-02-27 15:11:33 +01:00
parent fbf4ab16b0
commit b15396ba16
4 changed files with 121 additions and 13 deletions

View File

@@ -133,6 +133,22 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
sender.sendMessage(MessageUtil.success("Spiel in §e" + args[1] + " §aberendet."));
}
// ── Torwart manuell zuweisen ─────────────────────────────────────────
case "setgk" -> {
if (!sender.hasPermission("fussball.admin")) { sender.sendMessage(MessageUtil.error("Keine Berechtigung!")); return true; }
// Nutzung: /fb setgk <arena> <spieler>
if (args.length < 3) { sender.sendMessage(MessageUtil.error("Benutze: /fb setgk <arena> <spieler>")); return true; }
Game gkGame = plugin.getGameManager().getGame(args[1]);
if (gkGame == null) { sender.sendMessage(MessageUtil.error("Kein aktives Spiel in §e" + args[1] + "§c!")); return true; }
Player target = Bukkit.getPlayerExact(args[2]);
if (target == null) { sender.sendMessage(MessageUtil.error("Spieler §e" + args[2] + " §cnicht online!")); return true; }
if (!gkGame.isInGame(target)) { sender.sendMessage(MessageUtil.error("§e" + args[2] + " §cist nicht in diesem Spiel!")); return true; }
if (!gkGame.setGoalkeeper(target)) {
sender.sendMessage(MessageUtil.error("Konnte Torwart nicht zuweisen Spieler hat kein Team?"));
} else {
sender.sendMessage(MessageUtil.success("§e" + target.getName() + " §aist jetzt Torwart!"));
}
}
case "top" -> {
if (args.length < 2) {
sender.sendMessage(MessageUtil.error("Benutze: /fussball top goals|wins|kicks"));
@@ -163,8 +179,6 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
}
case "kicks" -> {
sender.sendMessage(MessageUtil.header("🏆 Top Schützen (Schüsse)"));
var list = plugin.getStatsManager().getTopScorers(10);
// Nutze getTopScorers und zeige kicks
var kickList = new java.util.ArrayList<>(plugin.getStatsManager().getTopScorers(100));
kickList.sort((a, b) -> b.getValue().kicks - a.getValue().kicks);
for (int i = 0; i < Math.min(10, kickList.size()); i++) {
@@ -213,6 +227,8 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
case "redpenaltymax" -> { arena.setRedPenaltyMax(player.getLocation()); player.sendMessage(MessageUtil.success("Roter Strafraum Max gesetzt: " + locStr(player.getLocation()))); }
case "bluepenaltymin" -> { arena.setBluePenaltyMin(player.getLocation()); player.sendMessage(MessageUtil.success("Blauer Strafraum Min gesetzt: "+ locStr(player.getLocation()))); }
case "bluepenaltymax" -> { arena.setBluePenaltyMax(player.getLocation()); player.sendMessage(MessageUtil.success("Blauer Strafraum Max gesetzt: "+ locStr(player.getLocation()))); }
case "redpenaltyspot" -> { arena.setRedPenaltySpot(player.getLocation()); player.sendMessage(MessageUtil.success("Roter Elfmeter-Punkt gesetzt: " + locStr(player.getLocation()))); }
case "bluepenaltyspot" -> { arena.setBluePenaltySpot(player.getLocation()); player.sendMessage(MessageUtil.success("Blauer Elfmeter-Punkt gesetzt: " + locStr(player.getLocation()))); }
case "minplayers" -> { if (args.length < 4) return; arena.setMinPlayers(Integer.parseInt(args[3])); player.sendMessage(MessageUtil.success("Min-Spieler: §e" + args[3])); }
case "maxplayers" -> { if (args.length < 4) return; arena.setMaxPlayers(Integer.parseInt(args[3])); player.sendMessage(MessageUtil.success("Max-Spieler: §e" + args[3])); }
case "duration" -> { if (args.length < 4) return; arena.setGameDuration(Integer.parseInt(args[3])); player.sendMessage(MessageUtil.success("Spieldauer: §e" + args[3] + "s")); }
@@ -230,6 +246,8 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
+ " §8(optional sonst auto-berechnet)");
player.sendMessage("§7 Blauer Strafraum: " + check(arena.getBluePenaltyMin(), arena.getBluePenaltyMax())
+ " §8(optional sonst auto-berechnet)");
player.sendMessage("§7 Roter Elfmeter-Punkt: " + check(arena.getRedPenaltySpot()) + " §8(optional sonst ball-spawn)");
player.sendMessage("§7 Blauer Elfmeter-Punkt: " + check(arena.getBluePenaltySpot()) + " §8(optional sonst ball-spawn)");
player.sendMessage("§7 Min. Spieler: §e" + arena.getMinPlayers());
player.sendMessage("§7 Max. Spieler: §e" + arena.getMaxPlayers());
player.sendMessage("§7 Spieldauer: §e" + arena.getGameDuration() + "s");
@@ -327,14 +345,24 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
List<String> list = new ArrayList<>();
if (args.length == 1) {
list.addAll(List.of("join", "leave", "list", "stats", "top", "spectate"));
if (sender.hasPermission("fussball.admin")) list.addAll(List.of("create", "delete", "setup", "stop", "debug"));
} else if (args.length == 2 && List.of("join","delete","setup","stop","debug","spectate").contains(args[0].toLowerCase())) {
if (sender.hasPermission("fussball.admin")) list.addAll(List.of("create", "delete", "setup", "stop", "setgk", "debug"));
} else if (args.length == 2 && List.of("join","delete","setup","stop","setgk","debug","spectate").contains(args[0].toLowerCase())) {
list.addAll(plugin.getArenaManager().getArenaNames());
} else if (args.length == 3 && args[0].equalsIgnoreCase("setgk")) {
// Spielernamen aus dem aktiven Spiel vorschlagen
Game gkGame = plugin.getGameManager().getGame(args[1]);
if (gkGame != null) {
for (UUID uuid : gkGame.getAllPlayers()) {
Player p = Bukkit.getPlayer(uuid);
if (p != null) list.add(p.getName());
}
}
} else if (args.length == 3 && args[0].equalsIgnoreCase("setup")) {
list.addAll(List.of("lobby","redspawn","bluespawn","ballspawn","center",
"redgoalmin","redgoalmax","bluegoalmin","bluegoalmax",
"fieldmin","fieldmax",
"redpenaltymin","redpenaltymax","bluepenaltymin","bluepenaltymax",
"redpenaltyspot","bluepenaltyspot",
"minplayers","maxplayers","duration","info"));
} else if (args.length == 2 && args[0].equalsIgnoreCase("top")) {
list.addAll(List.of("goals", "wins"));