From 49b31c347b45f5d336877d520660cd7413751d1a Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 9 Jul 2023 20:34:25 -0400 Subject: [PATCH] Resolve parents in getModel rather than at bake time Fixes EBE chests --- .../fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 2 ++ .../forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java index b7a9d8dc..4e74eb16 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -401,6 +401,8 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { // As in pathological cases (e.g. Pedestals on 1.19) unbakedCache can lose // the model immediately UnbakedModel result = smallLoadingCache.getOrDefault(modelLocation, iunbakedmodel); + // required as some mods (e.g. EBE) call bake directly on the returned model, without resolving parents themselves + result.getMaterials(this::getModel, new HashSet<>()); // We are done with loading, so clear this cache to allow GC of any unneeded models if(mfix$nestedLoads == 0) smallLoadingCache.clear(); diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 6fb6fa29..fb7c9598 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -286,6 +286,8 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { // As in pathological cases (e.g. Pedestals on 1.19) unbakedCache can lose // the model immediately UnbakedModel result = smallLoadingCache.getOrDefault(modelLocation, iunbakedmodel); + // required as some mods (e.g. EBE) call bake directly on the returned model, without resolving parents themselves + result.getMaterials(this::getModel, new HashSet<>()); // We are done with loading, so clear this cache to allow GC of any unneeded models if(mfix$nestedLoads == 0) smallLoadingCache.clear();