Skip to content

Commit 12a894f

Browse files
committed
Formatting and javadoc comments
1 parent 8bae962 commit 12a894f

File tree

4 files changed

+28
-191
lines changed

4 files changed

+28
-191
lines changed

worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/callback/WorldRenderCallback.java

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,24 @@
1313
import net.fabricmc.fabric.api.event.EventFactory;
1414
import org.enginehub.worldeditcui.render.WecuiRenderContext;
1515

16+
/**
17+
* A re-implementation of the old world render events for Fabric.
18+
* Temporary until Fabric finishes their new rendering API.
19+
*/
1620
public interface WorldRenderCallback {
1721
void render(WecuiRenderContext ctx);
1822

23+
/**
24+
* Fires at the end of world rendering, after all other rendering is complete.
25+
*/
1926
Event<WorldRenderCallback> LAST = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
2027
for (var cb : cbs) cb.render(ctx);
2128
});
22-
Event<WorldRenderCallback> START = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
23-
for (var cb : cbs) cb.render(ctx);
24-
});
25-
Event<WorldRenderCallback> BEFORE_ENTITY_EXTRACT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
26-
for (var cb : cbs) cb.render(ctx);
27-
});
28-
Event<WorldRenderCallback> AFTER_ENTITY_EXTRACT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
29-
for (var cb : cbs) cb.render(ctx);
30-
});
31-
Event<WorldRenderCallback> BEFORE_BLOCK_ENTITY_EXTRACT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
32-
for (var cb : cbs) cb.render(ctx);
33-
});
34-
Event<WorldRenderCallback> AFTER_BLOCK_ENTITY_EXTRACT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
35-
for (var cb : cbs) cb.render(ctx);
36-
});
37-
Event<WorldRenderCallback> BEFORE_BLOCK_OUTLINE_EXTRACT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
38-
for (var cb : cbs) cb.render(ctx);
39-
});
29+
30+
/**
31+
* Fires immediately after the translucent rendering pass.
32+
*/
4033
Event<WorldRenderCallback> AFTER_TRANSLUCENT = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
4134
for (var cb : cbs) cb.render(ctx);
4235
});
43-
Event<WorldRenderCallback> AFTER_MAIN_PASS_SCHEDULED = EventFactory.createArrayBacked(WorldRenderCallback.class, cbs -> ctx -> {
44-
for (var cb : cbs) cb.render(ctx);
45-
});
4636
}

worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/mixin/LevelRendererMixin.java

Lines changed: 4 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,11 @@
1111

1212
import com.mojang.blaze3d.buffers.GpuBufferSlice;
1313
import com.mojang.blaze3d.resource.GraphicsResourceAllocator;
14-
import com.mojang.blaze3d.systems.RenderSystem;
1514
import com.mojang.blaze3d.vertex.PoseStack;
16-
import com.mojang.blaze3d.vertex.VertexConsumer;
1715
import net.minecraft.client.Camera;
1816
import net.minecraft.client.DeltaTracker;
1917
import net.minecraft.client.Minecraft;
2018
import net.minecraft.client.renderer.LevelRenderer;
21-
import net.minecraft.client.renderer.state.BlockOutlineRenderState;
22-
import org.enginehub.worldeditcui.callback.BlockOutlineRenderCallback;
2319
import org.enginehub.worldeditcui.callback.WorldRenderCallback;
2420
import org.enginehub.worldeditcui.render.WecuiRenderContext;
2521
import org.joml.Matrix4f;
@@ -31,23 +27,14 @@
3127
import org.spongepowered.asm.mixin.injection.Inject;
3228
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3329

