diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index 11a88ad1..ce730b00 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -30,7 +30,6 @@ import net.minecraft.block.BlockLadder; import net.minecraft.block.BlockVine; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.Vec3d; import java.util.ArrayList; import java.util.Arrays; @@ -53,23 +52,23 @@ public abstract class Movement implements Helper, MovementHelper { protected final BlockPos[] positionsToBreak; /** - * The positions where we need to place a block before this movement can ensue + * The position where we need to place a block before this movement can ensue */ - protected final BlockPos[] positionsToPlace; + protected final BlockPos positionToPlace; private boolean didBreakLastTick; private Double cost; - protected Movement(BlockPos src, BlockPos dest, BlockPos[] toBreak, BlockPos[] toPlace) { + protected Movement(BlockPos src, BlockPos dest, BlockPos[] toBreak, BlockPos toPlace) { this.src = src; this.dest = dest; this.positionsToBreak = toBreak; - this.positionsToPlace = toPlace; + this.positionToPlace = toPlace; } - protected Movement(BlockPos src, BlockPos dest, BlockPos[] toBreak, BlockPos[] toPlace, Vec3d rotationTarget) { - this(src, dest, toBreak, toPlace); + protected Movement(BlockPos src, BlockPos dest, BlockPos[] toBreak) { + this(src, dest, toBreak, null); } public double getCost(CalculationContext context) { @@ -310,10 +309,8 @@ public abstract class Movement implements Helper, MovementHelper { return toPlaceCached; } List result = new ArrayList<>(); - for (BlockPos positionToBreak : positionsToPlace) { - if (!MovementHelper.canWalkOn(positionToBreak)) { - result.add(positionToBreak); - } + if (positionToPlace != null && !MovementHelper.canWalkOn(positionToPlace)) { + result.add(positionToPlace); } toPlaceCached = result; return result; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index f3225337..dc4476f3 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -43,9 +43,9 @@ public class MovementAscend extends Movement { private int ticksWithoutPlacement = 0; public MovementAscend(BlockPos src, BlockPos dest) { - super(src, dest, new BlockPos[]{dest, src.up(2), dest.up()}, new BlockPos[]{dest.down()}); + super(src, dest, new BlockPos[]{dest, src.up(2), dest.up()}, dest.down()); - BlockPos placementLocation = positionsToPlace[0]; // dest.down() + BlockPos placementLocation = positionToPlace; // dest.down() int i = 0; if (!placementLocation.north().equals(src)) against[i++] = placementLocation.north(); @@ -72,12 +72,12 @@ public class MovementAscend extends Movement { @Override protected double calculateCost(CalculationContext context) { - IBlockState toPlace = BlockStateInterface.get(positionsToPlace[0]); - if (!MovementHelper.canWalkOn(positionsToPlace[0], toPlace)) { + IBlockState toPlace = BlockStateInterface.get(positionToPlace); + if (!MovementHelper.canWalkOn(positionToPlace, toPlace)) { if (!context.hasThrowaway()) { return COST_INF; } - if (!BlockStateInterface.isAir(toPlace) && !BlockStateInterface.isWater(toPlace.getBlock()) && !MovementHelper.isReplacable(positionsToPlace[0], toPlace)) { + if (!BlockStateInterface.isAir(toPlace) && !BlockStateInterface.isWater(toPlace.getBlock()) && !MovementHelper.isReplacable(positionToPlace, toPlace)) { return COST_INF; } for (BlockPos against1 : against) { @@ -135,7 +135,7 @@ public class MovementAscend extends Movement { return state.setStatus(MovementStatus.SUCCESS); } - if (!MovementHelper.canWalkOn(positionsToPlace[0])) { + if (!MovementHelper.canWalkOn(positionToPlace)) { for (BlockPos anAgainst : against) { if (BlockStateInterface.get(anAgainst).isBlockNormalCube()) { if (!MovementHelper.throwaway(true)) {//get ready to place a throwaway block @@ -148,7 +148,7 @@ public class MovementAscend extends Movement { EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit; LookBehaviorUtils.getSelectedBlock().ifPresent(selectedBlock -> { - if (Objects.equals(selectedBlock, anAgainst) && selectedBlock.offset(side).equals(positionsToPlace[0])) { + if (Objects.equals(selectedBlock, anAgainst) && selectedBlock.offset(side).equals(positionToPlace)) { ticksWithoutPlacement++; state.setInput(InputOverrideHandler.Input.SNEAK, true); if (player().isSneaking()) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index 6e299bd1..7a07abb1 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -33,7 +33,7 @@ import net.minecraft.util.math.BlockPos; public class MovementDescend extends Movement { public MovementDescend(BlockPos start, BlockPos end) { - super(start, end, new BlockPos[]{end.up(2), end.up(), end}, new BlockPos[]{end.down()}); + super(start, end, new BlockPos[]{end.up(2), end.up(), end}, end.down()); } @Override @@ -44,7 +44,7 @@ public class MovementDescend extends Movement { @Override protected double calculateCost(CalculationContext context) { - if (!MovementHelper.canWalkOn(positionsToPlace[0])) { + if (!MovementHelper.canWalkOn(positionToPlace)) { return COST_INF; } Block tmp1 = BlockStateInterface.get(dest).getBlock(); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index d3c5b622..384cf6be 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -46,7 +46,7 @@ public class MovementDiagonal extends Movement { } public MovementDiagonal(BlockPos start, BlockPos end, BlockPos dir1, BlockPos dir2) { - super(start, end, new BlockPos[]{dir1, dir1.up(), dir2, dir2.up(), end, end.up()}, new BlockPos[]{end.down()}); + super(start, end, new BlockPos[]{dir1, dir1.up(), dir2, dir2.up(), end, end.up()}); } @Override @@ -77,8 +77,9 @@ public class MovementDiagonal extends Movement { if (!MovementHelper.canWalkThrough(positionsToBreak[4]) || !MovementHelper.canWalkThrough(positionsToBreak[5])) { return COST_INF; } - IBlockState destWalkOn = BlockStateInterface.get(positionsToPlace[0]); - if (!MovementHelper.canWalkOn(positionsToPlace[0], destWalkOn)) { + BlockPos destDown = dest.down(); + IBlockState destWalkOn = BlockStateInterface.get(destDown); + if (!MovementHelper.canWalkOn(destDown, destWalkOn)) { return COST_INF; } double multiplier = WALK_ONE_BLOCK_COST; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDownward.java b/src/main/java/baritone/pathing/movement/movements/MovementDownward.java index 38232396..ece2c8f5 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDownward.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDownward.java @@ -33,7 +33,7 @@ public class MovementDownward extends Movement { private int numTicks = 0; public MovementDownward(BlockPos start, BlockPos end) { - super(start, end, new BlockPos[]{end}, new BlockPos[0]); + super(start, end, new BlockPos[]{end}); } @Override diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index c42a8661..ee019c98 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -38,12 +38,12 @@ public class MovementFall extends Movement { private static final ItemStack STACK_BUCKET_EMPTY = new ItemStack(Items.BUCKET); public MovementFall(BlockPos src, BlockPos dest) { - super(src, dest, MovementFall.buildPositionsToBreak(src, dest), new BlockPos[]{dest.down()}); + super(src, dest, MovementFall.buildPositionsToBreak(src, dest)); } @Override protected double calculateCost(CalculationContext context) { - if (!MovementHelper.canWalkOn(positionsToPlace[0])) { + if (!MovementHelper.canWalkOn(dest.down())) { return COST_INF; } double placeBucketCost = 0.0; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index 9da13b2c..d7ff3016 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -34,7 +34,7 @@ public class MovementPillar extends Movement { private int numTicks = 0; public MovementPillar(BlockPos start, BlockPos end) { - super(start, end, new BlockPos[]{start.up(2)}, new BlockPos[]{start}); + super(start, end, new BlockPos[]{start.up(2)}, start); } @Override @@ -130,7 +130,7 @@ public class MovementPillar extends Movement { boolean vine = fromDown.getBlock() instanceof BlockVine; if (!ladder) { state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), - Utils.getBlockPosCenter(positionsToPlace[0]), + Utils.getBlockPosCenter(positionToPlace), new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)), true)); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index 54e61359..6d09dee8 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -45,7 +45,7 @@ public class MovementTraverse extends Movement { private boolean wasTheBridgeBlockAlwaysThere = true; public MovementTraverse(BlockPos from, BlockPos to) { - super(from, to, new BlockPos[]{to.up(), to}, new BlockPos[]{to.down()}); + super(from, to, new BlockPos[]{to.up(), to}, to.down()); int i = 0; if (!to.north().equals(from)) @@ -73,8 +73,8 @@ public class MovementTraverse extends Movement { protected double calculateCost(CalculationContext context) { IBlockState pb0 = BlockStateInterface.get(positionsToBreak[0]); IBlockState pb1 = BlockStateInterface.get(positionsToBreak[1]); - IBlockState destOn = BlockStateInterface.get(positionsToPlace[0]); - if (MovementHelper.canWalkOn(positionsToPlace[0], destOn)) {//this is a walk, not a bridge + IBlockState destOn = BlockStateInterface.get(positionToPlace); + if (MovementHelper.canWalkOn(positionToPlace, destOn)) {//this is a walk, not a bridge double WC = WALK_ONE_BLOCK_COST; if (BlockStateInterface.isWater(pb0.getBlock()) || BlockStateInterface.isWater(pb1.getBlock())) { WC = WALK_ONE_IN_WATER_COST; @@ -105,7 +105,7 @@ public class MovementTraverse extends Movement { if (srcDown instanceof BlockLadder || srcDown instanceof BlockVine) { return COST_INF; } - if (destOn.getBlock().equals(Blocks.AIR) || MovementHelper.isReplacable(positionsToPlace[0], destOn)) { + if (destOn.getBlock().equals(Blocks.AIR) || MovementHelper.isReplacable(positionToPlace, destOn)) { boolean throughWater = BlockStateInterface.isWater(pb0.getBlock()) || BlockStateInterface.isWater(pb1.getBlock()); if (BlockStateInterface.isWater(destOn.getBlock()) && throughWater) { return COST_INF; @@ -179,7 +179,7 @@ public class MovementTraverse extends Movement { } } - boolean isTheBridgeBlockThere = MovementHelper.canWalkOn(positionsToPlace[0]) || ladder; + boolean isTheBridgeBlockThere = MovementHelper.canWalkOn(positionToPlace) || ladder; BlockPos whereAmI = playerFeet(); if (whereAmI.getY() != dest.getY() && !ladder) { displayChatMessageRaw("Wrong Y coordinate"); @@ -220,7 +220,7 @@ public class MovementTraverse extends Movement { EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit; if (Objects.equals(LookBehaviorUtils.getSelectedBlock().orElse(null), against1) && Minecraft.getMinecraft().player.isSneaking()) { - if (LookBehaviorUtils.getSelectedBlock().get().offset(side).equals(positionsToPlace[0])) { + if (LookBehaviorUtils.getSelectedBlock().get().offset(side).equals(positionToPlace)) { return state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); } else { // Out.gui("Wrong. " + side + " " + LookBehaviorUtils.getSelectedBlock().get().offset(side) + " " + positionsToPlace[0], Out.Mode.Debug);