From 7742a9507fe1b67d6fe170a30462f0a74574cdcc Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 13 Feb 2023 14:55:32 -0500 Subject: [PATCH] Bake models with custom geometry at startup time Fixes #18 (not the way I want though) --- .../perf/faster_baking/ModelBakeryMixin.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java index 8bcbc730..3a43348c 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java @@ -76,6 +76,13 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { return ibakedmodel; } + private boolean requiresBake(IUnbakedModel model) { + if(model instanceof BlockModel && ((BlockModel)model).customData.hasCustomGeometry()) + return true; + else + return false; + } + @Inject(method = "processLoading", at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/IProfiler;pop()V")) private void bakeModels(IProfiler pProfiler, int p_i226056_4_, CallbackInfo ci) { pProfiler.popPush("atlas"); @@ -104,21 +111,20 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } }); /* Then store them as top-level models if needed, and set up the lazy models */ - this.topLevelModels.keySet().forEach((p_229350_1_) -> { - if(incompatibleLazyBakedModels.contains(p_229350_1_.getNamespace())) { - IBakedModel model = this.bakeIfPossible(p_229350_1_); - if(model != null) - this.bakedTopLevelModels.put(p_229350_1_, model); + this.topLevelModels.forEach((location, value) -> { + if (incompatibleLazyBakedModels.contains(location.getNamespace()) || requiresBake(value)) { + IBakedModel model = this.bakeIfPossible(location); + if (model != null) + this.bakedTopLevelModels.put(location, model); } else { - this.bakedTopLevelModels.put(p_229350_1_, new LazyBakedModel(() -> { + this.bakedTopLevelModels.put(location, new LazyBakedModel(() -> { synchronized (this.bakedCache) { - IBakedModel ibakedmodel = this.bakeIfPossible(p_229350_1_); + IBakedModel ibakedmodel = this.bakeIfPossible(location); return ibakedmodel != null ? ibakedmodel : missingModel; } })); } - }); }