diff --git a/core/src/main/java/com/volmit/iris/core/loader/IrisData.java b/core/src/main/java/com/volmit/iris/core/loader/IrisData.java index 58605c949..aaf1a49de 100644 --- a/core/src/main/java/com/volmit/iris/core/loader/IrisData.java +++ b/core/src/main/java/com/volmit/iris/core/loader/IrisData.java @@ -51,6 +51,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Objects; +import java.util.Optional; @Data public class IrisData implements ExclusionStrategy, TypeAdapterFactory { @@ -99,6 +100,10 @@ public class IrisData implements ExclusionStrategy, TypeAdapterFactory { return dataLoaders.computeIfAbsent(dataFolder, IrisData::new); } + public static Optional getLoaded(File dataFolder) { + return Optional.ofNullable(dataLoaders.get(dataFolder)); + } + public static void dereference() { dataLoaders.v().forEach(IrisData::cleanupEngine); } diff --git a/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java b/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java index 3d5c36a30..fb2be0f33 100644 --- a/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java +++ b/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java @@ -147,8 +147,7 @@ public class StudioSVC implements IrisService { } IrisData dm = IrisData.get(folder); - dm.dump(); - dm.clearLists(); + dm.hotloaded(); dim = dm.getDimensionLoader().load(type); if (dim == null) { @@ -299,7 +298,8 @@ public class StudioSVC implements IrisService { packEntry.mkdirs(); ZipUtil.unpack(cp, packEntry); } - IrisData.get(packEntry).hotloaded(); + IrisData.getLoaded(packEntry) + .ifPresent(IrisData::hotloaded); sender.sendMessage("Successfully Aquired " + d.getName()); ServerConfigurator.installDataPacks(true); diff --git a/core/src/main/java/com/volmit/iris/util/io/IO.java b/core/src/main/java/com/volmit/iris/util/io/IO.java index 44ee35f4d..b4bfe489d 100644 --- a/core/src/main/java/com/volmit/iris/util/io/IO.java +++ b/core/src/main/java/com/volmit/iris/util/io/IO.java @@ -179,6 +179,8 @@ public class IO { JsonElement json; try (FileReader reader = new FileReader(file)) { json = JsonParser.parseReader(reader); + } catch (Throwable e) { + throw new IOException("Failed to read json file " + file, e); } var queue = new LinkedList(); diff --git a/core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java b/core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java index b05e38760..ed547a40e 100644 --- a/core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java +++ b/core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java @@ -46,7 +46,7 @@ public class ReactiveFolder { if (checkCycle % 3 == 0 ? fw.checkModified() : fw.checkModifiedFast()) { for (File i : fw.getCreated()) { - if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".js")) { + if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".kts")) { if (i.getPath().contains(".iris")) { continue; } @@ -62,7 +62,7 @@ public class ReactiveFolder { continue; } - if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".js")) { + if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".kts")) { modified = true; break; } @@ -75,7 +75,7 @@ public class ReactiveFolder { continue; } - if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".js")) { + if (i.getName().endsWith(".iob") || i.getName().endsWith(".json") || i.getName().endsWith(".kts")) { modified = true; break; }