69 lines
2.2 KiB
Java
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);
|
|
}
|
|
}
|
|
} |