Skip to content

Commit 530b98b

Browse files
authored
Ref: Mixin cleanup (#228)
This pull request cleans up the mixins and replaces some mixins with less intrusive ones. It also fixes a bug that was introduced last month regarding the NoRender darkness and blindcheck checks.
1 parent 2b983fb commit 530b98b

32 files changed

+109
-251
lines changed

src/main/java/com/lambda/mixin/baritone/BaritonePlayerContextMixin.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@
2222
import baritone.utils.player.BaritonePlayerContext;
2323
import com.lambda.interaction.BaritoneManager;
2424
import com.lambda.interaction.managers.rotating.RotationManager;
25+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2526
import org.spongepowered.asm.mixin.Final;
2627
import org.spongepowered.asm.mixin.Mixin;
2728
import org.spongepowered.asm.mixin.Shadow;
2829
import org.spongepowered.asm.mixin.injection.At;
29-
import org.spongepowered.asm.mixin.injection.Inject;
30-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
3130

3231
@Mixin(value = BaritonePlayerContext.class, remap = false) // fix compileJava warning
3332
public class BaritonePlayerContextMixin {
@@ -36,13 +35,11 @@ public class BaritonePlayerContextMixin {
3635
private Baritone baritone;
3736

3837
// Let baritone know the actual rotation
39-
@Inject(method = "playerRotations", at = @At("HEAD"), cancellable = true, remap = false)
40-
void syncRotationWithBaritone(CallbackInfoReturnable<Rotation> cir) {
41-
if (baritone != BaritoneManager.getPrimary()) return;
38+
@ModifyReturnValue(method = "playerRotations", at = @At("RETURN"), remap = false)
39+
Rotation syncRotationWithBaritone(Rotation original) {
40+
if (baritone != BaritoneManager.getPrimary())
41+
return original;
4242

43-
RotationManager rm = RotationManager.INSTANCE;
44-
cir.setReturnValue(new Rotation(
45-
(float) rm.getActiveRotation().getYaw(), (float) rm.getActiveRotation().getPitch())
46-
);
43+
return new Rotation((float) RotationManager.getActiveRotation().getYaw(), (float) RotationManager.getActiveRotation().getPitch());
4744
}
4845
}

src/main/java/com/lambda/mixin/client/sound/SoundSystemMixin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.spongepowered.asm.mixin.Mixin;
2525
import org.spongepowered.asm.mixin.injection.At;
2626
import org.spongepowered.asm.mixin.injection.Inject;
27-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2827
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2928

3029
@Mixin(SoundSystem.class)

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.llamalad7.mixinextras.expression.Definition;
3333
import com.llamalad7.mixinextras.expression.Expression;
3434
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
35+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
3536
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
3637
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
3738
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
@@ -46,13 +47,13 @@
4647
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
4748
import net.minecraft.util.Hand;
4849
import net.minecraft.util.math.Vec3d;
50+
import org.objectweb.asm.Opcodes;
4951
import org.spongepowered.asm.mixin.Mixin;
5052
import org.spongepowered.asm.mixin.Shadow;
5153
import org.spongepowered.asm.mixin.Unique;
5254
import org.spongepowered.asm.mixin.injection.At;
5355
import org.spongepowered.asm.mixin.injection.Inject;
5456
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
55-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
5657
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
5758

5859
import java.util.Objects;
@@ -140,13 +141,13 @@ boolean modifyIsSprinting(boolean original) {
140141
return EventFlow.post(new MovementEvent.Sprint(original)).getSprint();
141142
}
142143

143-
@Inject(method = "isSneaking", at = @At(value = "HEAD"), cancellable = true)
144-
void injectSneakingInput(CallbackInfoReturnable<Boolean> cir) {
144+
@ModifyReturnValue(method = "isSneaking", at = @At("RETURN"))
145+
boolean injectSneakingInput(boolean original) {
145146
ClientPlayerEntity self = (ClientPlayerEntity) (Object) this;
146-
if (self != Lambda.getMc().player) return;
147+
if (self != Lambda.getMc().player ||
148+
self.input == null) return original;
147149

148-
if (self.input == null) return;
149-
cir.setReturnValue(EventFlow.post(new MovementEvent.Sneak(self.input.playerInput.sneak())).getSneak());
150+
return EventFlow.post(new MovementEvent.Sneak(self.input.playerInput.sneak())).getSneak();
150151
}
151152

152153
@WrapMethod(method = "tick")
@@ -204,7 +205,7 @@ public void injectUpdateHealth(float health, CallbackInfo ci) {
204205
* }
205206
* }</pre>
206207
*/
207-
@ModifyExpressionValue(method = "tickNausea", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;"))
208+
@ModifyExpressionValue(method = "tickNausea", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", opcode = Opcodes.GETFIELD))
208209
Screen modifyCurrentScreen(Screen original) {
209210
if (PortalGui.INSTANCE.isEnabled()) return null;
210211
else return original;

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

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
import com.lambda.module.modules.render.NoRender;
2626
import com.lambda.util.math.Vec2d;
2727
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
28+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2829
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
2930
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
3031
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
31-
import net.minecraft.client.network.ClientPlayerEntity;
3232
import net.minecraft.entity.Entity;
3333
import net.minecraft.entity.EntityPose;
3434
import net.minecraft.entity.MovementType;
@@ -39,7 +39,6 @@
3939
import org.spongepowered.asm.mixin.injection.At;
4040
import org.spongepowered.asm.mixin.injection.Inject;
4141
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
42-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
4342

4443
import static com.lambda.Lambda.getMc;
4544

@@ -160,18 +159,26 @@ private boolean wrapSetPitch(Entity instance, float yaw) {
160159
return RotationManager.getLockPitch() == null;
161160
}
162161

163-
@Inject(method = "isSprinting()Z", at = @At("HEAD"), cancellable = true)
164-
private void injectIsSprinting(CallbackInfoReturnable<Boolean> cir) {
162+
@ModifyReturnValue(method = "isSprinting()Z", at = @At("RETURN"))
163+
private boolean injectIsSprinting(boolean original) {
165164
var player = getMc().player;
166-
if ((Object) this != getMc().player) return;
167-
if (ElytraFly.INSTANCE.isEnabled() && ElytraFly.getMode() == ElytraFly.FlyMode.Bounce && player.isGliding()) cir.setReturnValue(true);
165+
if ((Object) this != getMc().player) return original;
166+
167+
if (ElytraFly.INSTANCE.isEnabled() && ElytraFly.getMode() == ElytraFly.FlyMode.Bounce && player.isGliding())
168+
return true;
169+
170+
return original;
168171
}
169172

170-
@Inject(method = "getPose", at = @At("HEAD"), cancellable = true)
171-
private void injectGetPose(CallbackInfoReturnable<EntityPose> cir) {
172-
var entity = (Entity) (Object) this;
173-
if (!(entity instanceof ClientPlayerEntity player)) return;
174-
if (ElytraFly.INSTANCE.isEnabled() && ElytraFly.getMode() == ElytraFly.FlyMode.Bounce && player.isGliding()) cir.setReturnValue(EntityPose.GLIDING);
173+
@ModifyReturnValue(method = "getPose", at = @At("RETURN"))
174+
private EntityPose injectGetPose(EntityPose original) {
175+
var player = getMc().player;
176+
if ((Object) this != getMc().player) return original;
177+
178+
if (ElytraFly.INSTANCE.isDisabled() ||
179+
ElytraFly.getMode() != ElytraFly.FlyMode.Bounce || !player.isGliding()) return original;
180+
181+
return EntityPose.GLIDING;
175182
}
176183

177184
@ModifyExpressionValue(method = "getHorizontalFacing", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getYaw()F"))

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.lambda.module.modules.movement.ElytraFly;
2525
import com.lambda.module.modules.movement.Velocity;
2626
import com.lambda.module.modules.render.ViewModel;
27+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
2728
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
2829
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2930
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
@@ -38,7 +39,6 @@
3839
import org.spongepowered.asm.mixin.injection.Inject;
3940
import org.spongepowered.asm.mixin.injection.Slice;
4041
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
41-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
4242

4343
@Mixin(LivingEntity.class)
4444
public abstract class LivingEntityMixin extends EntityMixin {
@@ -185,9 +185,11 @@ private void wrapPushAwayFrom(Entity entity, Operation<Void> original) {
185185
original.call(entity);
186186
}
187187

188-
@Inject(method = "isGliding", at = @At("HEAD"), cancellable = true)
189-
private void injectIsGliding(CallbackInfoReturnable<Boolean> cir) {
190-
if (lambda$instance != Lambda.getMc().player) return;
191-
cir.setReturnValue(ElytraFly.isGliding());
188+
@SuppressWarnings("ConstantConditions")
189+
@ModifyReturnValue(method = "isGliding", at = @At("RETURN"))
190+
private boolean injectIsGliding(boolean original) {
191+
if (lambda$instance != Lambda.getMc().player) return original;
192+
193+
return ElytraFly.isGliding();
192194
}
193195
}

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,4 @@ private float wrapHeadYaw(PlayerEntity instance, Operation<Float> original) {
4646
Float yaw = RotationManager.getHeadYaw();
4747
return (yaw != null) ? yaw : original.call(instance);
4848
}
49-
50-
// @WrapOperation(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getYaw()F"))
51-
// private float wrapAttackYaw(PlayerEntity instance, Operation<Float> original) {
52-
// if ((Object) this != Lambda.getMc().player) {
53-
// return original.call(instance);
54-
// }
55-
//
56-
// Float yaw = RotationManager.getMovementYaw();
57-
// return (yaw != null) ? yaw : original.call(instance);
58-
// }
5949
}

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,13 @@
2828
import net.minecraft.client.option.KeyBinding;
2929
import net.minecraft.client.util.InputUtil;
3030
import org.spongepowered.asm.mixin.Mixin;
31-
import org.spongepowered.asm.mixin.injection.At;
32-
import org.spongepowered.asm.mixin.injection.Inject;
33-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3431

35-
/**
36-
* Mixin to intercept keyboard input events.
37-
*
38-
* Note: In 1.21.11, onKey/onChar methods were refactored to use KeyInput/CharInput records.
39-
* - onKey(long window, int action, KeyInput input) where KeyInput has key, scancode, modifiers
40-
* - onChar(long window, CharInput input) where CharInput has codepoint, modifiers
41-
*/
4232
@Mixin(Keyboard.class)
4333
public class KeyboardMixin {
4434
@WrapMethod(method = "onKey")
4535
private void onKey(long window, int action, KeyInput input, Operation<Void> original) {
4636
EventFlow.post(new ButtonEvent.Keyboard.Press(input.key(), input.scancode(), action, input.modifiers()));
4737
original.call(window, action, input);
48-
}
49-
50-
@Inject(method = "onKey", at = @At("RETURN"))
51-
private void onKeyTail(long window, int action, KeyInput input, CallbackInfo ci) {
5238
int key = input.key();
5339
if (!InventoryMove.getShouldMove() || !InventoryMove.isKeyMovementRelated(key)) return;
5440
InputUtil.Key fromCode = InputUtil.fromKeyCode(input);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2727
import net.minecraft.client.Mouse;
2828
import net.minecraft.client.input.MouseInput;
29+
import org.objectweb.asm.Opcodes;
2930
import org.spongepowered.asm.mixin.Mixin;
3031
import org.spongepowered.asm.mixin.Shadow;
3132
import org.spongepowered.asm.mixin.injection.At;
@@ -60,7 +61,7 @@ private void onCursorPos(long window, double x, double y, Operation<Void> origin
6061
original.call(window, x, y);
6162
}
6263

63-
@ModifyExpressionValue(method = "updateMouse", at = @At(value = "FIELD", target = "Lnet/minecraft/client/option/GameOptions;smoothCameraEnabled:Z"))
64+
@ModifyExpressionValue(method = "updateMouse", at = @At(value = "FIELD", target = "Lnet/minecraft/client/option/GameOptions;smoothCameraEnabled:Z", opcode = Opcodes.GETFIELD))
6465
private boolean modifySmoothCameraEnabled(boolean original) {
6566
if (Zoom.INSTANCE.isEnabled() && Zoom.getSmoothMovement()) return true;
6667
else return original;

src/main/java/com/lambda/mixin/network/ClientConnectionMixin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.spongepowered.asm.mixin.Final;
3535
import org.spongepowered.asm.mixin.Mixin;
3636
import org.spongepowered.asm.mixin.Shadow;
37-
import org.spongepowered.asm.mixin.Unique;
3837
import org.spongepowered.asm.mixin.injection.At;
3938
import org.spongepowered.asm.mixin.injection.Inject;
4039
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

src/main/java/com/lambda/mixin/network/ClientLoginNetworkMixin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
@Mixin(ClientLoginNetworkHandler.class)
3030
public class ClientLoginNetworkMixin {
31-
3231
@Inject(method = "onSuccess(Lnet/minecraft/network/packet/s2c/login/LoginSuccessS2CPacket;)V", at = @At("HEAD"))
3332
private void onSuccess(LoginSuccessS2CPacket packet, CallbackInfo ci) {
3433
EventFlow.post(new ConnectionEvent.Connect.Post(packet.profile()));

0 commit comments

Comments
 (0)