diff options
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java')
| -rw-r--r-- | src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java b/src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java index 3ed8c1b..a875bcf 100644 --- a/src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java +++ b/src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java @@ -2,11 +2,18 @@ package moe.nea.firmament.mixins; +import com.mojang.blaze3d.buffers.GpuBufferSlice; import moe.nea.firmament.events.WorldRenderLastEvent; -import net.minecraft.client.render.*; -import net.minecraft.client.util.Handle; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.profiler.Profiler; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.LevelTargetBundle; +import net.minecraft.client.renderer.RenderBuffers; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.state.LevelRenderState; +import com.mojang.blaze3d.resource.ResourceHandle; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.profiling.ProfilerFiller; +import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -15,31 +22,30 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(WorldRenderer.class) +@Mixin(LevelRenderer.class) public abstract class WorldRenderLastEventPatch { @Shadow @Final - private BufferBuilderStorage bufferBuilders; + private RenderBuffers renderBuffers; @Shadow - @Final - private DefaultFramebufferSet framebufferSet; + protected abstract void checkPoseStack(PoseStack matrices); @Shadow - protected abstract void checkEmpty(MatrixStack matrices); + private int ticks; - @Inject(method = "method_62214", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;pop()V", shift = At.Shift.AFTER)) - public void onWorldRenderLast(Fog fog, RenderTickCounter renderTickCounter, Camera camera, Profiler profiler, Matrix4f matrix4f, Matrix4f matrix4f2, Handle handle, Handle handle2, boolean bl, Frustum frustum, Handle handle3, Handle handle4, CallbackInfo ci) { - var imm = this.bufferBuilders.getEntityVertexConsumers(); - var stack = new MatrixStack(); + @Inject(method = "method_62214", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;pop()V", shift = At.Shift.AFTER)) + public void onWorldRenderLast(GpuBufferSlice gpuBufferSlice, LevelRenderState worldRenderState, ProfilerFiller profiler, Matrix4f matrix4f, ResourceHandle handle, ResourceHandle handle2, boolean bl, Frustum frustum, ResourceHandle handle3, ResourceHandle handle4, CallbackInfo ci) { + var imm = this.renderBuffers.bufferSource(); + var stack = new PoseStack(); // TODO: pre-cancel this event if F1 is active var event = new WorldRenderLastEvent( - stack, renderTickCounter, - camera, + stack, ticks, + worldRenderState.cameraRenderState, imm ); WorldRenderLastEvent.Companion.publish(event); - imm.draw(); - checkEmpty(stack); + imm.endBatch(); + checkPoseStack(stack); } } |
