YamlPluginData.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package de.Linus122.TimeIsMoney.data;
  2. import de.Linus122.TimeIsMoney.Main;
  3. import org.bukkit.configuration.file.YamlConfiguration;
  4. import org.bukkit.entity.Player;
  5. import org.jetbrains.annotations.NotNull;
  6. import org.jetbrains.annotations.Nullable;
  7. import java.io.File;
  8. import java.io.IOException;
  9. import java.util.Date;
  10. import java.util.HashMap;
  11. import java.util.UUID;
  12. public class YamlPluginData extends PluginData{
  13. final String filePath = "plugins/TimeIsMoney/data/";
  14. final File dataFile = new File(filePath + "data.yml");
  15. public YamlPluginData(Main main) {
  16. super(main);
  17. }
  18. /**
  19. * Loads data from file if {@link #dataFile} exists.
  20. */
  21. @SuppressWarnings("unchecked")
  22. public void loadData() {
  23. if(dataFile.exists()) {
  24. YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(dataFile);
  25. playerDataMap = new HashMap<>();
  26. for(String key : yamlConfiguration.getKeys(false)) {
  27. UUID uuid = UUID.fromString(key);
  28. double receivedToday = yamlConfiguration.getDouble(key + ".receivedToday");
  29. int secondsOnline = yamlConfiguration.getInt(key + ".secondsSinceLastPayout");
  30. Date date = yamlConfiguration.getObject(key + ".lastPayoutDate", Date.class);
  31. PlayerData playerData = new PlayerData(receivedToday, date, secondsOnline);
  32. playerDataMap.put(uuid, playerData);
  33. }
  34. }
  35. if(playerDataMap == null)
  36. playerDataMap = new HashMap<>();
  37. }
  38. /**
  39. * Saves the data on disc to file {@link #dataFile}
  40. */
  41. public void saveData() {
  42. if(!dataFile.exists()) {
  43. dataFile.getParentFile().mkdirs();
  44. }
  45. YamlConfiguration yamlConfiguration = new YamlConfiguration();
  46. super.playerDataMap.forEach((uuid, playerData) -> {
  47. yamlConfiguration.set(uuid + ".receivedToday" , playerData.getReceivedToday());
  48. yamlConfiguration.set(uuid + ".secondsSinceLastPayout" , playerData.getSecondsSinceLastPayout());
  49. yamlConfiguration.set(uuid + ".lastPayoutDate" , playerData.getLastPayoutDate());
  50. });
  51. try {
  52. yamlConfiguration.save(dataFile);
  53. } catch (IOException exception) {
  54. exception.printStackTrace();
  55. }
  56. }
  57. public PlayerData getPlayerData(@NotNull Player player) {
  58. if(!this.playerDataMap.containsKey(player.getUniqueId())) {
  59. // create a new PlayerData object
  60. PlayerData playerData = new PlayerData(0, new Date(), 0);
  61. this.playerDataMap.put(player.getUniqueId(), playerData);
  62. return playerData;
  63. }
  64. return playerDataMap.get(player.getUniqueId());
  65. }
  66. }