30+
/**
31+
* Mixin to LevelRenderer to inject our world render callbacks.
32+
* Temporary until Fabric finishes their new rendering API.
33+
*/
3434
@Mixin(LevelRenderer.class)
3535
public abstract class LevelRendererMixin {
3636
@Shadow @Final private Minecraft minecraft;
3737

38-
// START (old START)
39-
@Inject(method = "renderLevel", at = @At("HEAD"))
40-
private void wecui$start(
41-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
42-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
43-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky, CallbackInfo ci
44-
) {
45-
PoseStack pose = new PoseStack();
46-
pose.last().pose().set(modelView); // copy modelView for parity with old ctx
47-
WorldRenderCallback.START.invoker()
48-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
49-
}
50-
5138
// LAST (old LAST)
5239
@Inject(method = "renderLevel", at = @At("TAIL"))
5340
private void wecui$last(
@@ -61,156 +48,6 @@ public abstract class LevelRendererMixin {
6148
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
6249
}
6350

64-
// BEFORE_ENTITIES → right BEFORE extractVisibleEntities(...)
65-
@Inject(
66-
method = "renderLevel",
67-
at = @At(
68-
value = "INVOKE",
69-
target = "Lnet/minecraft/client/renderer/LevelRenderer;extractVisibleEntities(" +
70-
"Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/culling/Frustum;" +
71-
"Lnet/minecraft/client/DeltaTracker;Lnet/minecraft/client/renderer/state/LevelRenderState;)V"
72-
)
73-
)
74-
private void wecui$beforeEntities(
75-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
76-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
77-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
78-
CallbackInfo ci
79-
) {
80-
var pose = new PoseStack();
81-
pose.last().pose().set(modelView);
82-
WorldRenderCallback.BEFORE_ENTITY_EXTRACT.invoker()
83-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
84-
}
85-
86-
// AFTER_ENTITIES → right AFTER extractVisibleEntities(...)
87-
@Inject(
88-
method = "renderLevel",
89-
at = @At(
90-
value = "INVOKE",
91-
target = "Lnet/minecraft/client/renderer/LevelRenderer;extractVisibleEntities(" +
92-
"Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/culling/Frustum;" +
93-
"Lnet/minecraft/client/DeltaTracker;Lnet/minecraft/client/renderer/state/LevelRenderState;)V",
94-
shift = At.Shift.AFTER
95-
)
96-
)
97-
private void wecui$afterEntities(
98-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
99-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
100-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
101-
CallbackInfo ci
102-
) {
103-
var pose = new PoseStack();
104-
pose.last().pose().set(modelView);
105-
WorldRenderCallback.AFTER_ENTITY_EXTRACT.invoker()
106-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
107-
}
108-
109-
// BEFORE_BLOCK_ENTITY_EXTRACT
110-
@Inject(
111-
method = "renderLevel",
112-
at = @At(
113-
value = "INVOKE",
114-
target = "Lnet/minecraft/client/renderer/LevelRenderer;extractVisibleBlockEntities(" +
115-
"Lnet/minecraft/client/Camera;FLnet/minecraft/client/renderer/state/LevelRenderState;)V"
116-
)
117-
)
118-
private void wecui$beforeBlockEntityExtract(
119-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
120-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
121-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
122-
CallbackInfo ci
123-
) {
124-
var pose = new PoseStack();
125-
pose.last().pose().set(modelView);
126-
WorldRenderCallback.BEFORE_BLOCK_ENTITY_EXTRACT.invoker()
127-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
128-
}
129-
130-
// AFTER_BLOCK_ENTITY_EXTRACT
131-
@Inject(
132-
method = "renderLevel",
133-
at = @At(
134-
value = "INVOKE",
135-
target = "Lnet/minecraft/client/renderer/LevelRenderer;extractVisibleBlockEntities(" +
136-
"Lnet/minecraft/client/Camera;FLnet/minecraft/client/renderer/state/LevelRenderState;)V",
137-
shift = At.Shift.AFTER
138-
)
139-
)
140-
private void wecui$afterBlockEntityExtract(
141-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
142-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
143-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
144-
CallbackInfo ci
145-
) {
146-
var pose = new PoseStack();
147-
pose.last().pose().set(modelView);
148-
WorldRenderCallback.AFTER_BLOCK_ENTITY_EXTRACT.invoker()
149-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
150-
}
151-
152-
@Inject(
153-
method = "renderLevel",
154-
at = @At(
155-
value = "INVOKE",
156-
target = "Lnet/minecraft/client/renderer/LevelRenderer;extractBlockOutline(" +
157-
"Lnet/minecraft/client/Camera;" +
158-
"Lnet/minecraft/client/renderer/state/LevelRenderState;)V"
159-
)
160-
)
161-
private void wecui$beforeBlockOutlineExtract(
162-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
163-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
164-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
165-
CallbackInfo ci
166-
) {
167-
var pose = new PoseStack();
168-
pose.last().pose().set(modelView);
169-
WorldRenderCallback.BEFORE_BLOCK_OUTLINE_EXTRACT.invoker()
170-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
171-
}
172-
173-
@Inject(method = "renderHitOutline", at = @At("HEAD"), cancellable = true)
174-
private void wecui$blockOutline(
175-
PoseStack pose, VertexConsumer consumer,
176-
double camX, double camY, double camZ,
177-
BlockOutlineRenderState state, int packedLight,
178-
CallbackInfo ci
179-
) {
180-
var ctx = new BlockOutlineRenderCallback.Context(
181-
this.minecraft,
182-
this.minecraft.gameRenderer.getMainCamera(),
183-
pose,
184-
RenderSystem.getProjectionMatrixBuffer(),
185-
consumer,
186-
camX, camY, camZ,
187-
state
188-
);
189-
if (BlockOutlineRenderCallback.EVENT.invoker().render(ctx)) {
190-
ci.cancel(); // fully replace vanilla outline
191-
}
192-
}
193-
194-
@Inject(
195-
method = "renderLevel",
196-
at = @At(
197-
value = "INVOKE",
198-
target = "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/culling/Frustum;Lorg/joml/Matrix4f;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;ZLnet/minecraft/client/renderer/state/LevelRenderState;Lnet/minecraft/client/DeltaTracker;Lnet/minecraft/util/profiling/ProfilerFiller;)V",
199-
shift = At.Shift.AFTER
200-
)
201-
)
202-
private void wecui$afterMainPassScheduled(
203-
GraphicsResourceAllocator gfx, DeltaTracker delta, boolean renderBlockOutline,
204-
Camera camera, Matrix4f modelView, Matrix4f projection, Matrix4f inverseProjection,
205-
GpuBufferSlice slice, Vector4f clearColor, boolean renderSky,
206-
CallbackInfo ci
207-
) {
208-
var pose = new PoseStack();
209-
pose.last().pose().set(modelView);
210-
WorldRenderCallback.AFTER_MAIN_PASS_SCHEDULED.invoker()
211-
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
212-
}
213-
21451
// AFTER_TRANSLUCENT — fires immediately after translucent pass queued/executed
21552
@Inject(
21653
method = "renderLevel",
@@ -230,5 +67,4 @@ public abstract class LevelRendererMixin {
23067
WorldRenderCallback.AFTER_TRANSLUCENT.invoker()
23168
.render(new WecuiRenderContext(this.minecraft, camera, delta, pose, projection));
23269
}
233-
23470
}

worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/WecuiRenderContext.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616
import net.minecraft.client.Minecraft;
1717
import org.joml.Matrix4f;
1818

19+
/**
20+
* Temporary record for render context information used to render elements through
21+
* {@link org.enginehub.worldeditcui.callback.WorldRenderCallback} until Fabric provides
22+
* a proper rendering API.
23+
*
24+
* @param client The Minecraft client instance.
25+
* @param camera The current camera.
26+
* @param delta The delta tracker for interpolation.
27+
* @param poseStack The pose stack for rendering transformations.
28+
* @param projectionMatrix The projection matrix used for rendering.
29+
*/
1930
public record WecuiRenderContext(
2031
Minecraft client,
2132
Camera camera,
@@ -27,4 +38,4 @@ public boolean advancedTranslucency() {
2738
var status = client.options.graphicsMode().get();
2839
return status == GraphicsStatus.FABULOUS;
2940
}
30-
}
41+
}

worldeditcui-fabric/src/main/resources/worldeditcui.mixins.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
"injectors": {
1212
"defaultRequire": 1
1313
}
14-
}
14+
}

0 commit comments

Comments
 (0)