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 bbe6a211..e5b0b549 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 @@ -151,7 +151,6 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { @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()); @@ -177,6 +176,11 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { ((LRUMap)this.bakedTopLevelModels).dropEntriesToMeetSize(MAXIMUM_CACHE_SIZE); } + @Override + public void mfix$finishLoading() { + inInitialLoad = false; + } + @Override public void mfix$tick() { if(inInitialLoad) { diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java index da555772..984ec5fc 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java @@ -1,6 +1,7 @@ package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources; import com.google.common.collect.ImmutableList; +import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.AtlasSet; import net.minecraft.client.resources.model.BakedModel; @@ -23,6 +24,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Coerce; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -95,6 +97,11 @@ public class ModelManagerMixin implements IExtendedModelManager { tickHandler = ((IExtendedModelBakery)modelBakery)::mfix$tick; } + @Inject(method = "apply", at = @At("RETURN")) + private void freezeBakery(@Coerce Object reloadState, ProfilerFiller profilerFiller, CallbackInfo ci, @Local(ordinal = 0) ModelBakery bakery) { + ((IExtendedModelBakery)bakery).mfix$finishLoading(); + } + @Override public void mfix$tick() { tickHandler.run(); diff --git a/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java b/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java index 255b15c2..634418a1 100644 --- a/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java +++ b/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java @@ -2,4 +2,5 @@ package org.embeddedt.modernfix.duck; public interface IExtendedModelBakery { void mfix$tick(); + void mfix$finishLoading(); }