Start implementing PlayerSettings.java and PlayerSettingsGui.java
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user