src/main/java/viper/DataManager.java aktualisiert
This commit is contained in:
@@ -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<String> getConnectedBlocks(String playerUUID, String buttonId) {
|
||||
return data.getStringList("players." + playerUUID + ".buttons." + buttonId);
|
||||
}
|
||||
|
||||
public void setConnectedBlocks(String playerUUID, String buttonId, List<String> 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<String> getAllPlacedControllers(String playerUUID) {
|
||||
if (data.getConfigurationSection("players." + playerUUID + ".placed-controllers") == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
Set<String> 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<String> getAllPlacedControllers() {
|
||||
List<String> allControllers = new ArrayList<>();
|
||||
if (data.getConfigurationSection("players") == null) {
|
||||
return allControllers;
|
||||
}
|
||||
Set<String> 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<String> 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<String> getConnectedBlocks(String buttonId) {
|
||||
if (data.getConfigurationSection("players") == null) return null;
|
||||
Set<String> players = data.getConfigurationSection("players").getKeys(false);
|
||||
for (String playerUUID : players) {
|
||||
List<String> 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<String> getConnectedBlocks(String playerUUID, String buttonId) {
|
||||
return data.getStringList("players." + playerUUID + ".buttons." + buttonId);
|
||||
}
|
||||
|
||||
public void setConnectedBlocks(String playerUUID, String buttonId, List<String> 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<String> getAllPlacedControllers(String playerUUID) {
|
||||
if (data.getConfigurationSection("players." + playerUUID + ".placed-controllers") == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
Set<String> keys = data.getConfigurationSection("players." + playerUUID + ".placed-controllers").getKeys(false);
|
||||
return new ArrayList<>(keys);
|
||||
}
|
||||
|
||||
// --- Neue globale Methoden für Tageslichtsensoren etc. ---
|
||||
|
||||
public List<String> getAllPlacedControllers() {
|
||||
List<String> allControllers = new ArrayList<>();
|
||||
if (data.getConfigurationSection("players") == null) {
|
||||
return allControllers;
|
||||
}
|
||||
Set<String> 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<String> players = data.getConfigurationSection("players").getKeys(false);
|
||||
for (String playerUUID : players) {
|
||||
String buttonId = getButtonIdForPlacedController(playerUUID, location);
|
||||
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) {
|
||||
List<String> 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());
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user