From d709335ac263923e063a18b1197407dd8cf0324c Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 11 Apr 2023 21:31:55 -0400 Subject: [PATCH] Fetch a model the vanilla way if it fails to be present in the lookup cache when gathering textures --- .../mixin/perf/dynamic_resources/ModelBakeryMixin.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/dynamic_resources/ModelBakeryMixin.java index f9cff06b..375b7c0f 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -298,10 +298,17 @@ public abstract class ModelBakeryMixin { } } modelFiles = null; - Function modelGetter = loc -> basicModels.getOrDefault(loc, (BlockModel)this.missingModel); + Function modelGetter = loc -> { + UnbakedModel m = basicModels.get(loc); + /* fallback to vanilla loader if missing */ + return m != null ? m : this.getModel(loc); + }; for(BlockModel model : basicModels.values()) { materialSet.addAll(model.getMaterials(modelGetter, errorSet)); } + /* discard whatever garbage was just produced */ + loadedModels.invalidateAll(); + loadedModels.put(MISSING_MODEL_LOCATION, missingModel); //errorSet.stream().filter(pair -> !pair.getSecond().equals(MISSING_MODEL_LOCATION_STRING)).forEach(pair -> LOGGER.warn("Unable to resolve texture reference: {} in {}", pair.getFirst(), pair.getSecond())); stopwatch.stop(); ModernFix.LOGGER.info("Resolving model textures took " + stopwatch);