diff --git a/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java b/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java index 4d504b6..44c83e1 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java @@ -68,7 +68,7 @@ public class MetaCache { Respackopts.LOGGER.warn("Duplicate pack id: {0}", pack.meta().id); } } - PACK_STATES.keySet().stream().filter(s -> !newKeys.contains(s)).forEach(MetaCache::remove); + PACK_STATES.keySet().stream().filter(s -> !newKeys.contains(s)).toList().forEach(MetaCache::remove); save(SaveHook.Arguments.DO_NOTHING); } @@ -184,20 +184,20 @@ public class MetaCache { public static Scope getScope(int version) { Scope scope = MuScriptScope.fork(version); - return populate(scope); + return populate(scope, null); } public static Scope getScope(@NotNull CacheKey key, RespackoptsFS fs) { CachedPackState state = MetaCache.getState(key); Scope scope = state.executionScope().fork(); - return populate(MuScriptScope.configureFS(scope, state, fs)); + return populate(MuScriptScope.configureFS(scope, state, fs), state); } - private static Scope populate(Scope scope) { + private static Scope populate(Scope scope, @Nullable CachedPackState pack) { forEach((id, state) -> { - if (!scope.has(state.packId())) { - scope.set(state.packId(), state.configBranch()); - } + if (scope.has(state.packId())) return; + if (pack != null && pack.packId().equals(state.packId()) && !pack.equals(state)) return; + scope.set(state.packId(), state.configBranch()); }); return scope; }