Update from Git Manager GUI
This commit is contained in:
@@ -11,6 +11,7 @@ import de.fussball.plugin.hologram.HologramManager;
|
||||
import de.fussball.plugin.stats.MatchHistory;
|
||||
import de.fussball.plugin.stats.StatsManager;
|
||||
import de.fussball.plugin.utils.MessageUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.*;
|
||||
@@ -81,6 +82,36 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
}
|
||||
|
||||
case "stats" -> {
|
||||
if (args.length >= 2 && args[1].equalsIgnoreCase("reset")) {
|
||||
if (!sender.hasPermission("fussball.admin")) { sender.sendMessage(MessageUtil.error("Keine Berechtigung!")); return true; }
|
||||
if (args.length < 3) { sender.sendMessage(MessageUtil.error("Benutze: /fb stats reset <spieler|all>")); return true; }
|
||||
|
||||
if (args[2].equalsIgnoreCase("all") || args[2].equalsIgnoreCase("*")) {
|
||||
int removed = plugin.getStatsManager().resetAllStats();
|
||||
plugin.getHologramManager().refreshAll();
|
||||
sender.sendMessage(MessageUtil.success("Alle Statistiken zurückgesetzt! §7(" + removed + " Einträge)"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player onlineTarget = Bukkit.getPlayerExact(args[2]);
|
||||
UUID targetUuid = onlineTarget != null
|
||||
? onlineTarget.getUniqueId()
|
||||
: plugin.getStatsManager().findPlayerUuidByName(args[2]);
|
||||
if (targetUuid == null) {
|
||||
sender.sendMessage(MessageUtil.error("Keine gespeicherten Statistiken für §e" + args[2] + " §cgefunden!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!plugin.getStatsManager().resetStats(targetUuid)) {
|
||||
sender.sendMessage(MessageUtil.error("Statistiken von §e" + args[2] + " §ckonnten nicht zurückgesetzt werden."));
|
||||
return true;
|
||||
}
|
||||
|
||||
plugin.getHologramManager().refreshAll();
|
||||
sender.sendMessage(MessageUtil.success("Statistiken von §e" + args[2] + " §azurückgesetzt!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(sender instanceof Player player)) { sender.sendMessage("Nur für Spieler!"); return true; }
|
||||
Player target = args.length >= 2 ? Bukkit.getPlayer(args[1]) : player;
|
||||
if (target == null) { player.sendMessage(MessageUtil.error("Spieler §e" + args[1] + " §cnicht gefunden!")); return true; }
|
||||
@@ -294,6 +325,9 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
player.sendMessage("§e/fb hologram set <arena> goals|wins|match §7– Hologramm setzen");
|
||||
player.sendMessage("§e/fb hologram remove §7– Nächstes entfernen (< 5 Blöcke)");
|
||||
player.sendMessage("§e/fb hologram delete <arena> goals|wins|match §7– Gezielt löschen");
|
||||
player.sendMessage("§e/fb hologram text <arena> goals|wins|match <zeile> <text> §7– Textzeile anpassen");
|
||||
player.sendMessage("§e/fb hologram textpreview <arena> goals|wins|match §7– Aktuelles Textlayout ansehen");
|
||||
player.sendMessage("§e/fb hologram textreset <arena> goals|wins|match §7– Standardtext wiederherstellen");
|
||||
player.sendMessage("§e/fb hologram reload §7– Alle neu laden");
|
||||
player.sendMessage("§e/fb hologram list §7– Alle anzeigen");
|
||||
player.sendMessage("§7Gesamt: §e" + plugin.getHologramManager().getCount() + " §7Hologramme");
|
||||
@@ -364,6 +398,98 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
player.sendMessage(MessageUtil.error("Kein Hologramm mit ID §e" + args[2] + "§c gefunden!"));
|
||||
}
|
||||
}
|
||||
case "text" -> {
|
||||
if (args.length < 6) {
|
||||
player.sendMessage(MessageUtil.error("Benutze: /fb hologram text <arena> goals|wins|match <zeile> <text>"));
|
||||
return true;
|
||||
}
|
||||
Arena arena = plugin.getArenaManager().getArena(args[2]);
|
||||
if (arena == null) {
|
||||
player.sendMessage(MessageUtil.error("Arena §e" + args[2] + " §cnicht gefunden!"));
|
||||
return true;
|
||||
}
|
||||
FussballHologram.HoloType type = parseHologramType(args[3]);
|
||||
int line;
|
||||
try {
|
||||
line = Integer.parseInt(args[4]);
|
||||
} catch (NumberFormatException ex) {
|
||||
player.sendMessage(MessageUtil.error("§e" + args[4] + " §cist keine gültige Zeilennummer!"));
|
||||
return true;
|
||||
}
|
||||
if (line < 1) {
|
||||
player.sendMessage(MessageUtil.error("Zeilennummer muss mindestens §e1 §csein!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
String id = buildHologramId(arena.getName(), type);
|
||||
HologramManager hologramManager = plugin.getHologramManager();
|
||||
if (hologramManager.getHologram(id) == null) {
|
||||
player.sendMessage(MessageUtil.error("Hologramm §e" + hologramTypeName(type) + " §cfür Arena §e" + arena.getName() + " §cexistiert nicht!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
List<String> lines = new ArrayList<>(getEditableHologramTemplate(hologramManager, id, type));
|
||||
while (lines.size() < line) {
|
||||
lines.add(" ");
|
||||
}
|
||||
lines.set(line - 1, ChatColor.translateAlternateColorCodes('&', joinArgs(args, 5)));
|
||||
|
||||
if (!hologramManager.setCustomText(id, type, lines)) {
|
||||
player.sendMessage(MessageUtil.error("Konnte den Hologramm-Text nicht speichern!"));
|
||||
return true;
|
||||
}
|
||||
player.sendMessage(MessageUtil.success("Hologramm-Text für §e" + arena.getName() + " §a(" + hologramTypeName(type) + ") aktualisiert."));
|
||||
player.sendMessage("§7Zeile §e" + line + "§7: " + lines.get(line - 1));
|
||||
}
|
||||
case "textpreview" -> {
|
||||
if (args.length < 4) {
|
||||
player.sendMessage(MessageUtil.error("Benutze: /fb hologram textpreview <arena> goals|wins|match"));
|
||||
return true;
|
||||
}
|
||||
Arena arena = plugin.getArenaManager().getArena(args[2]);
|
||||
if (arena == null) {
|
||||
player.sendMessage(MessageUtil.error("Arena §e" + args[2] + " §cnicht gefunden!"));
|
||||
return true;
|
||||
}
|
||||
FussballHologram.HoloType type = parseHologramType(args[3]);
|
||||
String id = buildHologramId(arena.getName(), type);
|
||||
HologramManager hologramManager = plugin.getHologramManager();
|
||||
if (hologramManager.getHologram(id) == null) {
|
||||
player.sendMessage(MessageUtil.error("Hologramm §e" + hologramTypeName(type) + " §cfür Arena §e" + arena.getName() + " §cexistiert nicht!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
List<String> lines = getEditableHologramTemplate(hologramManager, id, type);
|
||||
player.sendMessage(MessageUtil.header("Holo-Text: " + arena.getName() + " / " + hologramTypeName(type)));
|
||||
for (int i = 0; i < lines.size(); i++) {
|
||||
player.sendMessage("§e" + (i + 1) + "§7: " + lines.get(i));
|
||||
}
|
||||
if (type == FussballHologram.HoloType.MATCH) {
|
||||
player.sendMessage("§8Platzhalter: §7{header} {separator} {phase} {score} {time}");
|
||||
} else {
|
||||
player.sendMessage("§8Platzhalter: §7{title} {separator} {entries} {toggle}");
|
||||
}
|
||||
}
|
||||
case "textreset" -> {
|
||||
if (args.length < 4) {
|
||||
player.sendMessage(MessageUtil.error("Benutze: /fb hologram textreset <arena> goals|wins|match"));
|
||||
return true;
|
||||
}
|
||||
Arena arena = plugin.getArenaManager().getArena(args[2]);
|
||||
if (arena == null) {
|
||||
player.sendMessage(MessageUtil.error("Arena §e" + args[2] + " §cnicht gefunden!"));
|
||||
return true;
|
||||
}
|
||||
FussballHologram.HoloType type = parseHologramType(args[3]);
|
||||
String id = buildHologramId(arena.getName(), type);
|
||||
HologramManager hologramManager = plugin.getHologramManager();
|
||||
if (hologramManager.getHologram(id) == null) {
|
||||
player.sendMessage(MessageUtil.error("Hologramm §e" + hologramTypeName(type) + " §cfür Arena §e" + arena.getName() + " §cexistiert nicht!"));
|
||||
return true;
|
||||
}
|
||||
hologramManager.resetCustomText(id, type);
|
||||
player.sendMessage(MessageUtil.success("Standardtext für §e" + arena.getName() + " §a(" + hologramTypeName(type) + ") wiederhergestellt."));
|
||||
}
|
||||
case "reload" -> {
|
||||
plugin.getHologramManager().reload();
|
||||
player.sendMessage(MessageUtil.success("Hologramme neu geladen! §7(" + plugin.getHologramManager().getCount() + " gesamt)"));
|
||||
@@ -378,7 +504,7 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
}
|
||||
}
|
||||
}
|
||||
default -> player.sendMessage(MessageUtil.error("Gültig: set <arena> goals|wins|match | remove | delete <arena> goals|wins|match | reload | list"));
|
||||
default -> player.sendMessage(MessageUtil.error("Gültig: set | remove | delete | text | textpreview | textreset | reload | list"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -517,7 +643,8 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
s.sendMessage("§e/fb history [n] §7- Letzte Spiele anzeigen");
|
||||
if (s.hasPermission("fussball.admin")) {
|
||||
s.sendMessage("§c§lAdmin: §ccreate / delete / setup / stop / debug / dropball");
|
||||
s.sendMessage("§c§lAdmin: §chologram set <arena> goals|wins|match / remove / reload");
|
||||
s.sendMessage("§c§lAdmin: §cstats reset <spieler|all>");
|
||||
s.sendMessage("§c§lAdmin: §chologram set|delete|text|textpreview|textreset <arena> <typ>");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -536,6 +663,24 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
private String locStr(Location l) { return fmt(l.getX()) + " / " + fmt(l.getY()) + " / " + fmt(l.getZ()); }
|
||||
private String fmt(double d) { return String.format("%.1f", d); }
|
||||
private String buildHologramId(String arenaName, FussballHologram.HoloType type) { return arenaName.toLowerCase() + "_" + hologramTypeName(type); }
|
||||
private String joinArgs(String[] args, int start) { return String.join(" ", Arrays.copyOfRange(args, start, args.length)); }
|
||||
private List<String> getEditableHologramTemplate(HologramManager hologramManager, String id, FussballHologram.HoloType type) {
|
||||
List<String> custom = hologramManager.getCustomText(id, type);
|
||||
return custom.isEmpty() ? getDefaultHologramTemplate(type) : custom;
|
||||
}
|
||||
private List<String> getDefaultHologramTemplate(FussballHologram.HoloType type) {
|
||||
if (type == FussballHologram.HoloType.MATCH) {
|
||||
return List.of("{header}", "{separator}", "{phase}", "{score}", "{time}");
|
||||
}
|
||||
return List.of("{title}", "{separator}", "{entries}", "{separator}", "{toggle}");
|
||||
}
|
||||
private FussballHologram.HoloType parseHologramType(String rawType) {
|
||||
return switch (rawType.toLowerCase()) {
|
||||
case "wins", "siege" -> FussballHologram.HoloType.WINS;
|
||||
case "match", "live", "game" -> FussballHologram.HoloType.MATCH;
|
||||
default -> FussballHologram.HoloType.GOALS;
|
||||
};
|
||||
}
|
||||
private String hologramTypeName(FussballHologram.HoloType type) {
|
||||
return switch (type) {
|
||||
case WINS -> "wins";
|
||||
@@ -565,16 +710,21 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
||||
if (sender.hasPermission("fussball.admin")) list.addAll(List.of("create", "delete", "setup", "stop", "setgk", "debug", "hologram", "dropball"));
|
||||
} else if (args.length == 2 && List.of("join","delete","setup","stop","setgk","debug","spectate","dropball").contains(args[0].toLowerCase())) {
|
||||
list.addAll(plugin.getArenaManager().getArenaNames());
|
||||
} else if (args.length == 2 && args[0].equalsIgnoreCase("stats") && sender.hasPermission("fussball.admin")) {
|
||||
list.addAll(List.of("reset"));
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("stats") && args[1].equalsIgnoreCase("reset") && sender.hasPermission("fussball.admin")) {
|
||||
list.add("all");
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
list.add(onlinePlayer.getName());
|
||||
}
|
||||
} else if (args.length == 2 && args[0].equalsIgnoreCase("hologram")) {
|
||||
list.addAll(List.of("set", "remove", "delete", "reload", "list"));
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
||||
list.addAll(List.of("set", "remove", "delete", "text", "textpreview", "textreset", "reload", "list"));
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && List.of("set", "delete", "text", "textpreview", "textreset").contains(args[1].toLowerCase())) {
|
||||
list.addAll(plugin.getArenaManager().getArenaNames());
|
||||
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
||||
list.addAll(List.of("goals", "wins", "match"));
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("delete")) {
|
||||
list.addAll(plugin.getArenaManager().getArenaNames());
|
||||
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("delete")) {
|
||||
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && List.of("set", "delete", "text", "textpreview", "textreset").contains(args[1].toLowerCase())) {
|
||||
list.addAll(List.of("goals", "wins", "match"));
|
||||
} else if (args.length == 5 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("text")) {
|
||||
list.addAll(List.of("1", "2", "3", "4", "5"));
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("setgk")) {
|
||||
// Spielernamen aus dem aktiven Spiel vorschlagen
|
||||
Game gkGame = plugin.getGameManager().getGame(args[1]);
|
||||
|
||||
Reference in New Issue
Block a user