Skip to content

Commit 2b4e528

Browse files
committed
lots more misc no render options. Some implemented, some not
1 parent df33050 commit 2b4e528

File tree

8 files changed

+149
-3
lines changed

8 files changed

+149
-3
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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.render.NoRender;
21+
import net.minecraft.block.entity.SignText;
22+
import net.minecraft.client.render.VertexConsumerProvider;
23+
import net.minecraft.client.render.block.entity.AbstractSignBlockEntityRenderer;
24+
import net.minecraft.client.util.math.MatrixStack;
25+
import net.minecraft.util.math.BlockPos;
26+
import org.spongepowered.asm.mixin.Mixin;
27+
import org.spongepowered.asm.mixin.injection.At;
28+
import org.spongepowered.asm.mixin.injection.Inject;
29+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
30+
31+
@Mixin(AbstractSignBlockEntityRenderer.class)
32+
public class AbstractSignBlockEntityRendererMixin {
33+
@Inject(method = "renderText", at = @At("HEAD"), cancellable = true)
34+
private void injectRenderText(BlockPos pos, SignText text, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int textLineHeight, int maxTextWidth, boolean front, CallbackInfo ci) {
35+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoSignText()) ci.cancel();
36+
}
37+
}

src/main/java/com/lambda/mixin/render/CameraMixin.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.lambda.module.modules.player.Freecam;
2222
import com.lambda.module.modules.render.CameraTweaks;
2323
import com.lambda.module.modules.render.FreeLook;
24+
import com.lambda.module.modules.render.NoRender;
25+
import net.minecraft.block.enums.CameraSubmersionType;
2426
import net.minecraft.client.render.Camera;
2527
import net.minecraft.entity.Entity;
2628
import net.minecraft.world.BlockView;
@@ -145,4 +147,9 @@ private void onUpdateSetRotationArgs(Args args) {
145147
args.set(1, FreeLook.INSTANCE.getCamera().getPitchF());
146148
}
147149
}
150+
151+
@Inject(method = "getSubmersionType", at = @At("HEAD"), cancellable = true)
152+
private void injectGetSubmersionType(CallbackInfoReturnable<CameraSubmersionType> cir) {
153+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoFluidOverlay()) cir.setReturnValue(CameraSubmersionType.NONE);
154+
}
148155
}

src/main/java/com/lambda/mixin/render/GameRendererMixin.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@
2020
import com.lambda.event.EventFlow;
2121
import com.lambda.event.events.RenderEvent;
2222
import com.lambda.graphics.RenderMain;
23+
import com.lambda.module.modules.render.NoRender;
24+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
2325
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2426
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2527
import net.minecraft.client.render.Camera;
2628
import net.minecraft.client.render.GameRenderer;
2729
import net.minecraft.client.render.RenderTickCounter;
2830
import net.minecraft.client.render.WorldRenderer;
2931
import net.minecraft.client.util.ObjectAllocator;
32+
import net.minecraft.item.ItemStack;
3033
import org.joml.Matrix4f;
3134
import org.spongepowered.asm.mixin.Mixin;
3235
import org.spongepowered.asm.mixin.injection.At;
@@ -60,4 +63,14 @@ void onRenderWorld(WorldRenderer instance, ObjectAllocator allocator, RenderTick
6063

6164
RenderMain.render3D(positionMatrix, projectionMatrix);
6265
}
66+
67+
@ModifyExpressionValue(method = "renderWorld", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 0))
68+
private float modifyMax(float original) {
69+
return (NoRender.INSTANCE.isEnabled() && NoRender.getNoNausea()) ? 0 : original;
70+
}
71+
72+
@Inject(method = "showFloatingItem", at = @At("HEAD"), cancellable = true)
73+
private void injectShowFloatingItem(ItemStack floatingItem, CallbackInfo ci) {
74+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoFloatingItemAnimation()) ci.cancel();
75+
}
6376
}

src/main/java/com/lambda/mixin/render/InGameHudMixin.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,20 @@
1818
package com.lambda.mixin.render;
1919

2020
import com.lambda.gui.DearImGui;
21+
import com.lambda.module.modules.render.NoRender;
22+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
2123
import net.minecraft.client.gui.DrawContext;
2224
import net.minecraft.client.gui.hud.InGameHud;
2325
import net.minecraft.client.render.RenderTickCounter;
26+
import net.minecraft.entity.Entity;
27+
import net.minecraft.scoreboard.ScoreboardObjective;
28+
import net.minecraft.util.Identifier;
2429
import org.spongepowered.asm.mixin.Mixin;
2530
import org.spongepowered.asm.mixin.injection.At;
2631
import org.spongepowered.asm.mixin.injection.Inject;
32+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
2733
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
34+
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
2835

