From 843bc1777765852f6e87a789ba1fcc04a2fbd37c Mon Sep 17 00:00:00 2001 From: Brady Date: Tue, 21 Aug 2018 17:52:09 -0500 Subject: [PATCH] Add forceRotations field to MovementState Preparation for silent moving --- .../bot/pathing/movement/Movement.java | 4 ++-- .../bot/pathing/movement/MovementHelper.java | 10 +++++---- .../bot/pathing/movement/MovementState.java | 22 ++++++++++++++----- .../movement/movements/MovementAscend.java | 2 +- .../movement/movements/MovementFall.java | 4 ++-- .../movement/movements/MovementPillar.java | 2 +- .../movement/movements/MovementTraverse.java | 6 ++--- src/main/java/baritone/bot/utils/ToolSet.java | 2 +- 8 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/baritone/bot/pathing/movement/Movement.java b/src/main/java/baritone/bot/pathing/movement/Movement.java index 84540a759..5b31c1478 100644 --- a/src/main/java/baritone/bot/pathing/movement/Movement.java +++ b/src/main/java/baritone/bot/pathing/movement/Movement.java @@ -131,7 +131,7 @@ public abstract class Movement implements Helper, MovementHelper { Optional reachable = LookBehaviorUtils.reachable(blockPos); if (reachable.isPresent()) { player().inventory.currentItem = new ToolSet().getBestSlot(BlockStateInterface.get(blockPos)); - state.setTarget(new MovementState.MovementTarget(reachable.get())).setInput(Input.CLICK_LEFT, true); + state.setTarget(new MovementState.MovementTarget(reachable.get(), true)).setInput(Input.CLICK_LEFT, true); return false; } //get rekt minecraft @@ -139,7 +139,7 @@ public abstract class Movement implements Helper, MovementHelper { //i dont care if theres snow in the way!!!!!!! //you dont own me!!!! state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), - Utils.getBlockPosCenter(blockPos))) + Utils.getBlockPosCenter(blockPos)), true) ).setInput(InputOverrideHandler.Input.CLICK_LEFT, true); return false; } diff --git a/src/main/java/baritone/bot/pathing/movement/MovementHelper.java b/src/main/java/baritone/bot/pathing/movement/MovementHelper.java index aef088e17..7e84a1cd1 100644 --- a/src/main/java/baritone/bot/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/bot/pathing/movement/MovementHelper.java @@ -255,10 +255,12 @@ public interface MovementHelper extends ActionCosts, Helper { } static void moveTowards(MovementState state, BlockPos pos) { - state.setTarget(new MovementTarget(new Rotation(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), - Utils.getBlockPosCenter(pos), - new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)).getFirst(), mc.player.rotationPitch)) - ).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true); + state.setTarget(new MovementTarget( + new Rotation(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), + Utils.getBlockPosCenter(pos), + new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)).getFirst(), mc.player.rotationPitch), + false + )).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true); } static Movement generateMovementFallOrDescend(BlockPos pos, BlockPos dest, CalculationContext calcContext) { diff --git a/src/main/java/baritone/bot/pathing/movement/MovementState.java b/src/main/java/baritone/bot/pathing/movement/MovementState.java index efc56c085..2d2d34970 100644 --- a/src/main/java/baritone/bot/pathing/movement/MovementState.java +++ b/src/main/java/baritone/bot/pathing/movement/MovementState.java @@ -93,21 +93,29 @@ public class MovementState { */ public Rotation rotation; + /** + * Whether or not this target must force rotations. + *

+ * {@code true} if we're trying to place or break blocks, {@code false} if we're trying to look at the movement location + */ + private boolean forceRotations; + public MovementTarget() { - this(null, null); + this(null, null, false); } public MovementTarget(Vec3d position) { - this(position, null); + this(position, null, false); } - public MovementTarget(Rotation rotation) { - this(null, rotation); + public MovementTarget(Rotation rotation, boolean forceRotations) { + this(null, rotation, forceRotations); } - public MovementTarget(Vec3d position, Rotation rotation) { + public MovementTarget(Vec3d position, Rotation rotation, boolean forceRotations) { this.position = position; this.rotation = rotation; + this.forceRotations = forceRotations; } public final Optional getPosition() { @@ -117,5 +125,9 @@ public class MovementState { public final Optional getRotation() { return Optional.ofNullable(this.rotation); } + + public boolean hasToForceRotations() { + return this.forceRotations; + } } } diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java index 5fc408aa3..5f180fdfd 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java @@ -139,7 +139,7 @@ public class MovementAscend extends Movement { double faceX = (dest.getX() + anAgainst.getX() + 1.0D) * 0.5D; double faceY = (dest.getY() + anAgainst.getY()) * 0.5D; double faceZ = (dest.getZ() + anAgainst.getZ() + 1.0D) * 0.5D; - state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()))); + state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()), true)); EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit; if (Objects.equals(LookBehaviorUtils.getSelectedBlock().orElse(null), anAgainst) && LookBehaviorUtils.getSelectedBlock().get().offset(side).equals(positionsToPlace[0])) { ticksWithoutPlacement++; diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java index fe7dde7be..d8c055fc4 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementFall.java @@ -101,9 +101,9 @@ public class MovementFall extends Movement { } if (targetRotation.isPresent()) { state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true) - .setTarget(new MovementTarget(targetRotation.get())); + .setTarget(new MovementTarget(targetRotation.get(), true)); } else { - state.setTarget(new MovementTarget(Utils.calcRotationFromVec3d(playerHead(), Utils.getBlockPosCenter(dest)))); + state.setTarget(new MovementTarget(Utils.calcRotationFromVec3d(playerHead(), Utils.getBlockPosCenter(dest)), true)); } if (playerFeet.equals(dest) && (player().posY - playerFeet.getY() < 0.094 // lilypads || BlockStateInterface.isWater(dest))) { diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementPillar.java index bcc23fdc3..9c1cd8855 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementPillar.java @@ -115,7 +115,7 @@ public class MovementPillar extends Movement { if (!ladder) { state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), Utils.getBlockPosCenter(positionsToPlace[0]), - new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)))); + new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)), true)); } EntityPlayerSP thePlayer = Minecraft.getMinecraft().player; boolean blockIsThere = MovementHelper.canWalkOn(src) || ladder; diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java index 2ca979950..4b5d8f1cb 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java @@ -148,7 +148,7 @@ public class MovementTraverse extends Movement { } if (isDoorActuallyBlockingUs) { if (!(Blocks.IRON_DOOR.equals(srcBlock) || Blocks.IRON_DOOR.equals(pb0.getBlock()) || Blocks.IRON_DOOR.equals(pb1.getBlock()))) { - state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(positionsToBreak[0], world())))); + state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(positionsToBreak[0], world())), true)); state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); return state; } @@ -190,7 +190,7 @@ public class MovementTraverse extends Movement { double faceX = (dest.getX() + against1.getX() + 1.0D) * 0.5D; double faceY = (dest.getY() + against1.getY()) * 0.5D; double faceZ = (dest.getZ() + against1.getZ() + 1.0D) * 0.5D; - state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()))); + state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()), true)); EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit; if (Objects.equals(LookBehaviorUtils.getSelectedBlock().orElse(null), against1) && Minecraft.getMinecraft().player.isSneaking()) { @@ -217,7 +217,7 @@ public class MovementTraverse extends Movement { double faceZ = (dest.getZ() + src.getZ() + 1.0D) * 0.5D; // faceX, faceY, faceZ is the middle of the face between from and to BlockPos goalLook = src.down(); // this is the block we were just standing on, and the one we want to place against - state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()))); + state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()), true)); state.setInput(InputOverrideHandler.Input.MOVE_BACK, true); state.setInput(InputOverrideHandler.Input.SNEAK, true); diff --git a/src/main/java/baritone/bot/utils/ToolSet.java b/src/main/java/baritone/bot/utils/ToolSet.java index 935e157f4..d75c3c037 100644 --- a/src/main/java/baritone/bot/utils/ToolSet.java +++ b/src/main/java/baritone/bot/utils/ToolSet.java @@ -164,7 +164,7 @@ public class ToolSet implements Helper { event.setSlot(this.overrideSlot); } - public final void setOverrideSlot(int overrideSlot) { + final void setOverrideSlot(int overrideSlot) { this.overrideSlot = overrideSlot; } }