Fix the retrieval and saving of keys by updating the path format used in config.getInt and config.set methods.
72 lines
2.6 KiB
Java
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)));
|
|
}
|
|
}
|
|
}
|