Update from Git Manager GUI
This commit is contained in:
@@ -281,9 +281,9 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Hologramm-Verwaltung ─────────────────────────────────────────
|
// ── Hologramm-Verwaltung ─────────────────────────────────────────
|
||||||
// /fb hologram set <id> goals|wins|match – Hologramm erstellen
|
// /fb hologram set <arena> goals|wins|match – Hologramm erstellen/verschieben
|
||||||
// /fb hologram remove – Nächstes Hologramm (< 5 Blöcke) entfernen
|
// /fb hologram remove – Nächstes Hologramm (< 5 Blöcke) entfernen
|
||||||
// /fb hologram delete <id> – Hologramm nach ID löschen
|
// /fb hologram delete <arena> goals|wins|match – Hologramm gezielt löschen
|
||||||
// /fb hologram reload – Alle Hologramme neu spawnen
|
// /fb hologram reload – Alle Hologramme neu spawnen
|
||||||
// /fb hologram list – Alle Hologramme anzeigen
|
// /fb hologram list – Alle Hologramme anzeigen
|
||||||
case "hologram", "holo" -> {
|
case "hologram", "holo" -> {
|
||||||
@@ -291,9 +291,9 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
if (!(sender instanceof Player player)) { sender.sendMessage("Nur für Spieler!"); return true; }
|
if (!(sender instanceof Player player)) { sender.sendMessage("Nur für Spieler!"); return true; }
|
||||||
if (args.length < 2) {
|
if (args.length < 2) {
|
||||||
player.sendMessage(MessageUtil.header("Hologramm-Befehle"));
|
player.sendMessage(MessageUtil.header("Hologramm-Befehle"));
|
||||||
player.sendMessage("§e/fb hologram set <id> goals|wins|match §7– Hologramm setzen");
|
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 remove §7– Nächstes entfernen (< 5 Blöcke)");
|
||||||
player.sendMessage("§e/fb hologram delete <id> §7– Nach ID löschen");
|
player.sendMessage("§e/fb hologram delete <arena> goals|wins|match §7– Gezielt löschen");
|
||||||
player.sendMessage("§e/fb hologram reload §7– Alle neu laden");
|
player.sendMessage("§e/fb hologram reload §7– Alle neu laden");
|
||||||
player.sendMessage("§e/fb hologram list §7– Alle anzeigen");
|
player.sendMessage("§e/fb hologram list §7– Alle anzeigen");
|
||||||
player.sendMessage("§7Gesamt: §e" + plugin.getHologramManager().getCount() + " §7Hologramme");
|
player.sendMessage("§7Gesamt: §e" + plugin.getHologramManager().getCount() + " §7Hologramme");
|
||||||
@@ -303,22 +303,26 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
switch (args[1].toLowerCase()) {
|
switch (args[1].toLowerCase()) {
|
||||||
case "set" -> {
|
case "set" -> {
|
||||||
if (args.length < 4) {
|
if (args.length < 4) {
|
||||||
player.sendMessage(MessageUtil.error("Benutze: /fb hologram set <id> goals|wins|match"));
|
player.sendMessage(MessageUtil.error("Benutze: /fb hologram set <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;
|
return true;
|
||||||
}
|
}
|
||||||
String id = args[2];
|
|
||||||
FussballHologram.HoloType type = switch (args[3].toLowerCase()) {
|
FussballHologram.HoloType type = switch (args[3].toLowerCase()) {
|
||||||
case "wins", "siege" -> FussballHologram.HoloType.WINS;
|
case "wins", "siege" -> FussballHologram.HoloType.WINS;
|
||||||
case "match", "live", "game" -> FussballHologram.HoloType.MATCH;
|
case "match", "live", "game" -> FussballHologram.HoloType.MATCH;
|
||||||
default -> FussballHologram.HoloType.GOALS;
|
default -> FussballHologram.HoloType.GOALS;
|
||||||
};
|
};
|
||||||
plugin.getHologramManager().createHologram(id, player.getLocation(), type);
|
String id = buildHologramId(arena.getName(), type);
|
||||||
String holoLabel = switch (type) {
|
plugin.getHologramManager().removeHologram(id);
|
||||||
case WINS -> "Top-10-Siege";
|
if (!plugin.getHologramManager().createHologram(id, player.getLocation(), type)) {
|
||||||
case MATCH -> "Live-Match";
|
player.sendMessage(MessageUtil.error("Konnte das Hologramm für Arena §e" + arena.getName() + " §cund Typ §e" + hologramTypeName(type) + " §cnicht setzen."));
|
||||||
default -> "Top-10-Tore";
|
return true;
|
||||||
};
|
}
|
||||||
player.sendMessage(MessageUtil.success("§e" + id + " §a(" + holoLabel + ") Hologramm gesetzt!"));
|
player.sendMessage(MessageUtil.success("Hologramm §e" + hologramTypeName(type) + " §afür Arena §e" + arena.getName() + " §agesetzt!"));
|
||||||
if (type == FussballHologram.HoloType.MATCH) {
|
if (type == FussballHologram.HoloType.MATCH) {
|
||||||
player.sendMessage("§7§oLive-Match-Hologramm aktualisiert sich automatisch bei Toren und Nachspielzeit.");
|
player.sendMessage("§7§oLive-Match-Hologramm aktualisiert sich automatisch bei Toren und Nachspielzeit.");
|
||||||
} else {
|
} else {
|
||||||
@@ -334,9 +338,28 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "delete" -> {
|
case "delete" -> {
|
||||||
if (args.length < 3) { player.sendMessage(MessageUtil.error("Benutze: /fb hologram delete <id>")); return true; }
|
if (args.length >= 4) {
|
||||||
|
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 = switch (args[3].toLowerCase()) {
|
||||||
|
case "wins", "siege" -> FussballHologram.HoloType.WINS;
|
||||||
|
case "match", "live", "game" -> FussballHologram.HoloType.MATCH;
|
||||||
|
default -> FussballHologram.HoloType.GOALS;
|
||||||
|
};
|
||||||
|
String id = buildHologramId(arena.getName(), type);
|
||||||
|
if (plugin.getHologramManager().removeHologram(id)) {
|
||||||
|
player.sendMessage(MessageUtil.success("Hologramm §e" + hologramTypeName(type) + " §ader Arena §e" + arena.getName() + " §agelöscht!"));
|
||||||
|
} else {
|
||||||
|
player.sendMessage(MessageUtil.error("Kein Hologramm vom Typ §e" + hologramTypeName(type) + " §cfür Arena §e" + arena.getName() + " §cgefunden!"));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length < 3) { player.sendMessage(MessageUtil.error("Benutze: /fb hologram delete <arena> goals|wins|match")); return true; }
|
||||||
if (plugin.getHologramManager().removeHologram(args[2])) {
|
if (plugin.getHologramManager().removeHologram(args[2])) {
|
||||||
player.sendMessage(MessageUtil.success("Hologramm §e" + args[2] + " §agelöscht!"));
|
player.sendMessage(MessageUtil.success("Legacy-Hologramm §e" + args[2] + " §agelöscht!"));
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(MessageUtil.error("Kein Hologramm mit ID §e" + args[2] + "§c gefunden!"));
|
player.sendMessage(MessageUtil.error("Kein Hologramm mit ID §e" + args[2] + "§c gefunden!"));
|
||||||
}
|
}
|
||||||
@@ -351,11 +374,11 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
player.sendMessage(MessageUtil.warn("Keine Hologramme vorhanden."));
|
player.sendMessage(MessageUtil.warn("Keine Hologramme vorhanden."));
|
||||||
} else {
|
} else {
|
||||||
for (String id : plugin.getHologramManager().getHologramIds()) {
|
for (String id : plugin.getHologramManager().getHologramIds()) {
|
||||||
player.sendMessage("§7 • §e" + id);
|
player.sendMessage("§7 • §e" + formatHologramDisplay(id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default -> player.sendMessage(MessageUtil.error("Gültig: set <id> goals|wins|match | remove | delete <id> | reload | list"));
|
default -> player.sendMessage(MessageUtil.error("Gültig: set <arena> goals|wins|match | remove | delete <arena> goals|wins|match | reload | list"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -494,7 +517,7 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
s.sendMessage("§e/fb history [n] §7- Letzte Spiele anzeigen");
|
s.sendMessage("§e/fb history [n] §7- Letzte Spiele anzeigen");
|
||||||
if (s.hasPermission("fussball.admin")) {
|
if (s.hasPermission("fussball.admin")) {
|
||||||
s.sendMessage("§c§lAdmin: §ccreate / delete / setup / stop / debug / dropball");
|
s.sendMessage("§c§lAdmin: §ccreate / delete / setup / stop / debug / dropball");
|
||||||
s.sendMessage("§c§lAdmin: §chologram set goals|wins|match / remove / reload");
|
s.sendMessage("§c§lAdmin: §chologram set <arena> goals|wins|match / remove / reload");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,6 +535,25 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
private String yn(boolean b) { return b ? "§aJA" : "§cNEIN"; }
|
private String yn(boolean b) { return b ? "§aJA" : "§cNEIN"; }
|
||||||
private String locStr(Location l) { return fmt(l.getX()) + " / " + fmt(l.getY()) + " / " + fmt(l.getZ()); }
|
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 fmt(double d) { return String.format("%.1f", d); }
|
||||||
|
private String buildHologramId(String arenaName, FussballHologram.HoloType type) { return arenaName.toLowerCase() + "_" + hologramTypeName(type); }
|
||||||
|
private String hologramTypeName(FussballHologram.HoloType type) {
|
||||||
|
return switch (type) {
|
||||||
|
case WINS -> "wins";
|
||||||
|
case MATCH -> "match";
|
||||||
|
default -> "goals";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
private String formatHologramDisplay(String id) {
|
||||||
|
int split = id.lastIndexOf('_');
|
||||||
|
if (split > 0 && split < id.length() - 1) {
|
||||||
|
String arena = id.substring(0, split);
|
||||||
|
String type = id.substring(split + 1);
|
||||||
|
if (type.equals("goals") || type.equals("wins") || type.equals("match")) {
|
||||||
|
return arena + " §7→ §e" + type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
// ── Tab-Completion ───────────────────────────────────────────────────────
|
// ── Tab-Completion ───────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -526,11 +568,13 @@ public class FussballCommand implements CommandExecutor, TabCompleter {
|
|||||||
} else if (args.length == 2 && args[0].equalsIgnoreCase("hologram")) {
|
} else if (args.length == 2 && args[0].equalsIgnoreCase("hologram")) {
|
||||||
list.addAll(List.of("set", "remove", "delete", "reload", "list"));
|
list.addAll(List.of("set", "remove", "delete", "reload", "list"));
|
||||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
||||||
list.addAll(plugin.getArenaManager().getArenaNames()); // id-Vorschläge (frei wählbar, aber arena-namen passen)
|
list.addAll(plugin.getArenaManager().getArenaNames());
|
||||||
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("set")) {
|
||||||
list.addAll(List.of("goals", "wins", "match"));
|
list.addAll(List.of("goals", "wins", "match"));
|
||||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("delete")) {
|
} else if (args.length == 3 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("delete")) {
|
||||||
list.addAll(plugin.getHologramManager().getHologramIds());
|
list.addAll(plugin.getArenaManager().getArenaNames());
|
||||||
|
} else if (args.length == 4 && args[0].equalsIgnoreCase("hologram") && args[1].equalsIgnoreCase("delete")) {
|
||||||
|
list.addAll(List.of("goals", "wins", "match"));
|
||||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("setgk")) {
|
} else if (args.length == 3 && args[0].equalsIgnoreCase("setgk")) {
|
||||||
// Spielernamen aus dem aktiven Spiel vorschlagen
|
// Spielernamen aus dem aktiven Spiel vorschlagen
|
||||||
Game gkGame = plugin.getGameManager().getGame(args[1]);
|
Game gkGame = plugin.getGameManager().getGame(args[1]);
|
||||||
|
|||||||
@@ -123,10 +123,12 @@ public class HologramManager implements Listener {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstellt ein neues Hologramm und speichert es in holograms.yml.
|
* Erstellt ein neues Hologramm und speichert es in holograms.yml.
|
||||||
* Falls die ID bereits existiert, wird das alte sauber entfernt.
|
* Falls die ID bereits existiert, wird kein Hologramm ersetzt.
|
||||||
*/
|
*/
|
||||||
public boolean createHologram(String id, Location loc, FussballHologram.HoloType type) {
|
public boolean createHologram(String id, Location loc, FussballHologram.HoloType type) {
|
||||||
if (holograms.containsKey(id)) removeHologram(id);
|
if (holograms.containsKey(id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
String path = "holograms." + id;
|
String path = "holograms." + id;
|
||||||
holoConfig.set(path + ".world", loc.getWorld().getName());
|
holoConfig.set(path + ".world", loc.getWorld().getName());
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: Fussball
|
name: Fussball
|
||||||
version: 1.0.1
|
version: 1.0.2
|
||||||
main: de.fussball.plugin.Fussball
|
main: de.fussball.plugin.Fussball
|
||||||
api-version: 1.21
|
api-version: 1.21
|
||||||
author: M_Viper
|
author: M_Viper
|
||||||
|
|||||||
Reference in New Issue
Block a user