diff --git a/forge/build.gradle b/forge/build.gradle index fb8c36f7..101dba1a 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -55,7 +55,7 @@ dependencies { modCompileOnly("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}") { transitive false } modCompileOnly("dev.latvian.mods:kubejs-forge:${kubejs_version}") //modRuntimeOnly("curse.maven:ferritecore-429235:4441949") - modCompileOnly("team.chisel.ctm:CTM:${ctm_version}") + modCompileOnly("curse.maven:ctm-267602:${ctm_version}") modCompileOnly("curse.maven:supermartijncore-454372:4455391") modCompileOnly("vazkii.patchouli:Patchouli:1.19.2-77") diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/CTMModelBakeryAccessor.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/CTMModelBakeryAccessor.java new file mode 100644 index 00000000..16f2164a --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/CTMModelBakeryAccessor.java @@ -0,0 +1,16 @@ +package org.embeddedt.modernfix.forge.mixin.perf.dynamic_resources.ctm; + +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBakery; +import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(ModelBakery.class) +@ClientOnlyMixin +public interface CTMModelBakeryAccessor { + @Accessor("bakedCache") + Map mfix$getBakedCache(); +} diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/TextureMetadataHandlerMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/TextureMetadataHandlerMixin.java index 9dc1644b..333c857d 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/TextureMetadataHandlerMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ctm/TextureMetadataHandlerMixin.java @@ -20,7 +20,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import team.chisel.ctm.CTM; import team.chisel.ctm.api.model.IModelCTM; -import team.chisel.ctm.client.mixin.ModelBakerImplAccessor; import team.chisel.ctm.client.model.AbstractCTMBakedModel; import team.chisel.ctm.client.model.ModelCTM; import team.chisel.ctm.client.texture.IMetadataSectionCTM; @@ -39,7 +38,7 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte @Shadow(remap = false) @Nonnull protected abstract BakedModel wrap(UnbakedModel model, BakedModel object) throws IOException; - @Shadow(remap = false) @Final public static Multimap TEXTURES_SCRAPED; + @Shadow(remap = false) @Final private Multimap scrapedTextures; @Inject(method = "", at = @At("RETURN")) private void subscribeDynamic(CallbackInfo ci) { @@ -70,7 +69,7 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte continue; } - Collection textures = Sets.newHashSet(TEXTURES_SCRAPED.get(dep)); + Collection textures = Sets.newHashSet(scrapedTextures.get(dep)); Collection newDependencies = model.getDependencies(); for (Material tex : textures) { IMetadataSectionCTM meta = null; @@ -108,10 +107,12 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte IModelCTM var10 = baked.getModel(); if (var10 instanceof ModelCTM ctmModel) { if (!ctmModel.isInitialized()) { + // Clear the baked cache as upstream CTM does + ((CTMModelBakeryAccessor)bakery).mfix$getBakedCache().clear(); Function spriteGetter = (m) -> { return Minecraft.getInstance().getModelManager().getAtlas(m.atlasLocation()).getSprite(m.texture()); }; - ModelBakery.ModelBakerImpl baker = ModelBakerImplAccessor.createImpl(bakery, ($, m) -> { + ModelBakery.ModelBakerImpl baker = bakery.new ModelBakerImpl(($, m) -> { return spriteGetter.apply(m); }, key); // bypass bakedCache so that dependent models get re-baked and thus retrieve their sprites again diff --git a/gradle.properties b/gradle.properties index 140abcfd..3c239fa4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ parchment_version=2023.07.09 refined_storage_version=4392788 jei_version=15.8.0.11 rei_version=11.0.597 -ctm_version=1.20.1-1.1.8+4 +ctm_version=5983309 kubejs_version=1902.6.0-build.142 rhino_version=1902.2.2-build.268 supported_minecraft_versions=1.20.1