Fix Iris shader animation time on 1.21

This commit is contained in:
Jonas Herzig
2024-07-10 19:07:19 +02:00
parent ca6ae4b983
commit 1836b7fb18
4 changed files with 36 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
package com.replaymod.render.mixin;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.irisshaders.iris.uniforms.SystemTimeUniforms;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.GameRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
@Pseudo
@Mixin(value = SystemTimeUniforms.Timer.class, remap = false)
public class Mixin_FakeSystemTimeUniforms_Iris {
@ModifyVariable(method = "beginFrame", at = @At("HEAD"), argsOnly = true)
private long useReplayTimeDuringRender(long frameStartTimeNs) {
GameRenderer gameRenderer = MinecraftClient.getInstance().gameRenderer;
EntityRendererHandler entityRendererHandler =
((EntityRendererHandler.IEntityRenderer) gameRenderer).replayModRender_getHandler();
if (entityRendererHandler != null) {
frameStartTimeNs = entityRendererHandler.getFakeFinishTimeNano();
}
return frameStartTimeNs;
}
}