YamlPluginData.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. PlayerData playerData = new PlayerData();
  29. for(String payout_id : yamlConfiguration.getConfigurationSection(key).getKeys(false)) {
  30. try {
  31. Integer.parseInt(payout_id);
  32. } catch(NumberFormatException e) {
  33. continue;
  34. }
  35. double receivedToday = yamlConfiguration.getDouble(key + "." + payout_id + ".receivedToday");
  36. int secondsOnline = yamlConfiguration.getInt(key + "." + payout_id + ".secondsSinceLastPayout");
  37. Date date = yamlConfiguration.getObject(key + "." + payout_id + ".lastPayoutDate", Date.class);
  38. PayoutData payoutData = new PayoutData(receivedToday, date, secondsOnline);
  39. playerData.getPayoutDataMap().put(Integer.parseInt(payout_id), payoutData);
  40. }
  41. playerDataMap.put(uuid, playerData);
  42. }
  43. }
  44. if(playerDataMap == null)
  45. playerDataMap = new HashMap<>();
  46. }
  47. /**
  48. * Saves the data on disc to file {@link #dataFile}
  49. */
  50. public void saveData() {
  51. if(!dataFile.exists()) {
  52. dataFile.getParentFile().mkdirs();
  53. }
  54. YamlConfiguration yamlConfiguration = new YamlConfiguration();
  55. super.playerDataMap.forEach((uuid, playerData) -> {
  56. playerData.getPayoutDataMap().forEach((payout_id, payoutData) -> {
  57. yamlConfiguration.set(uuid + "." + payout_id + ".receivedToday" , payoutData.getReceivedToday());
  58. yamlConfiguration.set(uuid + "." + payout_id + ".secondsSinceLastPayout" , payoutData.getSecondsSinceLastPayout());
  59. yamlConfiguration.set(uuid + "." + payout_id + ".lastPayoutDate" , payoutData.getLastPayoutDate());
  60. });
  61. });
  62. try {
  63. yamlConfiguration.save(dataFile);
  64. } catch (IOException exception) {
  65. exception.printStackTrace();
  66. }
  67. }
  68. public PlayerData getPlayerData(@NotNull Player player) {
  69. if(!this.playerDataMap.containsKey(player.getUniqueId())) {
  70. // create a new PlayerData object
  71. PlayerData playerData = new PlayerData();
  72. this.playerDataMap.put(player.getUniqueId(), playerData);
  73. return playerData;
  74. }
  75. return playerDataMap.get(player.getUniqueId());
  76. }
  77. }