From f586522dfe3cbee008e9e39940c705ecd871ca66 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:23:02 -0400 Subject: [PATCH] Do not drop models during initial load --- .../perf/dynamic_resources/ModelBakeryMixin.java | 16 ++++++++++++++-- .../org/embeddedt/modernfix/util/LRUMap.java | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelBakeryMixin.java index badcc2dd..ab6dc974 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -144,12 +144,21 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { this.bakedMissingModel = this.bakedTopLevelModels.get(MISSING_MODEL_VARIANT); } + private boolean inInitialLoad = true; + + @Inject(method = "bakeModels", at = @At("RETURN")) + private void onInitialBakeFinish(ModelBakery.TextureGetter textureGetter, CallbackInfo ci) { + inInitialLoad = false; + var permanentMRLs = new ObjectOpenHashSet<>(this.bakedTopLevelModels.keySet()); + ((LRUMap)this.bakedTopLevelModels).setPermanentEntries(permanentMRLs); + ModernFix.LOGGER.info("Dynamic model bakery initial baking finished, with {} permanent top level baked models", this.bakedTopLevelModels.size()); + } + @Inject(method = "", at = @At("RETURN")) private void onInitialLoadFinish(BlockColors blockColors, ProfilerFiller profilerFiller, Map map, Map map2, CallbackInfo ci) { var permanentMRLs = new ObjectOpenHashSet<>(this.topLevelModels.keySet()); ((LRUMap)this.topLevelModels).setPermanentEntries(permanentMRLs); - ((LRUMap)this.bakedTopLevelModels).setPermanentEntries(permanentMRLs); - ModernFix.LOGGER.info("Dynamic model bakery initialized, with {} permanent top level models", this.topLevelModels.size()); + ModernFix.LOGGER.info("Dynamic model bakery loading finished, with {} permanent top level models", this.topLevelModels.size()); } @Unique @@ -167,6 +176,9 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { @Override public void mfix$tick() { + if(inInitialLoad) { + return; + } tickCount++; if((tickCount % 200) == 0) { if(modelBakeryLock.tryLock()) { diff --git a/common/src/main/java/org/embeddedt/modernfix/util/LRUMap.java b/common/src/main/java/org/embeddedt/modernfix/util/LRUMap.java index 1a842640..f0eb5a5e 100644 --- a/common/src/main/java/org/embeddedt/modernfix/util/LRUMap.java +++ b/common/src/main/java/org/embeddedt/modernfix/util/LRUMap.java @@ -28,6 +28,8 @@ public class LRUMap extends Object2ObjectLinkedOpenHashMap { } public void dropEntriesToMeetSize(int size) { + // Increase allowed size quota to include permanent entries + size += permanentEntries.size(); int prevSize = size(); if(size() > size) { var iterator = entrySet().iterator();