Skip to content

Commit dc6f905

Browse files
committed
Fix missing missing-file handling, fix root file comparison
Signed-off-by: HellFirePvP <7419378+HellFirePvP@users.noreply.github.com>
1 parent efe35c9 commit dc6f905

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

src/main/java/hellfirepvp/observerlib/common/data/WorldCacheIOThread.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package hellfirepvp.observerlib.common.data;
22

33
import com.google.common.collect.Maps;
4-
import com.google.common.io.Files;
54
import com.mojang.serialization.Codec;
65
import hellfirepvp.observerlib.ObserverLib;
76
import net.minecraft.nbt.CompoundTag;
@@ -12,12 +11,12 @@
1211
import net.minecraft.SharedConstants;
1312
import net.minecraft.util.Tuple;
1413
import net.minecraft.world.level.Level;
14+
import org.apache.commons.io.FileUtils;
1515

1616
import javax.annotation.Nonnull;
1717
import java.io.File;
1818
import java.io.IOException;
1919
import java.util.*;
20-
import java.util.function.BiFunction;
2120

2221
/**
2322
* This class is part of the ObserverLib Mod
@@ -171,13 +170,13 @@ private static <T extends IWorldRelatedData<T>> T loadDataFromFile(WorldCacheDom
171170
}
172171

173172
private static <F> IWorldRelatedData.FileLoader<F> createLoadingContext(DirectorySet dirSet, WorldCacheDomain.SaveKey<?> rootKey) {
174-
String rootName = rootKey.saveFileResolver().resolveFile(new File("/")).getAbsolutePath();
173+
String rootName = rootKey.saveFileResolver().resolveFile(new File("/")).getPath();
175174
return (fileResolver, codec) -> {
176175
if (!dirSet.getActualDirectory().exists() && !dirSet.getBackupDirectory().exists()) {
177176
return Optional.empty();
178177
}
179178
// Resolve from root to get an idea of what's being loaded.
180-
String attemptName = fileResolver.resolveFile(new File("/")).getAbsolutePath();
179+
String attemptName = fileResolver.resolveFile(new File("/")).getPath();
181180
boolean isSaveRoot = attemptName.equals(rootName);
182181

183182
F data = null;
@@ -211,23 +210,27 @@ private static <F> IWorldRelatedData.FileLoader<F> createLoadingContext(Director
211210
(isSaveRoot ? rootKey.getIdentifier() : rootKey.getIdentifier() + attemptName));
212211
}
213212
}
213+
// No existing data file found, nothing to load.
214+
if (dataFile == null || !dataFile.exists()) {
215+
return Optional.empty();
216+
}
217+
214218
// Copy files to error directory and give up.
215219
if (data == null) {
216220
DirectorySet errorSet = dirSet.getErrorDirectories();
217221
try {
218222
if (dirSet.getActualDirectory().exists()) {
219-
Files.copy(dirSet.getActualDirectory(), errorSet.getActualDirectory());
223+
FileUtils.copyDirectory(dirSet.getActualDirectory(), errorSet.getActualDirectory());
220224
}
221225
if (dirSet.getBackupDirectory().exists()) {
222-
Files.copy(dirSet.getBackupDirectory(), errorSet.getBackupDirectory());
226+
FileUtils.copyDirectory(dirSet.getBackupDirectory(), errorSet.getBackupDirectory());
223227
}
224228
} catch (Exception e) {
225229
ObserverLib.log.warn("Copying erroneous level data {} to the error directory failed.",
226230
(isSaveRoot ? rootKey.getIdentifier() : rootKey.getIdentifier() + attemptName));
227231
ObserverLib.log.error("Copying files failed.", e);
228232
}
229-
}
230-
if (data == null) {
233+
231234
return Optional.empty();
232235
}
233236
return Optional.of(new Tuple<>(data, dataFile));

0 commit comments

Comments
 (0)