В модуле FixMovement:
EventInput.getInstance().subscribe(this, () -> {
if (RotationManager.target == null || AttackAura.target == null) return;
EventInput e = EventInput.getInstance();
float z = KeyboardInput.getMovementMultiplier(e.isForward(), e.isBackward());
float x = KeyboardInput.getMovementMultiplier(e.isLeft(), e.isRight());
if (z == 0 && x == 0) return;
float deltaYaw = MathHelper.wrapDegrees(MathHelper.wrapDegrees(mc.player.getYaw()) - MathHelper.wrapDegrees(RotationManager.currentYaw));
float radians = deltaYaw * 0.017453292519943295f;
float newX = x * MathHelper.cos(radians) - z * MathHelper.sin(radians);
float newZ = z * MathHelper.cos(radians) + x * MathHelper.sin(radians);
int movementForward = Math.round(newZ);
int movementSideways = Math.round(newX);
e.setForward(movementForward > 0);
e.setBackward(movementForward < 0);
e.setLeft(movementSideways > 0);
e.setRight(movementSideways < 0);
e.cancel();
});
Миксин в KeyboardInput:
@Mixin(KeyboardInput.class)
public class KeyboardInputMixin extends Input {
@ModifyExpressionValue(method = "tick", at = @At(value = "NEW", target = "(ZZZZZZZ)Lnet/minecraft/util/PlayerInput;"))
public PlayerInput onTick(PlayerInput original) {
EventInput eventInput = EventInput.getInstance();
eventInput.setForward(original.forward());
eventInput.setBackward(original.backward());
eventInput.setLeft(original.left());
eventInput.setRight(original.right());
eventInput.call();
if (eventInput.isCancelled()) {
PlayerInput modified = new PlayerInput(eventInput.isForward(), eventInput.isBackward(), eventInput.isLeft(), eventInput.isRight(), original.jump(), original.sneak(), original.sprint());
float f = getMovementMultiplier(modified.forward(), modified.backward());
float g = getMovementMultiplier(modified.left(), modified.right());
this.movementVector = (new Vec2f(g, f)).normalize();
return modified;
}
return original;
}
}
EventInput:
@Getter @Setter
public class EventInput extends Event {
@Getter
private static final EventInput instance = new EventInput();
boolean forward, backward, left, right;
}
Вместо того чтобы идти в ту сторону в которую шел, он идет в какую то пизду(сворачивает в сторону) и потом ач начинает флагать. ИИ помочь не смог, по этому пишу сюда