From c664a83ccff4dea427b6c0f5df3d9ac5e3b3b48d Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 8 Jul 2023 11:01:26 +0200 Subject: [PATCH] [Fix] CustomModelBakery could cause a crash when Resourcepacks are reloaded by another Mod before BCLib was initialized (#114) --- .../java/org/betterx/bclib/client/BCLibClient.java | 12 ++++++++++-- .../bclib/mixin/client/ModelManagerMixin.java | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/betterx/bclib/client/BCLibClient.java b/src/main/java/org/betterx/bclib/client/BCLibClient.java index 26f4bae0..98812647 100644 --- a/src/main/java/org/betterx/bclib/client/BCLibClient.java +++ b/src/main/java/org/betterx/bclib/client/BCLibClient.java @@ -20,16 +20,24 @@ import net.fabricmc.fabric.api.client.model.*; import org.jetbrains.annotations.Nullable; public class BCLibClient implements ClientModInitializer, ModelResourceProvider, ModelVariantProvider { - public static CustomModelBakery modelBakery; + private static CustomModelBakery modelBakery; + + public static CustomModelBakery lazyModelbakery() { + if (modelBakery == null) { + modelBakery = new CustomModelBakery(); + } + return modelBakery; + } @Override public void onInitializeClient() { + modelBakery = new CustomModelBakery(); + WorldsTogetherClient.onInitializeClient(); ModIntegrationAPI.registerAll(); BaseBlockEntityRenders.register(); DataExchangeAPI.prepareClientside(); PostInitAPI.postInit(true); - modelBakery = new CustomModelBakery(); ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> this); ModelLoadingRegistry.INSTANCE.registerVariantProvider(rm -> this); diff --git a/src/main/java/org/betterx/bclib/mixin/client/ModelManagerMixin.java b/src/main/java/org/betterx/bclib/mixin/client/ModelManagerMixin.java index 89b0feb7..dfb291ce 100644 --- a/src/main/java/org/betterx/bclib/mixin/client/ModelManagerMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/client/ModelManagerMixin.java @@ -20,6 +20,6 @@ public class ModelManagerMixin { ProfilerFiller profilerFiller, CallbackInfoReturnable info ) { - BCLibClient.modelBakery.loadCustomModels(resourceManager); + BCLibClient.lazyModelbakery().loadCustomModels(resourceManager); } }