Files
PlayerUtils/src/main/java/com/alttd/playerutils/config/KeyStorage.java
T

71 lines
2.4 KiB
Java

package com.alttd.playerutils.config;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import lombok.extern.slf4j.Slf4j;
import org.bukkit.configuration.ConfigurationSection;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
@Slf4j
public class KeyStorage extends AbstractConfig {
static KeyStorage config;
public KeyStorage() {
super(
new File(File.separator
+ "mnt" + File.separator
+ "configs" + File.separator
+ "PlayerUtils"),
"key_storage.yml");
}
public static void reload() {
log.info("Reloading key storage");
config = new KeyStorage();
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) {
log.info("No section yet for crate {}", crate);
KEYS.put(crate, count);
continue;
}
List<UUID> uuids = configurationSection.getKeys(false).stream().map(UUID::fromString).toList();
if (uuids.isEmpty()) {
log.info("No keys yet for crate {}", 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() {
log.info("Saving KeyStorage");
KEYS.keySet()
.forEach(crate -> KEYS.get(crate)
.forEach((uuid, keys) -> config.set(prefix + crate + ".", uuid.toString(), keys)));
}
}
}