40 lines
1.4 KiB
Java
40 lines
1.4 KiB
Java
package com.replaymod.compat.shaders;
|
|
|
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
public class ShaderBeginRender {
|
|
|
|
private final Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
/**
|
|
* Invokes Shaders#beginRender when rendering a video,
|
|
* as this would usually get called by EntityRenderer#renderWorld,
|
|
* which we're not calling during rendering.
|
|
*/
|
|
@SubscribeEvent
|
|
public void onRenderTickStart(TickEvent.RenderTickEvent event) {
|
|
if (event.phase != TickEvent.Phase.START) return;
|
|
if (ShaderReflection.shaders_beginRender == null) return;
|
|
if (ShaderReflection.config_isShaders == null) return;
|
|
|
|
try {
|
|
// check if video is being rendered
|
|
if (((EntityRendererHandler.IEntityRenderer) mc.entityRenderer).replayModRender_getHandler() == null)
|
|
return;
|
|
|
|
// check if Shaders are enabled
|
|
if (!(boolean) (ShaderReflection.config_isShaders.invoke(null))) return;
|
|
|
|
ShaderReflection.shaders_beginRender.invoke(null, mc, mc.timer.renderPartialTicks, 0);
|
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|