From 5e137ee10d55796bd85422fd77698e111a32e727 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Sun, 2 Feb 2025 15:38:01 +0500 Subject: [PATCH] Auto-move old save data to new location --- .../file/structure/ClientOnlySaveStructure.java | 13 +++++++++++++ .../core/file/structure/ISaveStructure.java | 2 ++ .../core/file/structure/LocalSaveStructure.java | 2 ++ .../distanthorizons/core/level/DhClientLevel.java | 13 ++++++++++++- .../world/IDimensionTypeWrapper.java | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java index f9d33adca..3efb4c820 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java @@ -106,6 +106,19 @@ public class ClientOnlySaveStructure implements ISaveStructure }); } + @Override + public File getPre23SaveFolder(ILevelWrapper levelWrapper) + { + // Allow API users to override the save folder + IDhApiSaveStructure saveStructureOverride = OverrideInjector.INSTANCE.get(IDhApiSaveStructure.class); + if (saveStructureOverride != null) + { + return this.getSaveFolder(levelWrapper); + } + + return getSaveFolderByLevelId(levelWrapper.getDimensionType().getName()); + } + //================// diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ISaveStructure.java b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ISaveStructure.java index 325b26130..0d666212e 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ISaveStructure.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ISaveStructure.java @@ -34,5 +34,7 @@ public interface ISaveStructure extends AutoCloseable */ File getSaveFolder(ILevelWrapper levelWrapper); + File getPre23SaveFolder(ILevelWrapper levelWrapper); + } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java index 27eeed4c0..b3586d0e2 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java @@ -75,6 +75,8 @@ public class LocalSaveStructure implements ISaveStructure }); } + @Override + public File getPre23SaveFolder(ILevelWrapper levelWrapper) { return this.getSaveFolder(levelWrapper); } //==================// diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java index 47c7ff133..b6235ee47 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java @@ -98,10 +98,21 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel { this(saveStructure, clientLevelWrapper, null, true, networkState); } public DhClientLevel(ISaveStructure saveStructure, IClientLevelWrapper clientLevelWrapper, @Nullable File fullDataSaveDirOverride, boolean enableRendering, @Nullable ClientNetworkState networkState) { - if (saveStructure.getSaveFolder(clientLevelWrapper).mkdirs()) + File saveFolder = saveStructure.getSaveFolder(clientLevelWrapper); + File pre23Folder = saveStructure.getPre23SaveFolder(clientLevelWrapper); + + if (pre23Folder.exists()) + { + if (!pre23Folder.renameTo(saveFolder)) + { + throw new RuntimeException("Could not move old save data folder: " + pre23Folder.getAbsolutePath() + " to " + saveFolder.getAbsolutePath()); + } + } + else if (saveStructure.getSaveFolder(clientLevelWrapper).mkdirs()) { LOGGER.warn("unable to create data folder."); } + this.levelWrapper = clientLevelWrapper; this.levelWrapper.setParentLevel(this); this.saveStructure = saveStructure; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/world/IDimensionTypeWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/world/IDimensionTypeWrapper.java index 18f8a69b3..1d63e9089 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/world/IDimensionTypeWrapper.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/world/IDimensionTypeWrapper.java @@ -27,6 +27,8 @@ public interface IDimensionTypeWrapper extends IDhApiDimensionTypeWrapper, IBind @Override boolean hasCeiling(); + String getName(); + @Override boolean hasSkyLight();