From 5e81a49dc8d660a347efe148c4aec4c44cdaac98 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:50:47 -0400 Subject: [PATCH] Don't use cached server resources if they got closed somehow Related: #46 --- .../perf/reuse_datapacks/MinecraftMixin.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java index 461633f5..71c0f439 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java @@ -37,16 +37,21 @@ public class MinecraftMixin implements ICachingResourceClient { @Redirect(method = "makeServerStem", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/ServerResources;loadResources(Ljava/util/List;Lnet/minecraft/commands/Commands$CommandSelection;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) private CompletableFuture useCachedResources(List list, Commands.CommandSelection arg, int i, Executor executor, Executor executor2) { if(cachedResources != null) { - if(cachedDataPackConfig.equals(loadingDataPackConfig)) { - ModernFix.LOGGER.warn("Reusing loaded server resources from previous world"); - return CompletableFuture.completedFuture(cachedResources); + if(cachedResources.getResourceManager().getNamespaces().size() > 0) { + if (cachedDataPackConfig.equals(loadingDataPackConfig)) { + ModernFix.LOGGER.warn("Reusing loaded server resources from previous world"); + return CompletableFuture.completedFuture(cachedResources); + } else { + ModernFix.LOGGER.warn("Discarding cached server resources, datapack configs have changed"); + ModernFix.LOGGER.warn("Old: {}", "[" + String.join(", ", cachedDataPackConfig) + "]"); + ModernFix.LOGGER.warn("New: {}", "[" + String.join(", ", loadingDataPackConfig) + "]"); + cachedResources.close(); + cachedResources = null; + cachedDataPackConfig = null; + } } else { - ModernFix.LOGGER.warn("Discarding cached server resources, datapack configs have changed"); - ModernFix.LOGGER.warn("Old: {}", "[" + String.join(", ", cachedDataPackConfig) + "]"); - ModernFix.LOGGER.warn("New: {}", "[" + String.join(", ", loadingDataPackConfig) + "]"); - cachedResources.close(); + ModernFix.LOGGER.error("Cached server resources were closed somehow, that shouldn't happen"); cachedResources = null; - cachedDataPackConfig = null; } } return ServerResources.loadResources(list, arg, i, executor, executor2);