PlayerUtils/src/main/java/com/alttd/playerutils/config/KeyStorage.java
Teriuihi ff05856494 Fixed key storage access in KeyStorage.java
Fix the retrieval and saving of keys by updating the path format used in config.getInt and config.set methods.
2024-10-04 21:35:43 +02:00

72 lines
2.6 KiB
Java

package com.alttd.playerutils.config;
import com.alttd.playerutils.util.Logger;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import org.bukkit.configuration.ConfigurationSection;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
public class KeyStorage extends AbstractConfig {
static KeyStorage config;
private final Logger logger;
public KeyStorage(Logger logger) {
super(
new File(File.separator
+ "mnt" + File.separator
+ "configs" + File.separator
+ "PlayerUtils"),
"key_storage.yml", logger);
this.logger = logger;
}
public static void reload(Logger logger) {
logger.info("Reloading key storage");
config = new KeyStorage(logger);
config.readConfig(KeyStorage.class, null);
}
public static class STORAGE {
private static final String prefix = "storage.";
public static HashMap<String, Object2IntOpenHashMap<UUID>> KEYS = new HashMap<>();
@SuppressWarnings("unused")
private static void load() {
save();
KEYS.clear();
for (String crate : Config.KEY.CRATES.keySet()) {
Object2IntOpenHashMap<UUID> count = new Object2IntOpenHashMap<>();
ConfigurationSection configurationSection = config.getConfigurationSection(prefix + crate);
if (configurationSection == null) {
config.logger.info(String.format("No section yet for crate %s", crate));
KEYS.put(crate, count);
continue;
}
List<UUID> uuids = configurationSection.getKeys(false).stream().map(UUID::fromString).toList();
if (uuids.isEmpty()) {
config.logger.info(String.format("No keys yet for crate %s", crate));
KEYS.put(crate, count);
continue;
}
for (UUID uuid : uuids) {
int keys = config.getInt(prefix + crate + ".", uuid.toString(), 0);
count.put(uuid, keys);
}
KEYS.put(crate, count);
}
}
public synchronized static void save() {
config.logger.info("Saving KeyStorage");
KEYS.keySet()
.forEach(crate -> KEYS.get(crate)
.forEach((uuid, keys) -> config.set(prefix + crate + ".", uuid.toString(), keys)));
}
}
}