diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index a9a1440d0..4ad659cce 100644 --- a/src/main/java/baritone/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/pathing/movement/CalculationContext.java @@ -135,7 +135,7 @@ public class CalculationContext { return get(x, y, z).getBlock(); } - public double costOfPlacingAt(int x, int y, int z) { + public double costOfPlacingAt(int x, int y, int z, IBlockState current) { if (!hasThrowaway) { // only true if allowPlace is true, see constructor return COST_INF; } @@ -149,7 +149,7 @@ public class CalculationContext { return placeBlockCost; } - public double breakCostMultiplierAt(int x, int y, int z) { + public double breakCostMultiplierAt(int x, int y, int z, IBlockState current) { if (!allowBreak) { return COST_INF; } diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index ec9bf02e4..dc3128bcf 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -384,7 +384,7 @@ public interface MovementHelper extends ActionCosts, Helper { if (!state.getFluidState().isEmpty()) { return COST_INF; } - double mult = context.breakCostMultiplierAt(x, y, z); + double mult = context.breakCostMultiplierAt(x, y, z, state); if (mult >= COST_INF) { return COST_INF; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 66827a35f..4f35ef8eb 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -69,7 +69,7 @@ public class MovementAscend extends Movement { IBlockState toPlace = context.get(destX, y, destZ); double additionalPlacementCost = 0; if (!MovementHelper.canWalkOn(context.bsi, destX, y, destZ, toPlace)) { - additionalPlacementCost = context.costOfPlacingAt(destX, y, destZ); + additionalPlacementCost = context.costOfPlacingAt(destX, y, destZ, toPlace); if (additionalPlacementCost >= COST_INF) { return COST_INF; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 92a35c56c..adaacbf18 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -148,11 +148,11 @@ public class MovementParkour extends Movement { // time 2 pop off with that dank skynet parkour place int destX = x + 4 * xDiff; int destZ = z + 4 * zDiff; - double placeCost = context.costOfPlacingAt(destX, y - 1, destZ); + IBlockState toReplace = context.get(destX, y - 1, destZ); + double placeCost = context.costOfPlacingAt(destX, y - 1, destZ, toReplace); if (placeCost >= COST_INF) { return; } - IBlockState toReplace = context.get(destX, y - 1, destZ); if (!MovementHelper.isReplaceable(destX, y - 1, destZ, toReplace, context.bsi)) { return; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index d099b5a4d..8a3122d4d 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -87,7 +87,7 @@ public class MovementPillar extends Movement { double placeCost = 0; if (!ladder) { // we need to place a block where we started to jump on it - placeCost = context.costOfPlacingAt(x, y, z); + placeCost = context.costOfPlacingAt(x, y, z, fromState); if (placeCost >= COST_INF) { return COST_INF; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index b031de9fa..0660d9036 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -120,7 +120,7 @@ public class MovementTraverse extends Movement { // this happens when assume walk on water is true and this is a traverse in water, which isn't allowed return COST_INF; } - double placeCost = context.costOfPlacingAt(destX, y - 1, destZ); + double placeCost = context.costOfPlacingAt(destX, y - 1, destZ, destOn); if (placeCost >= COST_INF) { return COST_INF; } diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 82a4aa705..6b09f6011 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -814,11 +814,11 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } @Override - public double costOfPlacingAt(int x, int y, int z) { + public double costOfPlacingAt(int x, int y, int z, IBlockState current) { if (isPossiblyProtected(x, y, z) || !worldBorder.canPlaceAt(x, z)) { // make calculation fail properly if we can't build return COST_INF; } - IBlockState sch = getSchematic(x, y, z, bsi.get0(x, y, z)); + IBlockState sch = getSchematic(x, y, z, current); if (sch != null) { // TODO this can return true even when allowPlace is off.... is that an issue? if (sch.getBlock() instanceof BlockAir) { @@ -848,11 +848,11 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } @Override - public double breakCostMultiplierAt(int x, int y, int z) { + public double breakCostMultiplierAt(int x, int y, int z, IBlockState current) { if (!allowBreak || isPossiblyProtected(x, y, z)) { return COST_INF; } - IBlockState sch = getSchematic(x, y, z, bsi.get0(x, y, z)); + IBlockState sch = getSchematic(x, y, z, current); if (sch != null) { if (sch.getBlock() instanceof BlockAir) { // it should be air