Skip to content

Commit 9945621

Browse files
committed
Fix rendering of shapes near the world border. Closes #694
1 parent c5afffc commit 9945621

File tree

4 files changed

+19
-21
lines changed

4 files changed

+19
-21
lines changed

src/main/java/net/earthcomputer/clientcommands/render/Cuboid.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import com.mojang.blaze3d.vertex.PoseStack;
55
import com.mojang.blaze3d.vertex.VertexConsumer;
6+
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
67
import net.minecraft.world.phys.AABB;
78
import net.minecraft.world.phys.Vec3;
89

@@ -34,9 +35,9 @@ public Cuboid(Vec3 start, Vec3 end, int color) {
3435
}
3536

3637
@Override
37-
public void render(PoseStack poseStack, VertexConsumer vertexConsumer, float delta) {
38+
public void render(VertexConsumer vertexConsumer, WorldRenderContext context) {
3839
for (Line edge : this.edges) {
39-
edge.renderLine(poseStack, vertexConsumer, delta, prevPos.subtract(getPos()));
40+
edge.renderLine(vertexConsumer, context, prevPos.subtract(getPos()));
4041
}
4142
}
4243

src/main/java/net/earthcomputer/clientcommands/render/Line.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.mojang.blaze3d.vertex.PoseStack;
44
import com.mojang.blaze3d.vertex.VertexConsumer;
5+
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
56
import net.minecraft.world.phys.Vec3;
67

78
public class Line extends Shape {
@@ -17,14 +18,18 @@ public Line(Vec3 start, Vec3 end, int color) {
1718
}
1819

1920
@Override
20-
public void render(PoseStack poseStack, VertexConsumer vertexConsumer, float delta) {
21-
renderLine(poseStack, vertexConsumer, delta, prevPos.subtract(getPos()));
21+
public void render(VertexConsumer vertexConsumer, WorldRenderContext context) {
22+
renderLine(vertexConsumer, context, prevPos.subtract(getPos()));
2223
}
2324

24-
public void renderLine(PoseStack poseStack, VertexConsumer vertexConsumer, float delta, Vec3 prevPosOffset) {
25+
public void renderLine(VertexConsumer vertexConsumer, WorldRenderContext context, Vec3 prevPosOffset) {
26+
PoseStack poseStack = context.matrixStack();
27+
float delta = context.tickCounter().getRealtimeDeltaTicks();
28+
Vec3 cameraPos = context.camera().getPosition();
29+
assert poseStack != null;
2530
Vec3 normal = this.end.subtract(this.start).normalize();
26-
putVertex(poseStack, vertexConsumer, this.start.add(prevPosOffset.scale(1 - delta)), normal);
27-
putVertex(poseStack, vertexConsumer, this.end.add(prevPosOffset.scale(1 - delta)), normal);
31+
putVertex(poseStack, vertexConsumer, this.start.add(prevPosOffset.scale(1 - delta)).subtract(cameraPos), normal);
32+
putVertex(poseStack, vertexConsumer, this.end.add(prevPosOffset.scale(1 - delta)).subtract(cameraPos), normal);
2833
}
2934

3035
private void putVertex(PoseStack poseStack, VertexConsumer vertexConsumer, Vec3 pos, Vec3 normal) {

src/main/java/net/earthcomputer/clientcommands/render/RenderQueue.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import com.mojang.blaze3d.pipeline.RenderPipeline;
44
import com.mojang.blaze3d.platform.DepthTestFunction;
5-
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
6-
import com.mojang.blaze3d.vertex.PoseStack;
75
import com.mojang.blaze3d.vertex.VertexConsumer;
8-
import com.mojang.blaze3d.vertex.VertexFormat;
96
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
7+
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
108
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
119
import net.minecraft.client.Minecraft;
1210
import net.minecraft.client.renderer.RenderPipelines;
@@ -44,13 +42,7 @@ public class RenderQueue {
4442
static {
4543
ClientTickEvents.START_CLIENT_TICK.register(RenderQueue::tick);
4644
WorldRenderEvents.AFTER_ENTITIES.register(context -> {
47-
context.matrixStack().pushPose();
48-
49-
Vec3 cameraPos = context.camera().getPosition();
50-
context.matrixStack().translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);
51-
RenderQueue.render(RenderQueue.Layer.ON_TOP, Objects.requireNonNull(context.consumers()).getBuffer(RenderQueue.LINES_NO_DEPTH_LAYER), context.matrixStack(), context.tickCounter().getRealtimeDeltaTicks());
52-
53-
context.matrixStack().popPose();
45+
RenderQueue.render(RenderQueue.Layer.ON_TOP, Objects.requireNonNull(context.consumers()).getBuffer(RenderQueue.LINES_NO_DEPTH_LAYER), context);
5446
});
5547
}
5648

@@ -117,11 +109,11 @@ private static void tick(Minecraft mc) {
117109
}
118110
}
119111

120-
public static void render(Layer layer, VertexConsumer vertexConsumer, PoseStack poseStack, float delta) {
112+
public static void render(Layer layer, VertexConsumer vertexConsumer, WorldRenderContext context) {
121113
if (!queue.containsKey(layer)) {
122114
return;
123115
}
124-
queue.get(layer).values().forEach(shape -> shape.render(poseStack, vertexConsumer, delta));
116+
queue.get(layer).values().forEach(shape -> shape.render(vertexConsumer, context));
125117
}
126118

127119
public enum Layer {

src/main/java/net/earthcomputer/clientcommands/render/Shape.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package net.earthcomputer.clientcommands.render;
22

3-
import com.mojang.blaze3d.vertex.PoseStack;
43
import com.mojang.blaze3d.vertex.VertexConsumer;
4+
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
55
import net.minecraft.world.phys.Vec3;
66

77
public abstract class Shape {
@@ -11,7 +11,7 @@ public abstract class Shape {
1111
public void tick() {
1212
}
1313

14-
public abstract void render(PoseStack poseStack, VertexConsumer vertexConsumer, float delta);
14+
public abstract void render(VertexConsumer vertexConsumer, WorldRenderContext context);
1515

1616
public abstract Vec3 getPos();
1717

0 commit comments

Comments
 (0)