From a005f1c2e8fb3cd19512c117a04f3a470ca31a2b Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Tue, 16 Jun 2020 17:34:56 +0200 Subject: [PATCH] Clear the cable bus model cache when the resource pack is reloaded (otherwise we might return stale models with incorrect texture sprite coordinates). --- .../render/cablebus/CableBusBakedModel.java | 5 ++++ .../render/cablebus/CableBusModelLoader.java | 27 +++++++++++++++++++ src/main/java/appeng/core/AppEng.java | 4 +-- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/main/java/appeng/client/render/cablebus/CableBusModelLoader.java diff --git a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java index f82d02605..e6a218364 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java @@ -363,4 +363,9 @@ public class CableBusBakedModel implements IBakedModel { return ItemOverrideList.EMPTY; } + + public static void clearCache() { + CABLE_MODEL_CACHE.clear(); + } + } diff --git a/src/main/java/appeng/client/render/cablebus/CableBusModelLoader.java b/src/main/java/appeng/client/render/cablebus/CableBusModelLoader.java new file mode 100644 index 000000000..324597606 --- /dev/null +++ b/src/main/java/appeng/client/render/cablebus/CableBusModelLoader.java @@ -0,0 +1,27 @@ +package appeng.client.render.cablebus; + +import appeng.core.features.registries.PartModels; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraft.resources.IResourceManager; +import net.minecraftforge.client.model.IModelLoader; + +public class CableBusModelLoader implements IModelLoader { + + private final PartModels partModels; + + public CableBusModelLoader(PartModels partModels) { + this.partModels = partModels; + } + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + CableBusBakedModel.clearCache(); + } + + @Override + public CableBusModel read(JsonDeserializationContext deserializationContext, JsonObject modelContents) { + return new CableBusModel(partModels); + } + +} diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 060a5ecb5..4d56aa6a4 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -31,7 +31,7 @@ import appeng.capabilities.Capabilities; import appeng.client.ClientHelper; import appeng.client.render.DummyFluidItemModel; import appeng.client.render.SimpleModelLoader; -import appeng.client.render.cablebus.CableBusModel; +import appeng.client.render.cablebus.CableBusModelLoader; import appeng.client.render.cablebus.P2PTunnelFrequencyModel; import appeng.client.render.crafting.CraftingCubeModelLoader; import appeng.client.render.model.*; @@ -208,7 +208,7 @@ public final class AppEng ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "part_plane"), PlaneModelLoader.INSTANCE); ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "crafting_cube"), CraftingCubeModelLoader.INSTANCE); ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "uvlightmap"), UVLModelLoader.INSTANCE); - addBuiltInModel("cable_bus", () -> new CableBusModel((PartModels) Api.INSTANCE.registries().partModels())); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "cable_bus"), new CableBusModelLoader((PartModels) Api.INSTANCE.registries().partModels())); }