From 5f686c1c12e1abfc071fa3bda028da7a9e527183 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 20 Aug 2020 22:40:16 +0200 Subject: [PATCH 1/5] improve isSafeToCancel in MovementDiagonal even more It did not return true early enough for backfill while cornering over air --- .../movement/movements/MovementDiagonal.java | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 2631af840..1ea0591ce 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -31,6 +31,7 @@ import baritone.utils.pathing.MutableMoveResult; import com.google.common.collect.ImmutableSet; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.init.Blocks; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; @@ -58,11 +59,34 @@ public class MovementDiagonal extends Movement { @Override protected boolean safeToCancel(MovementState state) { - return ctx.playerFeet().equals(src) || (( - MovementHelper.canWalkOn(ctx, new BlockPos(src.x, src.y - 1, dest.z)) - ) && - MovementHelper.canWalkOn(ctx, new BlockPos(dest.x, src.y - 1, src.z))); - } + //too simple. backfill does not work after cornering with this + //return MovementHelper.canWalkOn(ctx, ctx.playerFeet().down()); + EntityPlayerSP player = ctx.player(); + double offset = 0.25; + double x = player.posX; + double y = player.posY - 1; + double z = player.posZ; + //standard + if (ctx.playerFeet().equals(src)){ + return true; + } + //both corners are walkable + if (MovementHelper.canWalkOn(ctx, new BlockPos(src.x, src.y - 1, dest.z)) + && MovementHelper.canWalkOn(ctx, new BlockPos(dest.x, src.y - 1, src.z))){ + return true; + } + //we are in a likely unwalkable corner, check for a supporting block + if (ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) + || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))){ + if (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z - offset)) + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z + offset)) + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))){ + return true; + } + } + return false; + } @Override public double calculateCost(CalculationContext context) { From b7d1ba1fa5187e096356c90c43c780b4481aa4d0 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 20 Aug 2020 23:11:55 +0200 Subject: [PATCH 2/5] Make Codacity happy --- .../pathing/movement/movements/MovementDiagonal.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 1ea0591ce..eaaef0a83 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -78,12 +78,11 @@ public class MovementDiagonal extends Movement { //we are in a likely unwalkable corner, check for a supporting block if (ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))){ - if (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) + && (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z - offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z + offset)) - || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))){ + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))) return true; - } } return false; } From ea35a3478f8b87a10bd440f5638961fdd455d6c5 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 20 Aug 2020 23:16:59 +0200 Subject: [PATCH 3/5] Codacity again for the same and syntax dab --- .../baritone/pathing/movement/movements/MovementDiagonal.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index eaaef0a83..3fc67e8f1 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -77,11 +77,11 @@ public class MovementDiagonal extends Movement { } //we are in a likely unwalkable corner, check for a supporting block if (ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) - || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))){ + || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))) && (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z - offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z + offset)) - || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))) + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))){ return true; } return false; From 3c691bb498395e941830b4eac381ef00abf281eb Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 20 Aug 2020 23:33:47 +0200 Subject: [PATCH 4/5] But now it's working --- .../baritone/pathing/movement/movements/MovementDiagonal.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 3fc67e8f1..2e026b877 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -76,12 +76,12 @@ public class MovementDiagonal extends Movement { return true; } //we are in a likely unwalkable corner, check for a supporting block - if (ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) + if ((ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))) && (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z - offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z + offset)) - || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))){ + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset)))){ return true; } return false; From 9636e69a6b34778f9ee5c73bef961f9409bc2542 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Mon, 24 Aug 2020 23:06:19 +0200 Subject: [PATCH 5/5] slightly better condition --- .../pathing/movement/movements/MovementDiagonal.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 2e026b877..b5ea19a9c 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -76,15 +76,14 @@ public class MovementDiagonal extends Movement { return true; } //we are in a likely unwalkable corner, check for a supporting block - if ((ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) - || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))) - && (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) + if (ctx.playerFeet().equals(new BetterBlockPos(src.x, src.y, dest.z)) + || ctx.playerFeet().equals(new BetterBlockPos(dest.x, src.y, src.z))){ + return (MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z + offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x + offset, y, z - offset)) || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z + offset)) - || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset)))){ - return true; + || MovementHelper.canWalkOn(ctx, new BetterBlockPos(x - offset, y, z - offset))); } - return false; + return true; } @Override