Skip to content

Commit fa2e846

Browse files
committed
Get rid of all @redirects
1 parent 5dfaa9e commit fa2e846

11 files changed

+74
-62
lines changed

src/main/java/com/lambda/mixin/entity/FireworkRocketEntityMixin.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,20 @@
1818
package com.lambda.mixin.entity;
1919

2020
import com.lambda.module.modules.movement.ElytraFly;
21+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
22+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2123
import net.minecraft.entity.LivingEntity;
2224
import net.minecraft.entity.projectile.FireworkRocketEntity;
2325
import net.minecraft.util.math.Vec3d;
2426
import org.spongepowered.asm.mixin.Mixin;
2527
import org.spongepowered.asm.mixin.injection.At;
26-
import org.spongepowered.asm.mixin.injection.Redirect;
2728

2829
@Mixin(FireworkRocketEntity.class)
2930
public class FireworkRocketEntityMixin {
30-
@Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;setVelocity(Lnet/minecraft/util/math/Vec3d;)V"))
31-
private void redirectSetVelocity(LivingEntity shooter, Vec3d vec3d) {
31+
@WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;setVelocity(Lnet/minecraft/util/math/Vec3d;)V"))
32+
private void wrapSetVelocity(LivingEntity shooter, Vec3d vec3d, Operation<Void> original) {
3233
if (ElytraFly.getDoBoost()) {
3334
ElytraFly.boostRocket();
34-
} else shooter.setVelocity(vec3d);
35+
} else original.call(shooter, vec3d);
3536
}
3637
}

src/main/java/com/lambda/mixin/input/KeyBindingMixin.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,23 @@
2020
import com.lambda.module.modules.movement.Speed;
2121
import com.lambda.module.modules.movement.Sprint;
2222
import com.lambda.module.modules.movement.TargetStrafe;
23+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2324
import net.minecraft.client.option.KeyBinding;
2425
import org.spongepowered.asm.mixin.Mixin;
2526
import org.spongepowered.asm.mixin.injection.At;
26-
import org.spongepowered.asm.mixin.injection.Inject;
27-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2827

2928
import java.util.Objects;
3029

