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 b6fb8947..c2532596 100644 --- a/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java +++ b/common/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java @@ -14,4 +14,5 @@ public interface IExtendedModelBakery { ImmutableList getBlockStatesForMRL(StateDefinition stateDefinition, ModelResourceLocation location); BakedModel bakeDefault(ResourceLocation modelLocation, ModelState state); UnbakedModel mfix$getUnbakedMissingModel(); + void mfix$clearModels(); } diff --git a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java index d31ac804..288b4028 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.embeddedt.modernfix.duck.IExtendedModelBakery; import org.embeddedt.modernfix.ModernFix; +import org.embeddedt.modernfix.platform.ModernFixPlatformHooks; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -194,7 +195,14 @@ public class DynamicBakedModelProvider implements Map void onModelRemoved(RemovalNotification notification) { if(!debugDynamicModelLoading) return; + // If the entry was replaced (happens because of the Minecraft model loading code structure), or + // was explicitly removed, we don't really care. + var reason = notification.getCause(); + if (reason == RemovalCause.REPLACED || reason == RemovalCause.EXPLICIT) { + return; + } Object k = notification.getKey(); if(k == null) return; @@ -341,4 +348,10 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { public UnbakedModel mfix$getUnbakedMissingModel() { return missingModel; } + + @Override + public void mfix$clearModels() { + loadedModels.invalidateAll(); + loadedBakedModels.invalidateAll(); + } }