package xenxier.minecraft.servermagic; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.io.FileUtils; import org.json.simple.JSONObject; import xenxier.minecraft.servermagic.event.Event; public final class Backup { private Server server; private JSONObject backup_json; public Backup(Server server) { this.server = server; this.backup_json = (JSONObject) this.server.server_json.get("backup"); } public void backupServer() throws IOException { JSONObject json = (JSONObject) this.backup_json.get("server"); if (json != null && json.get("start") != null) { Event.parse(this.server, json.get("start").toString()); } server.passCommand("save-off"); server.passCommand("save-all"); FileUtils.copyDirectory(server.server_dir, new File(Reference.home_folder + File.separator + "backup" + File.separator + "servers" + File.separator + this.server.server_name + File.separator + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()))); server.passCommand("save-on"); if (json != null && json.get("end") != null) { Event.parse(this.server, json.get("end").toString()); } } public void backupWorld() throws IOException { JSONObject json = (JSONObject) this.backup_json.get("world"); if (json != null && json.get("start") != null) { Event.parse(this.server, json.get("start").toString()); } server.passCommand("save-off"); server.passCommand("save-all"); // Find the world file using server.properties: String world = new MinecraftServerProperties(new File(server.server_dir + File.separator + "server.properties")).getValueOf("level-name"); FileUtils.copyDirectory(new File(server.server_dir + File.separator + world), new File(Reference.home_folder + File.separator + "backup" + File.separator + "worlds" + File.separator + this.server.server_name + File.separator + world + File.separator + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()))); server.passCommand("save-on"); if (json != null && json.get("end") != null) { Event.parse(this.server, json.get("end").toString()); } } }