2936
@Mixin(InGameHud.class)
3037
public class InGameHudMixin {
@@ -35,4 +42,52 @@ public class InGameHudMixin {
3542
private void onRender(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
3643
DearImGui.INSTANCE.render();
3744
}
45+
46+
@Inject(method = "renderNauseaOverlay", at = @At("HEAD"), cancellable = true)
47+
private void injectRenderNauseaOverlay(DrawContext context, float nauseaStrength, CallbackInfo ci) {
48+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoNausea()) ci.cancel();
49+
}
50+
51+
@Inject(method = "renderPortalOverlay", at = @At("HEAD"), cancellable = true)
52+
private void injectRenderPortalOverlay(DrawContext context, float nauseaStrength, CallbackInfo ci) {
53+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoPortalOverlay()) ci.cancel();
54+
}
55+
56+
@Inject(method = "renderVignetteOverlay", at = @At("HEAD"), cancellable = true)
57+
private void injectRenderVignetteOverlay(DrawContext context, Entity entity, CallbackInfo ci) {
58+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoVignette()) ci.cancel();
59+
}
60+
61+
@Inject(method = "renderStatusEffectOverlay", at = @At("HEAD"), cancellable = true)
62+
private void injectRenderStatusEffectOverlay(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
63+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoStatusIcons()) ci.cancel();
64+
}
65+
66+
@Inject(method = "renderSpyglassOverlay", at = @At("HEAD"), cancellable = true)
67+
private void injectRenderSpyglassOverlay(DrawContext context, float scale, CallbackInfo ci) {
68+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoSpyglassOverlay()) ci.cancel();
69+
}
70+
71+
@ModifyArgs(method = "renderMiscOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;renderOverlay(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/util/Identifier;F)V"))
72+
private void modifyRenderOverlayArgs(Args args) {
73+
if (!((Identifier) args.get(1)).getPath().contains("pumpkin")) return;
74+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoPumpkinOverlay()) {
75+
args.set(2, 0f);
76+
}
77+
}
78+
79+
@ModifyExpressionValue(method = "renderMiscOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;getFrozenTicks()I"))
80+
private int modifyIsFirstPerson(int original) {
81+
return (NoRender.INSTANCE.isEnabled() && NoRender.getNoPowderedSnowOverlay()) ? 0 : original;
82+
}
83+
84+
@Inject(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", at = @At("HEAD"), cancellable = true)
85+
private void injectRenderScoreboardSidebar(DrawContext drawContext, ScoreboardObjective objective, CallbackInfo ci) {
86+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoScoreBoard()) ci.cancel();
87+
}
88+
89+
@Inject(method = "renderCrosshair", at = @At("HEAD"), cancellable = true)
90+
private void injectRenderCrosshair(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
91+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoCrosshair()) ci.cancel();
92+
}
3893
}

src/main/java/com/lambda/mixin/render/InGameOverlayRendererMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private static float onRenderFireOverlayTranslate(float x) {
4747

4848
@Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true)
4949
private static void onRenderUnderwaterOverlay(MinecraftClient client, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) {
50-
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoUnderwater()) ci.cancel();
50+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoFluidOverlay()) ci.cancel();
5151
}
5252

5353
@Inject(method = "renderInWallOverlay", at = @At("HEAD"), cancellable = true)

src/main/java/com/lambda/mixin/render/ScreenMixin.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,28 @@
1818
package com.lambda.mixin.render;
1919

2020
import com.lambda.gui.components.QuickSearch;
21+
import com.lambda.module.modules.render.NoRender;
22+
import net.minecraft.client.gui.DrawContext;
2123
import net.minecraft.client.gui.screen.Screen;
2224
import org.lwjgl.glfw.GLFW;
2325
import org.spongepowered.asm.mixin.Mixin;
2426
import org.spongepowered.asm.mixin.injection.At;
2527
import org.spongepowered.asm.mixin.injection.Inject;
28+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2629
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2730

