fine i guess

master
Benjamin Kraft 4 years ago
parent bf1b03aff0
commit c4120b20b2
  1. 29
      src/main/java/com/benjocraeft/sharehealth/FileManager.java
  2. 4
      src/main/java/com/benjocraeft/sharehealth/Sharehealth.java
  3. 19
      src/main/java/com/benjocraeft/sharehealth/Statistics.java

@ -10,21 +10,22 @@ public class FileManager {
final private File statisticsFile; final private File statisticsFile;
final private File statusFile; final private File statusFile;
final private File pluginFolder = new File(System.getProperty("user.dir"), "plugins/sharehealth");
final private String pluginPath = pluginFolder.getPath();
public FileManager(){ public FileManager(){
File pluginFolder = new File(System.getProperty("user.dir"), "plugins/sharehealth"); Logger logger = Sharehealth.Instance.getLogger();
String pluginPath = pluginFolder.getPath();
//Prepare storage folder //Prepare storage folder
if (pluginFolder.mkdirs()){ if (pluginFolder.mkdirs()){
//TODO Log logger.info(pluginFolder.getName() + " created");
} }
settingsFile = new File(pluginPath + "/settings.txt"); settingsFile = new File(pluginPath + "/settings.txt");
statisticsFile = new File(pluginPath + "/statistics.txt"); statisticsFile = new File(pluginPath + "/statistics.txt");
statusFile = new File(pluginPath + "/status.txt"); statusFile = new File(pluginPath + "/status.txt");
Logger logger = Sharehealth.Instance.getLogger();
try { try {
if (settingsFile.createNewFile()) if (settingsFile.createNewFile())
logger.info(settingsFile.getName() + " created"); logger.info(settingsFile.getName() + " created");
@ -84,6 +85,10 @@ public class FileManager {
} }
public void saveStatistics(Map<UUID, Pair<Double, Double>> statistics){ public void saveStatistics(Map<UUID, Pair<Double, Double>> statistics){
saveStatistics(statisticsFile, statistics);
}
private void saveStatistics(File file, Map<UUID, Pair<Double, Double>> statistics){
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
statistics.forEach((UUID uuid, Pair<Double, Double> pair) -> { statistics.forEach((UUID uuid, Pair<Double, Double> pair) -> {
@ -91,7 +96,7 @@ public class FileManager {
map.put(uuidString, Statistics.Rounded(pair.first) + "," + Statistics.Rounded(pair.second)); map.put(uuidString, Statistics.Rounded(pair.first) + "," + Statistics.Rounded(pair.second));
}); });
saveToFile(statisticsFile, map); saveToFile(file, map);
} }
public void saveStatus(Map<String, Object> statusMap){ public void saveStatus(Map<String, Object> statusMap){
@ -106,6 +111,20 @@ public class FileManager {
saveToFile(settingsFile, map); saveToFile(settingsFile, map);
} }
public void backupStats(Map<UUID, Pair<Double, Double>> statistics){
Date date = new Date();
String dateString = String.valueOf(date.getTime());
File backupFile = new File(pluginPath + "/statistics_" + dateString + ".txt");
try {
if (backupFile.createNewFile()){
Sharehealth.Instance.getLogger().info(backupFile.getName() + " created");
saveStatistics(backupFile, statistics);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private Map<String, String> loadFromFile(File file) { private Map<String, String> loadFromFile(File file) {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();

@ -84,6 +84,7 @@ public class Sharehealth extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
saveStatus(); saveStatus();
fileManager.saveStatistics(statistics.getStatistics());
getLogger().info("ShareHealth has been disabled!"); getLogger().info("ShareHealth has been disabled!");
} }
@ -174,6 +175,9 @@ public class Sharehealth extends JavaPlugin {
void reset(){ void reset(){
isFailed = false; isFailed = false;
fileManager.backupStats(statistics.getStatistics());
statistics.reset();
fileManager.saveStatistics(statistics.getStatistics());
healthManager.reset(); healthManager.reset();
Bukkit.getOnlinePlayers().forEach(p -> p.setGameMode(GameMode.SURVIVAL)); Bukkit.getOnlinePlayers().forEach(p -> p.setGameMode(GameMode.SURVIVAL));

@ -1,5 +1,6 @@
package com.benjocraeft.sharehealth; package com.benjocraeft.sharehealth;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList; import java.util.ArrayList;
@ -35,11 +36,7 @@ public class Statistics {
} }
public void onPlayerJoined(Player player){ public void onPlayerJoined(Player player){
UUID uuid = player.getUniqueId(); putIfAbsent(player);
Pair<Double, Double> empty = Pair.pair(0., 0.);
statistics.putIfAbsent(uuid, empty);
settings.putIfAbsent(uuid, true);
} }
void onPlayerRegainedHealth(Player player, double amount){ void onPlayerRegainedHealth(Player player, double amount){
@ -54,4 +51,16 @@ public class Statistics {
statistics.put(uuid, Pair.pair(oldPair.first + amount, oldPair.second)); statistics.put(uuid, Pair.pair(oldPair.first + amount, oldPair.second));
} }
private void putIfAbsent(Player player){
UUID uuid = player.getUniqueId();
Pair<Double, Double> empty = Pair.pair(0., 0.);
statistics.putIfAbsent(uuid, empty);
settings.putIfAbsent(uuid, true);
}
void reset(){
statistics.clear();
Bukkit.getOnlinePlayers().forEach(this::putIfAbsent);
}
} }

Loading…
Cancel
Save