src/main/java/viper/ConfigManager.java aktualisiert
This commit is contained in:
@@ -3,8 +3,8 @@ package viper;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class ConfigManager {
|
public class ConfigManager {
|
||||||
private final ButtonControl plugin;
|
private final ButtonControl plugin;
|
||||||
@@ -25,7 +25,11 @@ public class ConfigManager {
|
|||||||
plugin.saveResource("config.yml", false);
|
plugin.saveResource("config.yml", false);
|
||||||
}
|
}
|
||||||
config = YamlConfiguration.loadConfiguration(configFile);
|
config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
// Setze Standardwerte, falls sie fehlen
|
|
||||||
|
// Fehlende Defaults aus der Jar-Version einfügen
|
||||||
|
mergeDefaults(config, "config.yml", configFile);
|
||||||
|
|
||||||
|
// bestehende setConfigDefaults (nur für alte Backwards-Kompatibilität)
|
||||||
setConfigDefaults();
|
setConfigDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,116 +39,118 @@ public class ConfigManager {
|
|||||||
plugin.saveResource("lang.yml", false);
|
plugin.saveResource("lang.yml", false);
|
||||||
}
|
}
|
||||||
lang = YamlConfiguration.loadConfiguration(langFile);
|
lang = YamlConfiguration.loadConfiguration(langFile);
|
||||||
// Setze Standardnachrichten, falls sie fehlen
|
|
||||||
|
// Fehlende Defaults aus der Jar-Version einfügen
|
||||||
|
mergeDefaults(lang, "lang.yml", langFile);
|
||||||
|
|
||||||
|
// bestehende setLangDefaults
|
||||||
setLangDefaults();
|
setLangDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ergänzt fehlende Keys aus der im Jar enthaltenen Datei.
|
||||||
|
*/
|
||||||
|
private void mergeDefaults(FileConfiguration file, String resourceName, File targetFile) {
|
||||||
|
try (InputStream is = plugin.getResource(resourceName);
|
||||||
|
InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
|
||||||
|
if (is == null) {
|
||||||
|
plugin.getLogger().warning(resourceName + " nicht im Plugin-Jar gefunden, Merge übersprungen.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FileConfiguration defaults = YamlConfiguration.loadConfiguration(reader);
|
||||||
|
boolean changed = false;
|
||||||
|
for (String key : defaults.getKeys(true)) {
|
||||||
|
if (!file.contains(key)) {
|
||||||
|
file.set(key, defaults.get(key));
|
||||||
|
changed = true;
|
||||||
|
plugin.getLogger().info("[ConfigManager] Neuer Key in " + resourceName + " hinzugefügt: " + key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changed) {
|
||||||
|
file.save(targetFile);
|
||||||
|
plugin.getLogger().info(resourceName + " wurde mit neuen Standardwerten ergänzt.");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
plugin.getLogger().severe("Fehler beim Mergen von " + resourceName + ": " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void setConfigDefaults() {
|
private void setConfigDefaults() {
|
||||||
if (!config.contains("max-doors")) {
|
if (!config.contains("max-doors")) config.set("max-doors", 20);
|
||||||
config.set("max-doors", 20);
|
if (!config.contains("max-lamps")) config.set("max-lamps", 50);
|
||||||
}
|
if (!config.contains("max-noteblocks")) config.set("max-noteblocks", 10);
|
||||||
if (!config.contains("max-lamps")) {
|
if (!config.contains("max-gates")) config.set("max-gates", 20);
|
||||||
config.set("max-lamps", 50);
|
if (!config.contains("max-trapdoors")) config.set("max-trapdoors", 20);
|
||||||
}
|
if (!config.contains("max-bells")) config.set("max-bells", 5);
|
||||||
if (!config.contains("max-noteblocks")) {
|
if (!config.contains("default-note")) config.set("default-note", "PIANO");
|
||||||
config.set("max-noteblocks", 10);
|
if (!config.contains("double-note-enabled")) config.set("double-note-enabled", true);
|
||||||
}
|
if (!config.contains("double-note-delay-ms")) config.set("double-note-delay-ms", 1000);
|
||||||
if (!config.contains("default-note")) {
|
|
||||||
config.set("default-note", "PIANO");
|
|
||||||
}
|
|
||||||
if (!config.contains("double-note-enabled")) {
|
|
||||||
config.set("double-note-enabled", true);
|
|
||||||
}
|
|
||||||
if (!config.contains("double-note-delay-ms")) {
|
|
||||||
config.set("double-note-delay-ms", 1000);
|
|
||||||
}
|
|
||||||
saveConfig();
|
saveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLangDefaults() {
|
private void setLangDefaults() {
|
||||||
// Standardnachrichten hinzufügen, ohne bestehende zu überschreiben
|
// Beispiel: nur wenn Key fehlt, setzen – alle Keys wie in deiner Version bleiben hier
|
||||||
if (!lang.contains("tueren-geoeffnet")) {
|
if (!lang.contains("tueren-geoeffnet")) lang.set("tueren-geoeffnet", "§aTüren wurden geöffnet.");
|
||||||
lang.set("tueren-geoeffnet", "§aTüren wurden geöffnet.");
|
if (!lang.contains("tueren-geschlossen")) lang.set("tueren-geschlossen", "§cTüren wurden geschlossen.");
|
||||||
}
|
if (!lang.contains("max-tueren-erreicht")) lang.set("max-tueren-erreicht", "§cMaximale Anzahl an Türen erreicht.");
|
||||||
if (!lang.contains("tueren-geschlossen")) {
|
|
||||||
lang.set("tueren-geschlossen", "§cTüren wurden geschlossen.");
|
if (!lang.contains("lampen-eingeschaltet")) lang.set("lampen-eingeschaltet", "§aLampen wurden eingeschaltet.");
|
||||||
}
|
if (!lang.contains("lampen-ausgeschaltet")) lang.set("lampen-ausgeschaltet", "§cLampen wurden ausgeschaltet.");
|
||||||
if (!lang.contains("lampen-eingeschaltet")) {
|
if (!lang.contains("max-lampen-erreicht")) lang.set("max-lampen-erreicht", "§cMaximale Anzahl an Lampen erreicht.");
|
||||||
lang.set("lampen-eingeschaltet", "§aLampen wurden eingeschaltet.");
|
|
||||||
}
|
if (!lang.contains("notenblock-ausgeloest")) lang.set("notenblock-ausgeloest", "§aNotenblock-Klingel wurde ausgelöst.");
|
||||||
if (!lang.contains("lampen-ausgeschaltet")) {
|
if (!lang.contains("max-notenbloecke-erreicht")) lang.set("max-notenbloecke-erreicht", "§cMaximale Anzahl an Notenblöcken erreicht.");
|
||||||
lang.set("lampen-ausgeschaltet", "§cLampen wurden ausgeschaltet.");
|
|
||||||
}
|
if (!lang.contains("gates-geoeffnet")) lang.set("gates-geoeffnet", "§aZauntore wurden geöffnet.");
|
||||||
if (!lang.contains("bloecke-umgeschaltet")) {
|
if (!lang.contains("gates-geschlossen")) lang.set("gates-geschlossen", "§cZauntore wurden geschlossen.");
|
||||||
lang.set("bloecke-umgeschaltet", "§eBlöcke wurden umgeschaltet.");
|
if (!lang.contains("max-gates-erreicht")) lang.set("max-gates-erreicht", "§cMaximale Anzahl an Zauntoren erreicht.");
|
||||||
}
|
|
||||||
if (!lang.contains("keine-bloecke-verbunden")) {
|
if (!lang.contains("fallturen-geoeffnet")) lang.set("fallturen-geoeffnet", "§aFalltüren wurden geöffnet.");
|
||||||
lang.set("keine-bloecke-verbunden", "§cKeine Blöcke sind verbunden.");
|
if (!lang.contains("fallturen-geschlossen")) lang.set("fallturen-geschlossen", "§cFalltüren wurden geschlossen.");
|
||||||
}
|
if (!lang.contains("max-fallturen-erreicht")) lang.set("max-fallturen-erreicht", "§cMaximale Anzahl an Falltüren erreicht.");
|
||||||
if (!lang.contains("max-tueren-erreicht")) {
|
|
||||||
lang.set("max-tueren-erreicht", "§cMaximale Anzahl an Türen erreicht.");
|
if (!lang.contains("glocke-gelaeutet")) lang.set("glocke-gelaeutet", "§eGlocke wurde geläutet.");
|
||||||
}
|
if (!lang.contains("max-glocken-erreicht")) lang.set("max-glocken-erreicht", "§cMaximale Anzahl an Glocken erreicht.");
|
||||||
if (!lang.contains("max-lampen-erreicht")) {
|
|
||||||
lang.set("max-lampen-erreicht", "§cMaximale Anzahl an Lampen erreicht.");
|
if (!lang.contains("bloecke-umgeschaltet")) lang.set("bloecke-umgeschaltet", "§eBlöcke wurden umgeschaltet.");
|
||||||
}
|
if (!lang.contains("keine-bloecke-verbunden")) lang.set("keine-bloecke-verbunden", "§cKeine Blöcke sind verbunden.");
|
||||||
if (!lang.contains("max-notenbloecke-erreicht")) {
|
if (!lang.contains("block-verbunden")) lang.set("block-verbunden", "§aBlock verbunden.");
|
||||||
lang.set("max-notenbloecke-erreicht", "§cMaximale Anzahl an Notenblöcken erreicht.");
|
if (!lang.contains("block-bereits-verbunden")) lang.set("block-bereits-verbunden", "§cBlock ist bereits verbunden.");
|
||||||
}
|
if (!lang.contains("controller-platziert")) lang.set("controller-platziert", "§aController platziert.");
|
||||||
if (!lang.contains("block-verbunden")) {
|
if (!lang.contains("controller-entfernt")) lang.set("controller-entfernt", "§cController entfernt.");
|
||||||
lang.set("block-verbunden", "§aBlock verbunden.");
|
if (!lang.contains("instrument-gesetzt")) lang.set("instrument-gesetzt", "§aDein Notenblock-Instrument wurde auf %s gesetzt.");
|
||||||
}
|
if (!lang.contains("ungueltiges-instrument")) lang.set("ungueltiges-instrument", "§cUngültiges Instrument! Verwende: /bc note <Instrument>");
|
||||||
if (!lang.contains("block-bereits-verbunden")) {
|
if (!lang.contains("konfiguration-reloaded")) lang.set("konfiguration-reloaded", "§aKonfiguration und Daten erfolgreich neu geladen!");
|
||||||
lang.set("block-bereits-verbunden", "§cBlock ist bereits verbunden.");
|
if (!lang.contains("keine-berechtigung")) lang.set("keine-berechtigung", "§cDu hast keine Berechtigung für diesen Befehl!");
|
||||||
}
|
if (!lang.contains("kolben-ausgefahren")) lang.set("kolben-ausgefahren", "§6[ButtonControl] §7Kolben wurden ausgefahren.");
|
||||||
if (!lang.contains("controller-platziert")) {
|
if (!lang.contains("kolben-eingefahren")) lang.set("kolben-eingefahren", "§6[ButtonControl] §7Kolben wurden eingezogen.");
|
||||||
lang.set("controller-platziert", "§aController platziert.");
|
if (!lang.contains("max-kolben-erreicht")) lang.set("max-kolben-erreicht", "§6[ButtonControl] §7Maximale Anzahl an Kolben erreicht.");
|
||||||
}
|
|
||||||
if (!lang.contains("controller-entfernt")) {
|
|
||||||
lang.set("controller-entfernt", "§cController entfernt.");
|
|
||||||
}
|
|
||||||
if (!lang.contains("notenblock-ausgeloest")) {
|
|
||||||
lang.set("notenblock-ausgeloest", "§aNotenblock-Klingel wurde ausgelöst.");
|
|
||||||
}
|
|
||||||
if (!lang.contains("instrument-gesetzt")) {
|
|
||||||
lang.set("instrument-gesetzt", "§aDein Notenblock-Instrument wurde auf %s gesetzt.");
|
|
||||||
}
|
|
||||||
if (!lang.contains("ungueltiges-instrument")) {
|
|
||||||
lang.set("ungueltiges-instrument", "§cUngültiges Instrument! Verwende: /bc note <Instrument>");
|
|
||||||
}
|
|
||||||
if (!lang.contains("konfiguration-reloaded")) {
|
|
||||||
lang.set("konfiguration-reloaded", "§aKonfiguration und Daten erfolgreich neu geladen!");
|
|
||||||
}
|
|
||||||
if (!lang.contains("keine-berechtigung")) {
|
|
||||||
lang.set("keine-berechtigung", "§cDu hast keine Berechtigung für diesen Befehl!");
|
|
||||||
}
|
|
||||||
saveLang();
|
saveLang();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadConfig() {
|
public void reloadConfig() {
|
||||||
config = YamlConfiguration.loadConfiguration(configFile);
|
config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
lang = YamlConfiguration.loadConfiguration(langFile);
|
lang = YamlConfiguration.loadConfiguration(langFile);
|
||||||
setConfigDefaults(); // Stelle sicher, dass neue Standardwerte hinzugefügt werden
|
mergeDefaults(config, "config.yml", configFile);
|
||||||
setLangDefaults(); // Stelle sicher, dass neue Nachrichten hinzugefügt werden
|
mergeDefaults(lang, "lang.yml", langFile);
|
||||||
|
setConfigDefaults();
|
||||||
|
setLangDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileConfiguration getConfig() {
|
public FileConfiguration getConfig() {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxDoors() {
|
public int getMaxDoors() { return config.getInt("max-doors", 20); }
|
||||||
return config.getInt("max-doors", 20);
|
public int getMaxLamps() { return config.getInt("max-lamps", 50); }
|
||||||
}
|
public int getMaxNoteBlocks() { return config.getInt("max-noteblocks", 10); }
|
||||||
|
public int getMaxGates() { return config.getInt("max-gates", getMaxDoors()); }
|
||||||
public int getMaxLamps() {
|
public int getMaxTrapdoors() { return config.getInt("max-trapdoors", getMaxDoors()); }
|
||||||
return config.getInt("max-lamps", 50);
|
public int getMaxBells() { return config.getInt("max-bells", 5); }
|
||||||
}
|
|
||||||
|
|
||||||
public int getMaxNoteBlocks() {
|
|
||||||
return config.getInt("max-noteblocks", 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage(String key) {
|
public String getMessage(String key) {
|
||||||
return lang.getString(key, "Nachricht nicht gefunden: " + key);
|
return lang.getString(key, "§cNachricht nicht gefunden: " + key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveConfig() {
|
public void saveConfig() {
|
||||||
|
Reference in New Issue
Block a user