Start implementing PlayerSettings.java and PlayerSettingsGui.java

This commit is contained in:
Len
2023-08-12 16:49:21 +02:00
parent bd2f71d8c5
commit 0019f27636
6 changed files with 185 additions and 7 deletions
@@ -0,0 +1,103 @@
package com.alttd.playershops.shop;
import com.alttd.playershops.config.Config;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class PlayerSettings {
public enum Option {
SALE_OWNER_NOTIFICATIONS, SALE_USER_NOTIFICATIONS,
STOCK_NOTIFICATIONS, DISCORD_STOCK_NOTIFICATIONS
}
private final UUID uuid;
public final Object2BooleanMap<Option> optionsMap;
public PlayerSettings(UUID uuid) {
this.uuid = uuid;
this.optionsMap = new Object2BooleanOpenHashMap<>();
optionsMap.defaultReturnValue(false);
this.optionsMap.put(Option.SALE_OWNER_NOTIFICATIONS, true);
this.optionsMap.put(Option.SALE_USER_NOTIFICATIONS, true);
this.optionsMap.put(Option.STOCK_NOTIFICATIONS, true);
this.optionsMap.put(Option.DISCORD_STOCK_NOTIFICATIONS, false);
}
private PlayerSettings(UUID uuid, Object2BooleanMap<Option> optionsMap) {
this.uuid = uuid;
this.optionsMap = optionsMap;
}
public void setOption(Option option, boolean set) {
optionsMap.put(option, set);
saveToFile();
}
public boolean getOption(Option option) {
if (optionsMap.containsKey(option))
return optionsMap.get(option);
optionsMap.put(option, true);
saveToFile();
return true;
}
private void saveToFile() {
try {
File settingsDirectory = new File(Config.configPath, "PlayerSettings");
if (!settingsDirectory.exists() && !settingsDirectory.mkdir()) {
return;
}
File playerSettingsFile = new File(settingsDirectory, this.uuid.toString() + ".yml");
if (!playerSettingsFile.exists()) {
//noinspection ResultOfMethodCallIgnored
playerSettingsFile.createNewFile();
}
YamlConfiguration config = YamlConfiguration.loadConfiguration(playerSettingsFile);
config.set("player.UUID", this.uuid.toString());
for (Map.Entry<Option, Boolean> entry : optionsMap.entrySet()) {
config.set("player." + entry.getKey().toString(), entry.getValue());
}
config.save(playerSettingsFile);
} catch (Exception e) {
e.printStackTrace();
}
}
public static PlayerSettings loadFromFile(UUID uuid) {
File settingsDirectory = new File(Config.configPath, "PlayerSettings");
if (!settingsDirectory.exists() && !settingsDirectory.mkdir()) {
return null; // could not create directory
}
File playerSettingsFile = new File(settingsDirectory, uuid + ".yml");
if (playerSettingsFile.exists()) {
YamlConfiguration config = YamlConfiguration.loadConfiguration(playerSettingsFile);
//noinspection ConstantConditions
Object2BooleanMap<Option> optionsMap = new Object2BooleanOpenHashMap<>();
for (Option option : Option.values()) {
boolean value = config.getBoolean("player." + option.toString());
optionsMap.put(option, value);
//System.out.println(""+value);
}
return new PlayerSettings(uuid, optionsMap);
}
return new PlayerSettings(uuid);
}
}