From f9cce166d1f6105c4d065e5b8c4b8f6c85fbd64f Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 3 Jan 2026 15:28:03 -0500 Subject: [PATCH 1/3] Show full exception stacktrace when model baking fails --- .../perf/dynamic_resources/MixinModelBakery.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java index a7e107fc..51babf6b 100644 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java +++ b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java @@ -5,6 +5,8 @@ import org.embeddedt.modernfix.annotation.ClientOnlyMixin; import org.embeddedt.modernfix.dynresources.DynamicModelSystem; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; import org.spongepowered.asm.mixin.injection.Redirect; import java.util.Map; @@ -23,4 +25,13 @@ public class MixinModelBakery { private CompletableFuture> dynamicallyBake(Map input, BiFunction baker, Executor executor) { return CompletableFuture.completedFuture(DynamicModelSystem.createDynamicBakedRegistry(input, baker)); } + + /** + * @author embeddedt + * @reason We want log4j to print the stacktrace and not just the exception message + */ + @ModifyConstant(method = "lambda$bakeModels$3", constant = @Constant(stringValue = "Unable to bake model: '{}': {}")) + private static String showFullException(String prefix) { + return "Unable to bake model: '{}'"; + } } From f14bfa56e19c3df359abb49902a8aceed7b148f7 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 3 Jan 2026 15:29:05 -0500 Subject: [PATCH 2/3] Fix crash when model baking fails --- .../modernfix/dynresources/DynamicModelSystem.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java index ecd0a8d1..c648194e 100644 --- a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java +++ b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java @@ -181,7 +181,13 @@ public class DynamicModelSystem { if (DEBUG_DYNAMIC_MODEL_LOADING) { ModernFix.LOGGER.info("Baking {}", key); } - return baker.apply(key, unbaked); + var bakerResult = baker.apply(key, unbaked); + if (bakerResult == null) { + ModernFix.LOGGER.warn("Baker has returned null for {}", key); + return NULL_BAKED; + } else { + return bakerResult; + } } else { return NULL_BAKED; } From 58b86a98525be9eae52e81647cbb5f4d437b4b26 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 3 Jan 2026 15:29:58 -0500 Subject: [PATCH 3/3] Restructure code --- .../dynresources/DynamicModelSystem.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java index c648194e..d661a4d3 100644 --- a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java +++ b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java @@ -177,20 +177,21 @@ public class DynamicModelSystem { @Override public Object load(K key) throws Exception { var unbaked = input.get(key); - if (unbaked != null) { - if (DEBUG_DYNAMIC_MODEL_LOADING) { - ModernFix.LOGGER.info("Baking {}", key); - } - var bakerResult = baker.apply(key, unbaked); - if (bakerResult == null) { - ModernFix.LOGGER.warn("Baker has returned null for {}", key); - return NULL_BAKED; - } else { - return bakerResult; - } - } else { + if (unbaked == null) { return NULL_BAKED; } + + if (DEBUG_DYNAMIC_MODEL_LOADING) { + ModernFix.LOGGER.info("Baking {}", key); + } + + var bakerResult = baker.apply(key, unbaked); + if (bakerResult == null) { + ModernFix.LOGGER.warn("Baker has returned null for {}", key); + return NULL_BAKED; + } + + return bakerResult; } }); return new DynamicRegistryMap<>(input.keySet(), k -> {