1 package com.irtimaled.bbor.mixin.client.renderer;
3 import com.google.common.base.Preconditions;
4 import com.irtimaled.bbor.client.Player;
5 import com.irtimaled.bbor.client.RenderCulling;
6 import com.irtimaled.bbor.client.interop.ClientInterop;
7 import net.minecraft.client.MinecraftClient;
8 import net.minecraft.client.render.Camera;
9 import net.minecraft.client.render.Frustum;
10 import net.minecraft.client.render.GameRenderer;
11 import net.minecraft.client.render.LightmapTextureManager;
12 import net.minecraft.client.render.WorldRenderer;
13 import net.minecraft.client.util.math.MatrixStack;
14 import net.minecraft.util.math.Matrix4f;
15 import org.spongepowered.asm.mixin.Final;
16 import org.spongepowered.asm.mixin.Mixin;
17 import org.spongepowered.asm.mixin.Shadow;
18 import org.spongepowered.asm.mixin.injection.At;
19 import org.spongepowered.asm.mixin.injection.Inject;
20 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
22 @Mixin(WorldRenderer.class)
23 public class MixinWorldRenderer {
25 @Shadow @Final private MinecraftClient client;
27 @Shadow private Frustum frustum;
29 @Inject(method = "render", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = "ldc=blockentities", shift = At.Shift.BEFORE))
30 private void onRender(MatrixStack matrixStack, float partialTicks, long ignored_2, boolean ignored_3, Camera ignored_4, GameRenderer ignored_5, LightmapTextureManager ignored_6, Matrix4f ignored_7, CallbackInfo ci) {
31 Preconditions.checkNotNull(this.client.player);
32 RenderCulling.setFrustum(frustum);
33 RenderCulling.flushStats();
34 Player.setPosition(partialTicks, this.client.player);
35 ClientInterop.render(matrixStack, this.client.player);