diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index c1db9b17a..cd41ed7df 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, BlockState 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, BlockState 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 3d0a6e7dc..e798eeebf 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -379,7 +379,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 3502f6aec..cd36cf615 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -68,7 +68,7 @@ public class MovementAscend extends Movement { BlockState 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 d6496cb18..4ac57ed8b 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); + BlockState toReplace = context.get(destX, y - 1, destZ); + double placeCost = context.costOfPlacingAt(destX, y - 1, destZ, toReplace); if (placeCost >= COST_INF) { return; } - BlockState 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 52b1dddd3..72cb4ae4b 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -85,7 +85,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 2bbb07a60..955b6efd3 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -118,7 +118,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 f4cc22e18..f6585dfed 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -813,11 +813,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, BlockState current) { if (isPossiblyProtected(x, y, z) || !worldBorder.canPlaceAt(x, z)) { // make calculation fail properly if we can't build return COST_INF; } - BlockState sch = getSchematic(x, y, z, bsi.get0(x, y, z)); + BlockState 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 AirBlock) { @@ -847,11 +847,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, BlockState current) { if (!allowBreak || isPossiblyProtected(x, y, z)) { return COST_INF; } - BlockState sch = getSchematic(x, y, z, bsi.get0(x, y, z)); + BlockState sch = getSchematic(x, y, z, current); if (sch != null) { if (sch.getBlock() instanceof AirBlock) { // it should be air