diff --git a/src/main/java/viper/DataManager.java b/src/main/java/viper/DataManager.java index 54264ed..83095ec 100644 --- a/src/main/java/viper/DataManager.java +++ b/src/main/java/viper/DataManager.java @@ -1,118 +1,122 @@ -package viper; - -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -public class DataManager { - private final ButtonControl plugin; - private FileConfiguration data; - private File dataFile; - - public DataManager(ButtonControl plugin) { - this.plugin = plugin; - loadData(); - } - - private void loadData() { - dataFile = new File(plugin.getDataFolder(), "data.yml"); - if (!dataFile.exists()) { - plugin.saveResource("data.yml", false); - } - data = YamlConfiguration.loadConfiguration(dataFile); - } - - // --- Spielerbasierte Methoden --- - - public List getConnectedBlocks(String playerUUID, String buttonId) { - return data.getStringList("players." + playerUUID + ".buttons." + buttonId); - } - - public void setConnectedBlocks(String playerUUID, String buttonId, List blocks) { - data.set("players." + playerUUID + ".buttons." + buttonId, blocks); - saveData(); - } - - public void addPlacedController(String playerUUID, String location, String buttonId) { - data.set("players." + playerUUID + ".placed-controllers." + location, buttonId); - saveData(); - } - - public String getButtonIdForPlacedController(String playerUUID, String location) { - return data.getString("players." + playerUUID + ".placed-controllers." + location); - } - - public void removePlacedController(String playerUUID, String location) { - data.set("players." + playerUUID + ".placed-controllers." + location, null); - saveData(); - } - - public List getAllPlacedControllers(String playerUUID) { - if (data.getConfigurationSection("players." + playerUUID + ".placed-controllers") == null) { - return new ArrayList<>(); - } - Set keys = data.getConfigurationSection("players." + playerUUID + ".placed-controllers").getKeys(false); - return new ArrayList<>(keys); - } - - // --- Neue globale Methoden für Tageslichtsensoren etc. --- - - /** - * Gibt alle Controller-Orte aller Spieler zurück (global). - * Nützlich für Tageslichtsensoren. - */ - public List getAllPlacedControllers() { - List allControllers = new ArrayList<>(); - if (data.getConfigurationSection("players") == null) { - return allControllers; - } - Set players = data.getConfigurationSection("players").getKeys(false); - for (String playerUUID : players) { - allControllers.addAll(getAllPlacedControllers(playerUUID)); - } - return allControllers; - } - - /** - * Holt die Button-ID für einen platzierten Controller an einem Ort, ohne Spieler-UUID (global). - * Da Controller pro Spieler gespeichert sind, suchen wir alle Spieler ab. - */ - public String getButtonIdForPlacedController(String location) { - if (data.getConfigurationSection("players") == null) return null; - Set players = data.getConfigurationSection("players").getKeys(false); - for (String playerUUID : players) { - String buttonId = getButtonIdForPlacedController(playerUUID, location); - if (buttonId != null) return buttonId; - } - return null; - } - - /** - * Holt die verbundenen Blöcke für eine Button-ID (global). - * Da die verbundenen Blöcke pro Spieler gespeichert sind, suchen wir alle Spieler ab. - */ - public List getConnectedBlocks(String buttonId) { - if (data.getConfigurationSection("players") == null) return null; - Set players = data.getConfigurationSection("players").getKeys(false); - for (String playerUUID : players) { - List connected = getConnectedBlocks(playerUUID, buttonId); - if (connected != null && !connected.isEmpty()) { - return connected; - } - } - return null; - } - - public void saveData() { - try { - data.save(dataFile); - } catch (IOException e) { - plugin.getLogger().severe("Konnte data.yml nicht speichern: " + e.getMessage()); - } - } -} +package viper; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +public class DataManager { + private final ButtonControl plugin; + private FileConfiguration data; + private File dataFile; + + public DataManager(ButtonControl plugin) { + this.plugin = plugin; + loadData(); + } + + private void loadData() { + dataFile = new File(plugin.getDataFolder(), "data.yml"); + if (!dataFile.exists()) { + plugin.saveResource("data.yml", false); + } + data = YamlConfiguration.loadConfiguration(dataFile); + } + + public void reloadData() { + data = YamlConfiguration.loadConfiguration(dataFile); + } + + // --- Spielerbasierte Methoden --- + + public List getConnectedBlocks(String playerUUID, String buttonId) { + return data.getStringList("players." + playerUUID + ".buttons." + buttonId); + } + + public void setConnectedBlocks(String playerUUID, String buttonId, List blocks) { + data.set("players." + playerUUID + ".buttons." + buttonId, blocks); + saveData(); + } + + public void addPlacedController(String playerUUID, String location, String buttonId) { + data.set("players." + playerUUID + ".placed-controllers." + location, buttonId); + saveData(); + } + + public String getButtonIdForPlacedController(String playerUUID, String location) { + return data.getString("players." + playerUUID + ".placed-controllers." + location); + } + + public void removePlacedController(String playerUUID, String location) { + data.set("players." + playerUUID + ".placed-controllers." + location, null); + saveData(); + } + + public List getAllPlacedControllers(String playerUUID) { + if (data.getConfigurationSection("players." + playerUUID + ".placed-controllers") == null) { + return new ArrayList<>(); + } + Set keys = data.getConfigurationSection("players." + playerUUID + ".placed-controllers").getKeys(false); + return new ArrayList<>(keys); + } + + // --- Neue globale Methoden für Tageslichtsensoren etc. --- + + public List getAllPlacedControllers() { + List allControllers = new ArrayList<>(); + if (data.getConfigurationSection("players") == null) { + return allControllers; + } + Set players = data.getConfigurationSection("players").getKeys(false); + for (String playerUUID : players) { + allControllers.addAll(getAllPlacedControllers(playerUUID)); + } + return allControllers; + } + + public String getButtonIdForPlacedController(String location) { + if (data.getConfigurationSection("players") == null) return null; + Set players = data.getConfigurationSection("players").getKeys(false); + for (String playerUUID : players) { + String buttonId = getButtonIdForPlacedController(playerUUID, location); + if (buttonId != null) return buttonId; + } + return null; + } + + public List getConnectedBlocks(String buttonId) { + if (data.getConfigurationSection("players") == null) return null; + Set players = data.getConfigurationSection("players").getKeys(false); + for (String playerUUID : players) { + List connected = getConnectedBlocks(playerUUID, buttonId); + if (connected != null && !connected.isEmpty()) { + return connected; + } + } + return null; + } + + // --- Notenblock-Instrument Methoden --- + + public void setPlayerInstrument(UUID playerUUID, String instrument) { + data.set("players." + playerUUID.toString() + ".instrument", instrument); + saveData(); + } + + public String getPlayerInstrument(UUID playerUUID) { + return data.getString("players." + playerUUID.toString() + ".instrument"); + } + + public void saveData() { + try { + data.save(dataFile); + } catch (IOException e) { + plugin.getLogger().severe("Konnte data.yml nicht speichern: " + e.getMessage()); + } + } +} \ No newline at end of file