3130
@Mixin(KeyBinding.class)
3231
public class KeyBindingMixin {
33-
@Inject(method = "isPressed", at = @At("HEAD"), cancellable = true)
34-
void autoSprint(CallbackInfoReturnable<Boolean> cir) {
32+
@ModifyReturnValue(method = "isPressed", at = @At("RETURN"))
33+
boolean modifyIsPressed(boolean original) {
3534
KeyBinding instance = (KeyBinding) (Object) this;
36-
if (!Objects.equals(instance.getTranslationKey(), "key.sprint")) return;
35+
if (!Objects.equals(instance.getTranslationKey(), "key.sprint")) return original;
3736

38-
if (Sprint.INSTANCE.isEnabled()) cir.setReturnValue(true);
39-
if (Speed.INSTANCE.isEnabled() && Speed.getMode() == Speed.Mode.GrimStrafe) cir.setReturnValue(true);
40-
if (TargetStrafe.INSTANCE.isEnabled() && TargetStrafe.isActive()) cir.setReturnValue(true);
37+
if (Sprint.INSTANCE.isEnabled()) return true;
38+
if (Speed.INSTANCE.isEnabled() && Speed.getMode() == Speed.Mode.GrimStrafe) return true;
39+
if (TargetStrafe.INSTANCE.isEnabled() && TargetStrafe.isActive()) return true;
40+
return original;
4141
}
4242
}

src/main/java/com/lambda/mixin/items/BarrierBlockMixin.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,25 @@
1818
package com.lambda.mixin.items;
1919

2020
import com.lambda.module.modules.render.BlockESP;
21+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2122
import net.minecraft.block.BarrierBlock;
2223
import net.minecraft.block.BlockRenderType;
2324
import net.minecraft.block.BlockState;
2425
import net.minecraft.block.Blocks;
2526
import org.spongepowered.asm.mixin.Mixin;
2627
import org.spongepowered.asm.mixin.injection.At;
27-
import org.spongepowered.asm.mixin.injection.Inject;
28-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2928

3029
@Mixin(BarrierBlock.class)
3130
public class BarrierBlockMixin {
3231
/**
3332
* Modifies barrier block render type to {@link BlockRenderType#MODEL} when {@link BlockESP} is enabled and {@link BlockESP#getBarrier()} is true
3433
*/
35-
@Inject(method = "getRenderType", at = @At("RETURN"), cancellable = true)
36-
private void getRenderType(BlockState state, CallbackInfoReturnable<BlockRenderType> cir) {
34+
@ModifyReturnValue(method = "getRenderType", at = @At("RETURN"))
35+
private BlockRenderType modifyGetRenderType(BlockRenderType original, BlockState state) {
3736
if (BlockESP.INSTANCE.isEnabled()
3837
&& BlockESP.getBarrier()
3938
&& state.getBlock() == Blocks.BARRIER
40-
) cir.setReturnValue(BlockRenderType.MODEL);
39+
) return BlockRenderType.MODEL;
40+
return original;
4141
}
4242
}

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

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

2020
import com.lambda.module.modules.client.LambdaMoji;
21+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
22+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2123
import net.minecraft.client.font.TextRenderer;
2224
import net.minecraft.client.gui.DrawContext;
2325
import net.minecraft.client.gui.hud.ChatHud;
2426
import net.minecraft.text.OrderedText;
2527
import org.spongepowered.asm.mixin.Mixin;
2628
import org.spongepowered.asm.mixin.injection.At;
27-
import org.spongepowered.asm.mixin.injection.Redirect;
2829

2930
@Mixin(ChatHud.class)
3031
public class ChatHudMixin {
@@ -36,8 +37,8 @@ public class ChatHudMixin {
3637
* context.getMatrices().pop();
3738
* }</pre>
3839
*/
39-
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawTextWithShadow(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/OrderedText;III)I"))
40-
int redirectRenderCall(DrawContext instance, TextRenderer textRenderer, OrderedText text, int x, int y, int color) {
41-
return instance.drawTextWithShadow(textRenderer, LambdaMoji.INSTANCE.parse(text, x, y, color), 0, y, 16777215 + (color << 24));
40+
@WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawTextWithShadow(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/OrderedText;III)I"))
41+
int wrapRenderCall(DrawContext instance, TextRenderer textRenderer, OrderedText text, int x, int y, int color, Operation<Integer> original) {
42+
return original.call(instance, textRenderer, LambdaMoji.INSTANCE.parse(text, x, y, color), 0, y, 16777215 + (color << 24));
4243
}
4344
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@
3030
import net.minecraft.client.network.ClientPlayNetworkHandler;
3131
import net.minecraft.command.CommandSource;
3232
import org.jetbrains.annotations.Nullable;
33+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
34+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
3335
import org.spongepowered.asm.mixin.Final;
3436
import org.spongepowered.asm.mixin.Mixin;
3537
import org.spongepowered.asm.mixin.Shadow;
3638
import org.spongepowered.asm.mixin.Unique;
3739
import org.spongepowered.asm.mixin.injection.At;
3840
import org.spongepowered.asm.mixin.injection.Inject;
3941
import org.spongepowered.asm.mixin.injection.ModifyVariable;
40-
import org.spongepowered.asm.mixin.injection.Redirect;
4142
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
4243

4344
import java.util.Map;
@@ -61,8 +62,8 @@ private boolean refreshModify(boolean showCompletions) {
6162
return CommandManager.INSTANCE.isCommand(textField.getText());
6263
}
6364

64-
@Redirect(method = "refresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;getCommandDispatcher()Lcom/mojang/brigadier/CommandDispatcher;"))
65-
private CommandDispatcher<CommandSource> refreshRedirect(ClientPlayNetworkHandler instance) {
65+
@WrapOperation(method = "refresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;getCommandDispatcher()Lcom/mojang/brigadier/CommandDispatcher;"))
66+
private CommandDispatcher<CommandSource> wrapRefresh(ClientPlayNetworkHandler instance, Operation<CommandDispatcher<CommandSource>> original) {
6667
return CommandManager.INSTANCE.currentDispatcher(textField.getText());
6768
}
6869

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

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,24 @@
1818
package com.lambda.mixin.render;
1919

2020
import com.lambda.module.modules.render.NoRender;
21+
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
22+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2123
import net.minecraft.client.MinecraftClient;
2224
import net.minecraft.client.gui.hud.InGameOverlayRenderer;
2325
import net.minecraft.client.render.VertexConsumerProvider;
2426
import net.minecraft.client.texture.Sprite;
2527
import net.minecraft.client.util.math.MatrixStack;
2628
import org.spongepowered.asm.mixin.Mixin;
2729
import org.spongepowered.asm.mixin.injection.At;
28-
import org.spongepowered.asm.mixin.injection.Inject;
2930
import org.spongepowered.asm.mixin.injection.ModifyArg;
30-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3131

3232
@Mixin(InGameOverlayRenderer.class)
3333
public class InGameOverlayRendererMixin {
34-
@Inject(method = "renderFireOverlay", at = @At("HEAD"), cancellable = true)
35-
private static void onRenderFireOverlay(MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) {
36-
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoFireOverlay()) ci.cancel();
34+
@WrapMethod(method = "renderFireOverlay")
35+
private static void wrapRenderFireOverlay(MatrixStack matrices, VertexConsumerProvider vertexConsumers, Operation<Void> original) {
36+
if (!(NoRender.INSTANCE.isEnabled() && NoRender.getNoFireOverlay())) {
37+
original.call(matrices, vertexConsumers);
38+
}
3739
}
3840

3941
@ModifyArg(method = "renderFireOverlay", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;translate(FFF)V"), index = 1)
@@ -45,13 +47,17 @@ private static float onRenderFireOverlayTranslate(float x) {
4547
}
4648
}
4749

48-
@Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true)
49-
private static void onRenderUnderwaterOverlay(MinecraftClient client, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) {
50-
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoFluidOverlay()) ci.cancel();
50+
@WrapMethod(method = "renderUnderwaterOverlay")
51+
private static void wrapRenderUnderwaterOverlay(MinecraftClient client, MatrixStack matrices, VertexConsumerProvider vertexConsumers, Operation<Void> original) {
52+
if (!(NoRender.INSTANCE.isEnabled() && NoRender.getNoFluidOverlay())) {
53+
original.call(client, matrices, vertexConsumers);
54+
}
5155
}
5256

53-
@Inject(method = "renderInWallOverlay", at = @At("HEAD"), cancellable = true)
54-
private static void onRenderInWallOverlay(Sprite sprite, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) {
55-
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoInWall()) ci.cancel();
57+
@WrapMethod(method = "renderInWallOverlay")
58+
private static void wrapRenderInWallOverlay(Sprite sprite, MatrixStack matrices, VertexConsumerProvider vertexConsumers, Operation<Void> original) {
59+
if (!(NoRender.INSTANCE.isEnabled() && NoRender.getNoInWall())) {
60+
original.call(sprite, matrices, vertexConsumers);
61+
}
5662
}
5763
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.lambda.module.modules.render.Fullbright;
2121
import com.lambda.module.modules.render.NoRender;
2222
import com.lambda.module.modules.render.XRay;
23+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2324
import com.mojang.blaze3d.systems.RenderSystem;
2425
import com.mojang.blaze3d.textures.GpuTexture;
2526
import net.minecraft.client.render.LightmapTextureManager;
@@ -31,7 +32,6 @@
3132
import org.spongepowered.asm.mixin.injection.At;
3233
import org.spongepowered.asm.mixin.injection.Inject;
3334
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
34-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
3535

3636
import java.util.OptionalInt;
3737

@@ -46,8 +46,9 @@ private void injectUpdate(CallbackInfo ci) {
4646
}
4747
}
4848

49-
@Inject(method = "getDarkness", at = @At("HEAD"), cancellable = true)
50-
private void getDarknessFactor(LivingEntity entity, float factor, float tickProgress, CallbackInfoReturnable<Float> cir) {
51-
if (NoRender.getNoDarkness() && NoRender.INSTANCE.isEnabled()) cir.setReturnValue(0.0f);
49+
@ModifyReturnValue(method = "getDarkness", at = @At("RETURN"))
50+
private float modifyGetDarkness(float original) {
51+
if (NoRender.getNoDarkness() && NoRender.INSTANCE.isEnabled()) return 0.0f;
52+
return original;
5253
}
5354
}

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@
2323
import net.minecraft.resource.ResourceFactory;
2424
import net.minecraft.util.Identifier;
2525
import net.minecraft.util.math.ColorHelper;
26+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
27+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2628
import org.spongepowered.asm.mixin.Final;
2729
import org.spongepowered.asm.mixin.Mixin;
2830
import org.spongepowered.asm.mixin.Mutable;
2931
import org.spongepowered.asm.mixin.Shadow;
3032
import org.spongepowered.asm.mixin.injection.At;
3133
import org.spongepowered.asm.mixin.injection.Inject;
32-
import org.spongepowered.asm.mixin.injection.Redirect;
3334
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3435

3536
import java.io.InputStream;
@@ -47,8 +48,8 @@ private void onInit(CallbackInfo ci) {
4748
LOGO = Identifier.of("lambda", "textures/lambda_banner.png");
4849
}
4950

50-
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Ljava/util/function/IntSupplier;getAsInt()I"))
51-
private int redirectBrandArgb(IntSupplier originalSupplier) {
51+
@WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Ljava/util/function/IntSupplier;getAsInt()I"))
52+
private int wrapBrandArgb(IntSupplier originalSupplier, Operation<Integer> original) {
5253
return ColorHelper.getArgb(255, 35, 35, 35);
5354
}
5455

@@ -58,8 +59,8 @@ public LogoTextureMixin(Identifier location) {
5859
super(location);
5960
}
6061

61-
@Redirect(method = "loadContents", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourceFactory;open(Lnet/minecraft/util/Identifier;)Ljava/io/InputStream;"))
62-
InputStream loadTextureData(ResourceFactory instance, Identifier id) {
62+
@WrapOperation(method = "loadContents", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourceFactory;open(Lnet/minecraft/util/Identifier;)Ljava/io/InputStream;"))
63+
InputStream wrapLoadTextureData(ResourceFactory instance, Identifier id, Operation<InputStream> original) {
6364
return LambdaResourceKt.getStream("textures/lambda_banner.png");
6465
}
6566
}

src/main/java/com/lambda/mixin/world/AbstractBlockMixin.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,19 @@
1818
package com.lambda.mixin.world;
1919

2020
import com.lambda.module.modules.render.XRay;
21+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2122
import net.minecraft.block.AbstractBlock;
2223
import net.minecraft.block.BlockState;
2324
import net.minecraft.util.math.BlockPos;
2425
import net.minecraft.world.BlockView;
2526
import org.spongepowered.asm.mixin.Mixin;
2627
import org.spongepowered.asm.mixin.injection.At;
27-
import org.spongepowered.asm.mixin.injection.Inject;
28-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2928

3029
@Mixin(AbstractBlock.class)
3130
public class AbstractBlockMixin {
32-
@Inject(method = "getAmbientOcclusionLightLevel", at = @At("HEAD"), cancellable = true)
33-
private void injectGetAmbientOcclusionLightLevel(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable<Float> cir) {
34-
if (XRay.INSTANCE.isEnabled()) cir.setReturnValue(1f);
31+
@ModifyReturnValue(method = "getAmbientOcclusionLightLevel", at = @At("RETURN"))
32+
private float modifyGetAmbientOcclusionLightLevel(float original) {
33+
if (XRay.INSTANCE.isEnabled()) return 1f;
34+
return original;
3535
}
3636
}

src/main/java/com/lambda/mixin/world/BlockCollisionSpliteratorMixin.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,18 @@
2424
import net.minecraft.block.ShapeContext;
2525
import net.minecraft.util.math.BlockPos;
2626
import net.minecraft.util.shape.VoxelShape;
27+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
28+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2729
import net.minecraft.world.BlockCollisionSpliterator;
2830
import net.minecraft.world.CollisionView;
2931
import org.spongepowered.asm.mixin.Mixin;
3032
import org.spongepowered.asm.mixin.injection.At;
31-
import org.spongepowered.asm.mixin.injection.Redirect;
3233

3334
@Mixin(BlockCollisionSpliterator.class)
3435
public abstract class BlockCollisionSpliteratorMixin<T extends AbstractIterator<T>> {
35-
@Redirect(method = "computeNext", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/ShapeContext;getCollisionShape(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/CollisionView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/shape/VoxelShape;"))
36-
private VoxelShape collisionShapeRedirect(ShapeContext instance, BlockState blockState, CollisionView collisionView, BlockPos blockPos) {
37-
VoxelShape collisionShape = instance.getCollisionShape(blockState, collisionView, blockPos);
36+
@WrapOperation(method = "computeNext", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/ShapeContext;getCollisionShape(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/CollisionView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/shape/VoxelShape;"))
37+
private VoxelShape wrapCollisionShape(ShapeContext instance, BlockState blockState, CollisionView collisionView, BlockPos blockPos, Operation<VoxelShape> original) {
38+
VoxelShape collisionShape = original.call(instance, blockState, collisionView, blockPos);
3839
WorldEvent.Collision event = EventFlow.post(new WorldEvent.Collision(blockPos, blockState, collisionShape));
3940
return event.getShape();
4041
}

0 commit comments

Comments
 (0)