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: '{}'"; + } } diff --git a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java index ecd0a8d1..d661a4d3 100644 --- a/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java +++ b/src/main/java/org/embeddedt/modernfix/dynresources/DynamicModelSystem.java @@ -177,14 +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); - } - return baker.apply(key, unbaked); - } 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 -> {