diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java index 55e36c496..b0d6d7f9a 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java @@ -79,6 +79,7 @@ public enum Mixins { ,"shaders.startup.MixinInitRenderer" ,"shaders.startup.MixinAbstractTexture" ,"shaders.startup.MixinTextureAtlasSprite" + ,"shaders.startup.MixinTextureMap" ) ), diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java new file mode 100644 index 000000000..778d3d179 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java @@ -0,0 +1,37 @@ +package com.gtnewhorizons.angelica.mixins.early.shaders.startup; + +import net.coderbot.iris.texture.pbr.PBRAtlasHolder; +import net.coderbot.iris.texture.pbr.TextureAtlasExtension; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.client.renderer.texture.TextureMap; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(TextureMap.class) +public abstract class MixinTextureMap extends AbstractTexture implements TextureAtlasExtension { + @Unique + private PBRAtlasHolder iris$pbrHolder; + + @Inject(method = "updateAnimations()V", at = @At("TAIL")) + private void iris$onTailUpdateAnimations(CallbackInfo ci) { + if (iris$pbrHolder != null) { + iris$pbrHolder.cycleAnimationFrames(); + } + } + + @Override + public PBRAtlasHolder getPBRHolder() { + return iris$pbrHolder; + } + + @Override + public PBRAtlasHolder getOrCreatePBRHolder() { + if (iris$pbrHolder == null) { + iris$pbrHolder = new PBRAtlasHolder(); + } + return iris$pbrHolder; + } +} diff --git a/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java b/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java index 8838debc1..005a47d6c 100644 --- a/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java +++ b/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java @@ -74,7 +74,10 @@ public class AtlasPBRLoader implements PBRTextureLoader { } if (normalAtlas != null) { - if (normalAtlas.tryUpload(atlasWidth, atlasHeight, mipLevel, ((TextureMapAccessor) texMap).getAnisotropicFiltering())) { + if (normalAtlas.tryUpload(atlasWidth, + atlasHeight, + mipLevel, + ((TextureMapAccessor) texMap).getAnisotropicFiltering())) { pbrTextureConsumer.acceptNormalTexture(normalAtlas); } }