From e8aa88b317bf8eca2f9c171815b851f9005a62ca Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Thu, 20 Jul 2023 10:57:29 -0400 Subject: [PATCH] Fix Diagonal Fences breaking after resource reload --- .../diagonalfences/MultipartAppenderMixin.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java index a990c434..dcbe8653 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/diagonalfences/MultipartAppenderMixin.java @@ -30,8 +30,9 @@ public abstract class MultipartAppenderMixin { private static boolean handlerInjected = false; - @Inject(method = "onPrepareModelBaking", at = @At("RETURN")) + @Inject(method = "onPrepareModelBaking", at = @At("HEAD"), cancellable = true) private static void setupHelper(CallbackInfo ci) { + ci.cancel(); if(handlerInjected) return; handlerInjected = true; @@ -40,8 +41,12 @@ public abstract class MultipartAppenderMixin { public UnbakedModel onUnbakedModelLoad(ResourceLocation location, UnbakedModel originalModel, ModelBakery bakery) { if(originalModel instanceof MultiPart multipart) { Block block = multipart.definition.getOwner(); - if(block instanceof FenceBlock && block instanceof DiagonalBlock diagonalBlock && diagonalBlock.hasProperties()) { - appendDiagonalSelectors(((ModelBakeryAccessor)bakery)::diagonalfences$callCacheAndQueueDependencies, multipart, block instanceof IronBarsBlock); + if((block instanceof FenceBlock || block instanceof IronBarsBlock) && block instanceof DiagonalBlock diagonalBlock && diagonalBlock.hasProperties()) { + try { + appendDiagonalSelectors(((ModelBakeryAccessor)bakery)::diagonalfences$callCacheAndQueueDependencies, multipart, block instanceof IronBarsBlock); + } catch(RuntimeException e) { + e.printStackTrace(); + } } } return originalModel;