src/main/java/viper/DataManager.java aktualisiert

This commit is contained in:
2025-08-09 09:52:13 +00:00
parent c59c131bcc
commit e4dc8e120f

View File

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