2831
@Mixin(Screen.class)
2932
public class ScreenMixin {
30-
3133
@Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true)
3234
private void onKeyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) {
3335
if (keyCode == GLFW.GLFW_KEY_ESCAPE && QuickSearch.INSTANCE.isOpen()) {
3436
QuickSearch.INSTANCE.close();
3537
cir.setReturnValue(true);
3638
}
3739
}
40+
41+
@Inject(method = "renderInGameBackground", at = @At("HEAD"), cancellable = true)
42+
private void injectRenderInGameBackground(DrawContext context, CallbackInfo ci) {
43+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoGuiShadow()) ci.cancel();
44+
}
3845
}

src/main/kotlin/com/lambda/module/modules/render/NoRender.kt

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,37 @@ object NoRender : Module(
5151

5252
@JvmStatic val noBlindness by setting("No Blindness", true)
5353
@JvmStatic val noDarkness by setting("No Darkness", true)
54+
@JvmStatic val noNausea by setting("No Nausea", true)
5455
@JvmStatic val noBurning by setting("No Burning Overlay", true)
5556
@JvmStatic val fireOverlayYOffset by setting("Fire Overlay Y Offset", -0.3, -0.8..0.0, 0.1) { !noBurning }
56-
@JvmStatic val noUnderwater by setting("No Underwater Overlay", true)
57+
@JvmStatic val noPortalOverlay by setting("No Portal Overlay", true)
58+
@JvmStatic val noFluidOverlay by setting("No Fluid Overlay", true)
59+
@JvmStatic val noPowderedSnowOverlay by setting("No Powdered Snow Overlay", true)
5760
@JvmStatic val noInWall by setting("No In Wall Overlay", true)
61+
@JvmStatic val noPumpkinOverlay by setting("No Pumpkin Overlay", true)
62+
@JvmStatic val noVignette by setting("No Vignette", true)
63+
@JvmStatic val noSpyglassOverlay by setting("No Spyglass Overlay", false)
64+
@JvmStatic val noGuiShadow by setting("No Gui Shadow", false)
65+
@JvmStatic val noFloatingItemAnimation by setting("No Floating Item Animation", false, "Disables floating item animations, typically used when a totem pops")
66+
@JvmStatic val noSignText by setting("No Sign Text", false)
67+
@JvmStatic val noEnchantmentGlint by setting("No Enchantment Glint", false)
68+
@JvmStatic val noArmor by setting("No Armor", false)
69+
@JvmStatic val noInvisibility by setting("No Invisibility", false)
70+
@JvmStatic val noGlow by setting("No Glow", false)
71+
@JvmStatic val noCrosshair by setting("No Crosshair", false)
72+
@JvmStatic val noBossBar by setting("No Boss Bar", false)
73+
@JvmStatic val noScoreBoard by setting("No Score Board", false)
74+
@JvmStatic val noStatusIcons by setting("No Status Icons", false)
75+
@JvmStatic val noWorldBorder by setting("No World Border", false)
76+
@JvmStatic val noEnchantingTableBook by setting("No Enchanting Table Book", false)
5877
@JvmStatic val noChatVerificationToast by setting("No Chat Verification Toast", true)
78+
@JvmStatic val noBlockBreakingOverlay by setting("No Block Breaking Overlay", false)
79+
@JvmStatic val noBeaconBeams by setting("No Beacon Beams", false)
80+
@JvmStatic val noSpawnerMob by setting("No Spawner Mob", false)
81+
@JvmStatic val noDeadEntities by setting("No Dead Entities", false)
82+
@JvmStatic val noNametags by setting("No Nametags", false)
83+
@JvmStatic val persistentBarriers by setting("Persistent Barriers", false)
84+
@JvmStatic val noTextureRotations by setting("No Texture Rotations", false)
5985
private val particles by setting("Particles", particleMap.values.toSet(), emptySet(), "Particles to omit from rendering")
6086
private val playerEntities by setting("Player Entities", playerEntityMap.values.toSet(), emptySet(), "Player entities to omit from rendering")
6187
private val bossEntities by setting("Boss Entities", bossEntityMap.values.toSet(), emptySet(), "Boss entities to omit from rendering")

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"network.HandshakeC2SPacketMixin",
2828
"network.LoginHelloC2SPacketMixin",
2929
"network.LoginKeyC2SPacketMixin",
30+
"render.AbstractSignBlockEntityRendererMixin",
3031
"render.BackgroundRendererMixin",
3132
"render.BlockEntityRenderDispatcherMixin",
3233
"render.BlockRenderManagerMixin",

0 commit comments

Comments
 (0)