Upload folder via GUI - src
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user