From 9714fa4fd4aa1698d35da35913a9580ef33df79d Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Sun, 17 Aug 2025 20:04:55 -0400 Subject: [PATCH] Condense logic into huge lambda. --- .../pathing/movement/MovementHelper.java | 27 ++++--------------- .../pathing/movement/MovementOption.java | 5 ++++ 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 80e8c3d13..6d6f780da 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -52,9 +52,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import static baritone.api.utils.RotationUtils.DEG_TO_RAD_F; import static baritone.pathing.movement.Movement.HORIZONTALS_BUT_ALSO_DOWN_____SO_EVERY_DIRECTION_EXCEPT_UP; @@ -668,25 +666,10 @@ public interface MovementHelper extends ActionCosts, Helper { Rotation blockRotation = RotationUtils.calcRotationFromVec3d(ctx.playerHead(), VecUtils.getBlockPosCenter(dest), ctx.playerRotations()); - MovementOption selection = getSelection(blockRotation, ax, az); - selection.setInputs(state); - } - - private static MovementOption getSelection(Rotation blockRotation, float ax, float az) { - float targetAx = Mth.sin(blockRotation.getYaw() * DEG_TO_RAD_F); - float targetAz = Mth.cos(blockRotation.getYaw() * DEG_TO_RAD_F); - MovementOption[] options = getOptions(ax, az); - MovementOption selection = null; - float closestX = 100000; - float closestZ = 100000; - for (MovementOption option : options) { - if (Mth.abs(targetAx - option.motionX()) + Mth.abs(targetAz - option.motionZ()) < closestX + closestZ) { - closestX = Math.abs(targetAx - option.motionX()); - closestZ = Math.abs(targetAz - option.motionZ()); - selection = option; - } - } - return selection; + Arrays.stream(getOptions(ax, az)).min(Comparator.comparing(option -> option.distanceToSq( + Mth.sin(blockRotation.getYaw() * DEG_TO_RAD_F), + Mth.cos(blockRotation.getYaw() * DEG_TO_RAD_F) + ))).ifPresent(selection -> selection.setInputs(state)); } private static MovementOption[] getOptions(float ax, float az) { diff --git a/src/main/java/baritone/pathing/movement/MovementOption.java b/src/main/java/baritone/pathing/movement/MovementOption.java index 41c678c3c..a63cb0d52 100644 --- a/src/main/java/baritone/pathing/movement/MovementOption.java +++ b/src/main/java/baritone/pathing/movement/MovementOption.java @@ -18,6 +18,7 @@ package baritone.pathing.movement; import baritone.api.utils.input.Input; +import net.minecraft.util.Mth; public record MovementOption(Input input1, Input input2, float motionX, float motionZ) { @@ -33,4 +34,8 @@ public record MovementOption(Input input1, Input input2, float motionX, float mo movementState.setInput(input2, true); } } + + public float distanceToSq(float otherX, float otherZ) { + return Mth.abs(motionX() - otherX) + Mth.abs(motionZ() - otherZ); + } }