Upload folder via GUI - src

This commit is contained in:
Git Manager GUI
2026-04-18 08:39:58 +02:00
parent b46af01475
commit c3a8f15f6d
9 changed files with 102 additions and 394 deletions

View File

@@ -153,15 +153,57 @@ public class HologramModule implements Module, Listener {
saveHoloConfig();
}
/**
* Lädt die holograms.yml neu und rendert alle Hologramme für Online-Spieler neu.
* Wird von HoloCommand (/holo reload) aufgerufen.
*/
public void reloadHolograms() {
// Alle aktiven Hologramme für alle Spieler entfernen
for (Player player : Bukkit.getOnlinePlayers()) {
holograms.values().forEach(h -> h.removeForPlayer(player));
}
// Config neu einlesen und Hologramme neu laden
loadConfig();
loadHolograms();
}
private void saveHoloConfig() {
try {
config.save(file);
} catch (IOException e) {
try {
// Sicherstellen, dass Placeholder-Strings (z.B. %bungeetotal%) korrekt
// gequotet gespeichert werden, damit SnakeYAML sie nicht als YAML-Direktive
// missinterpretiert. Dazu speichern wir die text-Listen explizit als
// String-Werte mit einfachen Anführungszeichen via eigener Serialisierung.
StringBuilder yaml = new StringBuilder();
for (String id : config.getKeys(false)) {
yaml.append(id).append(":\n");
yaml.append(" world: ").append(quoteIfNeeded(config.getString(id + ".world", ""))).append("\n");
yaml.append(" x: ").append(config.getDouble(id + ".x")).append("\n");
yaml.append(" y: ").append(config.getDouble(id + ".y")).append("\n");
yaml.append(" z: ").append(config.getDouble(id + ".z")).append("\n");
yaml.append(" text:\n");
for (String line : config.getStringList(id + ".text")) {
yaml.append(" - ").append(quoteIfNeeded(line)).append("\n");
}
}
java.nio.file.Files.writeString(file.toPath(), yaml.toString());
} catch (IOException e) {
NexusLobby.getInstance().getLogger().severe("Konnte holograms.yml nicht speichern!");
NexusLobby.getInstance().getLogger().severe("Fehler beim Speichern der Hologramme: " + e.getMessage());
}
}
/**
* Umschließt Strings mit einfachen Anführungszeichen, wenn sie YAML-Sonderzeichen
* wie '%', ':', '#' enthalten, um Parsing-Fehler zu vermeiden.
*/
private String quoteIfNeeded(String value) {
if (value == null) return "''";
if (value.contains("%") || value.contains(":") || value.contains("#") || value.contains("'")) {
return "'" + value.replace("'", "''") + "'";
}
return value;
}
/**
* WICHTIG: Diese Methode wird vom LobbyTabCompleter benötigt!
* @return Set aller registrierten Hologramm-IDs