mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
restore backup save for errors
This commit is contained in:
@@ -156,7 +156,12 @@ public class WorldSave {
|
|||||||
header.name = text;
|
header.name = text;
|
||||||
|
|
||||||
String fileName = WorldSave.getSaveFile(currentSlot);
|
String fileName = WorldSave.getSaveFile(currentSlot);
|
||||||
|
String oldFileName = fileName.replace(".sav", ".old");
|
||||||
new File(getSaveDir()).mkdirs();
|
new File(getSaveDir()).mkdirs();
|
||||||
|
File currentFile = new File(fileName);
|
||||||
|
File backupFile = new File(oldFileName);
|
||||||
|
if (currentFile.exists())
|
||||||
|
currentFile.renameTo(backupFile);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
try (FileOutputStream fos = new FileOutputStream(fileName);
|
try (FileOutputStream fos = new FileOutputStream(fileName);
|
||||||
@@ -169,8 +174,11 @@ public class WorldSave {
|
|||||||
|
|
||||||
String message = getExceptionMessage(player, world, worldStage, poiChanges);
|
String message = getExceptionMessage(player, world, worldStage, poiChanges);
|
||||||
if (!message.isEmpty()) {
|
if (!message.isEmpty()) {
|
||||||
|
oos.close();
|
||||||
|
fos.close();
|
||||||
|
restoreBackup(oldFileName, fileName);
|
||||||
announceError(message);
|
announceError(message);
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveFileData mainData = new SaveFileData();
|
SaveFileData mainData = new SaveFileData();
|
||||||
@@ -180,8 +188,11 @@ public class WorldSave {
|
|||||||
mainData.store("pointOfInterestChanges", poiChanges);
|
mainData.store("pointOfInterestChanges", poiChanges);
|
||||||
|
|
||||||
if (mainData.readString("IOException") != null) {
|
if (mainData.readString("IOException") != null) {
|
||||||
|
oos.close();
|
||||||
|
fos.close();
|
||||||
|
restoreBackup(oldFileName, fileName);
|
||||||
announceError("Please check forge.log for errors.");
|
announceError("Please check forge.log for errors.");
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
header.saveDate = new Date();
|
header.saveDate = new Date();
|
||||||
@@ -196,9 +207,20 @@ public class WorldSave {
|
|||||||
|
|
||||||
Config.instance().getSettingData().lastActiveSave = WorldSave.filename(currentSlot);
|
Config.instance().getSettingData().lastActiveSave = WorldSave.filename(currentSlot);
|
||||||
Config.instance().saveSettings();
|
Config.instance().saveSettings();
|
||||||
|
if (backupFile.exists())
|
||||||
|
backupFile.delete();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void restoreBackup(String oldFilename, String currentFilename) {
|
||||||
|
File f = new File(currentFilename);
|
||||||
|
if (f.exists())
|
||||||
|
f.delete();
|
||||||
|
File b = new File(oldFilename);
|
||||||
|
if (b.exists())
|
||||||
|
b.renameTo(new File(currentFilename));
|
||||||
|
}
|
||||||
|
|
||||||
public String getExceptionMessage(SaveFileData... datas) {
|
public String getExceptionMessage(SaveFileData... datas) {
|
||||||
StringBuilder message = new StringBuilder();
|
StringBuilder message = new StringBuilder();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user