Fix Iris shader animation time on 1.21
This commit is contained in:
@@ -41,6 +41,8 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
||||
|
||||
private final long startTime;
|
||||
|
||||
private long fakeFinishTimeNano;
|
||||
|
||||
public EntityRendererHandler(RenderSettings settings, RenderInfo renderInfo) {
|
||||
this.settings = settings;
|
||||
this.renderInfo = renderInfo;
|
||||
@@ -71,6 +73,7 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
||||
}
|
||||
|
||||
public void renderWorld(float partialTicks, long finishTimeNano) {
|
||||
fakeFinishTimeNano = finishTimeNano;
|
||||
//#if MC>=11400
|
||||
PreRenderCallback.EVENT.invoker().preRender();
|
||||
//#else
|
||||
@@ -142,6 +145,10 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
||||
return this.renderInfo;
|
||||
}
|
||||
|
||||
public long getFakeFinishTimeNano() {
|
||||
return fakeFinishTimeNano;
|
||||
}
|
||||
|
||||
public interface IEntityRenderer {
|
||||
void replayModRender_setHandler(EntityRendererHandler handler);
|
||||
EntityRendererHandler replayModRender_getHandler();
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
// 1.21+
|
||||
@@ -14,6 +14,9 @@
|
||||
"Mixin_ChromaKeyColorSky",
|
||||
"Mixin_ChromaKeyDisableFog",
|
||||
"Mixin_ChromaKeyForceSky",
|
||||
//#if MC>=12100
|
||||
//$$ "Mixin_FakeSystemTimeUniforms_Iris",
|
||||
//#endif
|
||||
"Mixin_ForceChunkLoading",
|
||||
"Mixin_HideNameTags",
|
||||
"Mixin_HideNameTags_LivingEntity",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user