Skip to content

Commit 1d3f53c

Browse files
committed
Enable Minecrafts secret debug renderers
1 parent 9a8a8a7 commit 1d3f53c

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright 2025 Lambda
3+
*
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
18+
package com.lambda.mixin.render;
19+
20+
import com.lambda.module.modules.debug.DebugRendererModule;
21+
import net.minecraft.client.render.Frustum;
22+
import net.minecraft.client.render.VertexConsumerProvider;
23+
import net.minecraft.client.render.debug.*;
24+
import net.minecraft.client.util.math.MatrixStack;
25+
import org.spongepowered.asm.mixin.Mixin;
26+
import org.spongepowered.asm.mixin.injection.At;
27+
import org.spongepowered.asm.mixin.injection.Inject;
28+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
29+
30+
@Mixin(DebugRenderer.class)
31+
public class DebugRendererMixin {
32+
@Inject(method = "render", at = @At("TAIL"))
33+
private void onRender(MatrixStack matrices, Frustum frustum, VertexConsumerProvider.Immediate vertexConsumers, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) {
34+
DebugRendererModule.render(matrices, vertexConsumers, cameraX, cameraY, cameraZ);
35+
}
36+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* Copyright 2025 Lambda
3+
*
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
18+
package com.lambda.module.modules.debug
19+
20+
import com.lambda.Lambda.mc
21+
import com.lambda.module.Module
22+
import com.lambda.module.tag.ModuleTag
23+
import net.minecraft.client.render.VertexConsumerProvider
24+
import net.minecraft.client.render.debug.DebugRenderer
25+
import net.minecraft.client.util.math.MatrixStack
26+
27+
object DebugRendererModule: Module(
28+
name = "Debug Renderer",
29+
description = "Renders debug information of minecraft internals",
30+
tag = ModuleTag.DEBUG,
31+
) {
32+
private val waterDebugRenderer by setting("Water Debug Renderer", false)
33+
private val chunkBorderDebugRenderer by setting("Chunk Border Debug Renderer", false)
34+
private val heightmapDebugRenderer by setting("Heightmap Debug Renderer", false)
35+
private val collisionDebugRenderer by setting("Collision Debug Renderer", false)
36+
private val supportingBlockDebugRenderer by setting("Supporting Block Debug Renderer", false)
37+
private val neighborUpdateDebugRenderer by setting("Neighbor Update Debug Renderer", false)
38+
private val redstoneUpdateOrderDebugRenderer by setting("Redstone Update Order Debug Renderer", false)
39+
private val structureDebugRenderer by setting("Structure Debug Renderer", false)
40+
private val skyLightDebugRenderer by setting("Sky Light Debug Renderer", false)
41+
private val worldGenAttemptDebugRenderer by setting("World Gen Attempt Debug Renderer", false)
42+
private val blockOutlineDebugRenderer by setting("Block Outline Debug Renderer", false)
43+
private val chunkLoadingDebugRenderer by setting("Chunk Loading Debug Renderer", false)
44+
private val villageDebugRenderer by setting("Village Debug Renderer", false)
45+
private val villageSectionsDebugRenderer by setting("Village Sections Debug Renderer", false)
46+
private val beeDebugRenderer by setting("Bee Debug Renderer", false)
47+
private val raidCenterDebugRenderer by setting("Raid Center Debug Renderer", false)
48+
private val goalSelectorDebugRenderer by setting("Goal Selector Debug Renderer", false)
49+
private val gameTestDebugRenderer by setting("Game Test Debug Renderer", false)
50+
private val gameEventDebugRenderer by setting("Game Event Debug Renderer", false)
51+
private val lightDebugRenderer by setting("Light Debug Renderer", false)
52+
// private val breezeDebugRenderer by setting("Breeze Debug Renderer", false)
53+
// private val chunkDebugRenderer by setting("Chunk Debug Renderer", false)
54+
// private val octreeDebugRenderer by setting("Octree Debug Renderer", false)
55+
56+
@JvmStatic
57+
fun render(
58+
matrices: MatrixStack,
59+
vertexConsumers: VertexConsumerProvider.Immediate,
60+
cameraX: Double,
61+
cameraY: Double, cameraZ: Double
62+
) {
63+
val renderers = mc.debugRenderer
64+
mutableListOf<DebugRenderer.Renderer>().apply {
65+
if (waterDebugRenderer) add(renderers.waterDebugRenderer)
66+
if (chunkBorderDebugRenderer) add(renderers.chunkBorderDebugRenderer)
67+
if (heightmapDebugRenderer) add(renderers.heightmapDebugRenderer)
68+
if (collisionDebugRenderer) add(renderers.collisionDebugRenderer)
69+
if (supportingBlockDebugRenderer) add(renderers.supportingBlockDebugRenderer)
70+
if (neighborUpdateDebugRenderer) add(renderers.neighborUpdateDebugRenderer)
71+
if (redstoneUpdateOrderDebugRenderer) add(renderers.redstoneUpdateOrderDebugRenderer)
72+
if (structureDebugRenderer) add(renderers.structureDebugRenderer)
73+
if (skyLightDebugRenderer) add(renderers.skyLightDebugRenderer)
74+
if (worldGenAttemptDebugRenderer) add(renderers.worldGenAttemptDebugRenderer)
75+
if (blockOutlineDebugRenderer) add(renderers.blockOutlineDebugRenderer)
76+
if (chunkLoadingDebugRenderer) add(renderers.chunkLoadingDebugRenderer)
77+
if (villageDebugRenderer) add(renderers.villageDebugRenderer)
78+
if (villageSectionsDebugRenderer) add(renderers.villageSectionsDebugRenderer)
79+
if (beeDebugRenderer) add(renderers.beeDebugRenderer)
80+
if (raidCenterDebugRenderer) add(renderers.raidCenterDebugRenderer)
81+
if (goalSelectorDebugRenderer) add(renderers.goalSelectorDebugRenderer)
82+
if (gameTestDebugRenderer) add(renderers.gameTestDebugRenderer)
83+
if (gameEventDebugRenderer) add(renderers.gameEventDebugRenderer)
84+
if (lightDebugRenderer) add(renderers.lightDebugRenderer)
85+
}.forEach { it.render(matrices, vertexConsumers, cameraX, cameraY, cameraZ) }
86+
}
87+
}

src/main/resources/lambda.mixins.common.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"render.ChatInputSuggestorMixin",
3636
"render.ChatScreenMixin",
3737
"render.DebugHudMixin",
38+
"render.DebugRendererMixin",
3839
"render.ElytraFeatureRendererMixin",
3940
"render.GameRendererMixin",
4041
"render.GlStateManagerMixin",

0 commit comments

Comments
 (0)