Files
Veila/src/client/java/su/divan2000/veila/mixin/client/GameRendererMixin.java
T

69 lines
2.2 KiB
Java

package su.divan2000.veila.mixin.client;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import org.joml.Matrix4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import su.divan2000.veila.client.render.PostProcessingManager;
import su.divan2000.veila.client.simulation.FogSystem;
@Mixin(GameRenderer.class)
public class GameRendererMixin {
@Inject(
method = "renderWorld",
at = @At(
value = "INVOKE",
target = "Lcom/mojang/blaze3d/systems/RenderSystem;clear(IZ)V"
)
)
private void veila$postProcess(
float tickDelta,
long limitTime,
MatrixStack matrices,
CallbackInfo ci
) {
PostProcessingManager.init();
PostProcessingManager.render(tickDelta);
}
@Inject(
method = "renderWorld",
at = @At(
value = "INVOKE",
target =
"Lnet/minecraft/client/render/WorldRenderer;render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V"
)
)
private void veila$captureView(
float tickDelta,
long limitTime,
MatrixStack matrices,
CallbackInfo ci
) {
PostProcessingManager.updateViewMatrix(
new Matrix4f(
matrices.peek().getPositionMatrix()
)
);
}
@Inject(
method = "render",
at = @At("HEAD")
)
private void veila$beginRender(
float tickDelta,
long startTime,
boolean tick,
CallbackInfo ci
) {
net.minecraft.client.MinecraftClient client = net.minecraft.client.MinecraftClient.getInstance();
if (client.world != null && client.player != null) {
FogSystem.beginRender(tickDelta);
}
}
}