// Native Minecraft 1.21.11
package com.xfestudio.mydimensionlord.platform;
import com.mojang.blaze3d.framegraph.FramePass;
import net.minecraft.client.Minecraft;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.renderer.LevelTargetBundle;
import net.minecraft.client.renderer.culling.Frustum;
import net.minecraft.client.renderer.state.LevelRenderState;
import net.minecraft.resources.Identifier;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.client.FramePassManager;
import net.minecraftforge.client.event.AddFramePassEvent;
import org.joml.Matrix4f;
import org.joml.Quaternionf;
public record RenderFrame(Vec3 camera, Frustum frustum, float partialTick, Matrix4f getModelViewMatrix) {
public static void register(AddFramePassEvent event) {
event.addPass(Identifier.fromNamespaceAndPath("mydimension", "builder_preview"), new FramePassManager.PassDefinition() {
private float partial;
@Override public void extracts(LevelTargetBundle targets, FramePass pass, DeltaTracker delta) {
targets.main = pass.readsAndWrites(targets.main);
partial = delta.getGameTimeDeltaPartialTick(false);
}
@Override public void executes(LevelRenderState state) {
Minecraft minecraft = Minecraft.getInstance();
var camera = state.cameraRenderState;
Matrix4f view = new Matrix4f().rotation(new Quaternionf(camera.orientation).conjugate());
float fov = minecraft.gameRenderer.getFov(minecraft.gameRenderer.getMainCamera(), partial, true);
Frustum frustum = new Frustum(view, minecraft.gameRenderer.getProjectionMatrixForCulling(fov));
frustum.prepare(camera.pos.x, camera.pos.y, camera.pos.z);
com.xfestudio.mydimensionlord.client.builder.BuilderPreviewRenderer.render(new RenderFrame(camera.pos, frustum, partial, view));
}
});
}
}
// Native Minecraft 1.21.11
package com.xfestudio.mydimensionlord.platform;
import com.mojang.blaze3d.framegraph.FramePass;
import net.minecraft.client.Minecraft;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.renderer.LevelTargetBundle;
import net.minecraft.client.renderer.culling.Frustum;
import net.minecraft.client.renderer.state.LevelRenderState;
import net.minecraft.resources.Identifier;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.client.FramePassManager;
import net.minecraftforge.client.event.AddFramePassEvent;
import org.joml.Matrix4f;
import org.joml.Quaternionf;
public record RenderFrame(Vec3 camera, Frustum frustum, float partialTick, Matrix4f getModelViewMatrix) {
public static void register(AddFramePassEvent event) {
event.addPass(Identifier.fromNamespaceAndPath("mydimension", "builder_preview"), new FramePassManager.PassDefinition() {
private float partial;
@Override public void extracts(LevelTargetBundle targets, FramePass pass, DeltaTracker delta) {
targets.main = pass.readsAndWrites(targets.main);
partial = delta.getGameTimeDeltaPartialTick(false);
}
@Override public void executes(LevelRenderState state) {
Minecraft minecraft = Minecraft.getInstance();
var camera = state.cameraRenderState;
Matrix4f view = new Matrix4f().rotation(new Quaternionf(camera.orientation).conjugate());
float fov = minecraft.gameRenderer.getFov(minecraft.gameRenderer.getMainCamera(), partial, true);
Frustum frustum = new Frustum(view, minecraft.gameRenderer.getProjectionMatrixForCulling(fov));
frustum.prepare(camera.pos.x, camera.pos.y, camera.pos.z);
com.xfestudio.mydimensionlord.client.builder.BuilderPreviewRenderer.render(new RenderFrame(camera.pos, frustum, partial, view));
}
});
}
}