Skip to content

Commit 700ccc2

Browse files
committed
Freeze model bakery later to allow for mutation in event
1 parent 1b60755 commit 700ccc2

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelBakeryMixin.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ private void storeTextureGetterAndBakeMissing(ModelBakery.TextureGetter textureG
151151

152152
@Inject(method = "bakeModels", at = @At("RETURN"))
153153
private void onInitialBakeFinish(ModelBakery.TextureGetter textureGetter, CallbackInfo ci) {
154-
inInitialLoad = false;
155154
var permanentMRLs = new ObjectOpenHashSet<>(this.bakedTopLevelModels.keySet());
156155
((LRUMap<ModelResourceLocation, BakedModel>)this.bakedTopLevelModels).setPermanentEntries(permanentMRLs);
157156
ModernFix.LOGGER.info("Dynamic model bakery initial baking finished, with {} permanent top level baked models", this.bakedTopLevelModels.size());
@@ -177,6 +176,11 @@ private void runCleanup() {
177176
((LRUMap<?, ?>)this.bakedTopLevelModels).dropEntriesToMeetSize(MAXIMUM_CACHE_SIZE);
178177
}
179178

179+
@Override
180+
public void mfix$finishLoading() {
181+
inInitialLoad = false;
182+
}
183+
180184
@Override
181185
public void mfix$tick() {
182186
if(inInitialLoad) {

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
22

33
import com.google.common.collect.ImmutableList;
4+
import com.llamalad7.mixinextras.sugar.Local;
45
import net.minecraft.client.renderer.block.model.BlockModel;
56
import net.minecraft.client.resources.model.AtlasSet;
67
import net.minecraft.client.resources.model.BakedModel;
@@ -23,6 +24,7 @@
2324
import org.spongepowered.asm.mixin.Shadow;
2425
import org.spongepowered.asm.mixin.Unique;
2526
import org.spongepowered.asm.mixin.injection.At;
27+
import org.spongepowered.asm.mixin.injection.Coerce;
2628
import org.spongepowered.asm.mixin.injection.Inject;
2729
import org.spongepowered.asm.mixin.injection.Redirect;
2830
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@@ -95,6 +97,11 @@ private void storeTicker(ProfilerFiller profilerFiller, Map<ResourceLocation, At
9597
tickHandler = ((IExtendedModelBakery)modelBakery)::mfix$tick;
9698
}
9799

100+
@Inject(method = "apply", at = @At("RETURN"))
101+
private void freezeBakery(@Coerce Object reloadState, ProfilerFiller profilerFiller, CallbackInfo ci, @Local(ordinal = 0) ModelBakery bakery) {
102+
((IExtendedModelBakery)bakery).mfix$finishLoading();
103+
}
104+
98105
@Override
99106
public void mfix$tick() {
100107
tickHandler.run();

common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
public interface IExtendedModelBakery {
44
void mfix$tick();
5+
void mfix$finishLoading();
56
}

0 commit comments

Comments
 (0)