descend lookback is pretty much fixed

This commit is contained in:
Leijurv
2018-08-06 19:30:12 -07:00
parent 70dfb40e5f
commit 1d0c71d2b8
2 changed files with 31 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
package baritone.bot.pathing.movement.movements; package baritone.bot.pathing.movement.movements;
import baritone.bot.InputOverrideHandler;
import baritone.bot.pathing.movement.Movement; import baritone.bot.pathing.movement.Movement;
import baritone.bot.pathing.movement.MovementHelper; import baritone.bot.pathing.movement.MovementHelper;
import baritone.bot.pathing.movement.MovementState; import baritone.bot.pathing.movement.MovementState;
@@ -46,7 +47,21 @@ public class MovementDescend extends Movement {
state.setStatus(MovementStatus.SUCCESS); state.setStatus(MovementStatus.SUCCESS);
return state; return state;
} }
moveTowards(positionsToBreak[1]); double diffX = player().posX - (dest.getX() + 0.5);
double diffZ = player().posZ - (dest.getZ() + 0.5);
double ab = Math.sqrt(diffX * diffX + diffZ * diffZ);
if (!playerFeet.equals(dest) || ab > 0.3) {
BlockPos fakeDest = new BlockPos(dest.getX() * 2 - src.getX(), dest.getY(), dest.getZ() * 2 - src.getZ());
double diffX2 = player().posX - (fakeDest.getX() + 0.5);
double diffZ2 = player().posZ - (fakeDest.getZ() + 0.5);
double d = Math.sqrt(diffX2 * diffX2 + diffZ2 * diffZ2);
if (d > ab)
moveTowards(fakeDest);
else {
state.setInput(InputOverrideHandler.Input.MOVE_FORWARD, false);
state.setInput(InputOverrideHandler.Input.MOVE_BACK, true);
}
}
return state; return state;
default: default:
return state; return state;

View File

@@ -25,7 +25,7 @@ public class MovementFall extends Movement {
int diffX = src.getX() - dest.getX(); int diffX = src.getX() - dest.getX();
int diffZ = src.getZ() - dest.getZ(); int diffZ = src.getZ() - dest.getZ();
int diffY = src.getY() - dest.getY(); int diffY = src.getY() - dest.getY();
toBreak = new BlockPos[diffY + 1]; toBreak = new BlockPos[diffY + 2];
for (int i = 0; i < toBreak.length; i++) { for (int i = 0; i < toBreak.length; i++) {
toBreak[i] = new BlockPos(src.getX() - diffX, src.getY() + 1 - i, src.getZ() - diffZ); toBreak[i] = new BlockPos(src.getX() - diffX, src.getY() + 1 - i, src.getZ() - diffZ);
} }
@@ -46,12 +46,17 @@ public class MovementFall extends Movement {
if (!BlockStateInterface.isWater(dest) && src.getY() - dest.getY() > 3) { if (!BlockStateInterface.isWater(dest) && src.getY() - dest.getY() > 3) {
placeBucketCost = ActionCosts.PLACE_ONE_BLOCK_COST; placeBucketCost = ActionCosts.PLACE_ONE_BLOCK_COST;
} }
return WALK_OFF_BLOCK_COST + FALL_N_BLOCKS_COST[positionsToBreak.length - 1] + getTotalHardnessOfBlocksToBreak(ts) + placeBucketCost; double cost = getTotalHardnessOfBlocksToBreak(ts);
if (cost != 0) {
return COST_INF;
}
return WALK_OFF_BLOCK_COST + FALL_N_BLOCKS_COST[positionsToBreak.length - 1] + cost + placeBucketCost;
} }
@Override @Override
public MovementState updateState(MovementState state) { public MovementState updateState(MovementState state) {
super.updateState(state); super.updateState(state);
switch (state.getStatus()) { switch (state.getStatus()) {
case PREPPING: case PREPPING:
case UNREACHABLE: case UNREACHABLE: