diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementDiagonal.java index 1a9ca99e7..8d46d233b 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementDiagonal.java @@ -23,6 +23,8 @@ import baritone.bot.pathing.movement.MovementHelper; import baritone.bot.pathing.movement.MovementState; import baritone.bot.utils.BlockStateInterface; import net.minecraft.block.BlockMagma; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; @@ -76,9 +78,16 @@ public class MovementDiagonal extends Movement { if (lastPos != 0) { return COST_INF; } - if (!MovementHelper.canWalkOn(positionsToPlace[0])) { + IBlockState destWalkOn = BlockStateInterface.get(positionsToPlace[0]); + if (!MovementHelper.canWalkOn(positionsToPlace[0], destWalkOn)) { return COST_INF; } + double multiplier = 1; + if (destWalkOn.getBlock().equals(Blocks.SOUL_SAND)) { + multiplier *= WALK_ONE_IN_WATER_COST / WALK_ONE_BLOCK_COST; + } else if (BlockStateInterface.get(src).getBlock().equals(Blocks.SOUL_SAND)) { + multiplier *= WALK_ONE_IN_WATER_COST / WALK_ONE_BLOCK_COST; + } if (BlockStateInterface.get(positionsToBreak[2].down()).getBlock() instanceof BlockMagma) { return COST_INF; } @@ -106,9 +115,8 @@ public class MovementDiagonal extends Movement { return COST_INF; } } - double multiplier = 1; if (optionA != 0 || optionB != 0) { - multiplier = SQRT_2 - 0.001; // TODO tune + multiplier *= SQRT_2 - 0.001; // TODO tune } return multiplier * SQRT_2 * (BlockStateInterface.isWater(src) || BlockStateInterface.isWater(dest) ? WALK_ONE_IN_WATER_COST : WALK_ONE_BLOCK_COST); } 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 4daad9474..c3f95bd14 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementTraverse.java @@ -69,7 +69,11 @@ public class MovementTraverse extends Movement { IBlockState pb0 = BlockStateInterface.get(positionsToBreak[0]); IBlockState pb1 = BlockStateInterface.get(positionsToBreak[1]); double WC = BlockStateInterface.isWater(pb0.getBlock()) || BlockStateInterface.isWater(pb1.getBlock()) ? WALK_ONE_IN_WATER_COST : WALK_ONE_BLOCK_COST; - if (MovementHelper.canWalkOn(positionsToPlace[0])) {//this is a walk, not a bridge + IBlockState destOn = BlockStateInterface.get(positionsToPlace[0]); + if (MovementHelper.canWalkOn(positionsToPlace[0], destOn)) {//this is a walk, not a bridge + if (destOn.getBlock().equals(Blocks.SOUL_SAND)) { + WC *= SNEAK_ONE_BLOCK_COST / WALK_ONE_BLOCK_COST; + } if (MovementHelper.canWalkThrough(positionsToBreak[0]) && MovementHelper.canWalkThrough(positionsToBreak[1])) { return WC; } diff --git a/src/main/java/baritone/bot/utils/Helper.java b/src/main/java/baritone/bot/utils/Helper.java index fee842a13..0bc696f46 100755 --- a/src/main/java/baritone/bot/utils/Helper.java +++ b/src/main/java/baritone/bot/utils/Helper.java @@ -48,10 +48,11 @@ public interface Helper { } default BlockPos playerFeet() { - BlockPos feet = new BlockPos(player().posX, player().posY, player().posZ); - if (BlockStateInterface.get(feet).getBlock().equals(Blocks.SOUL_SAND) && player().posY > feet.getY() + 0.874999) { + // TODO find a better way to deal with soul sand!!!!! + BlockPos feet = new BlockPos(player().posX, player().posY + 0.1251, player().posZ); + /*if (BlockStateInterface.get(feet).getBlock().equals(Blocks.SOUL_SAND) && player().posY > feet.getY() + 0.874999) { return feet.up(); - } + }*/ return feet; }