From 974a3416d86b714e10a0c324df7dfc722bd2bec6 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Thu, 8 May 2025 18:02:56 -0400 Subject: [PATCH 01/14] Integrate some magma block avoidance functionality. --- .../baritone/pathing/movement/MovementHelper.java | 15 ++++++++++++++- .../movement/movements/MovementAscend.java | 6 ++++++ .../movement/movements/MovementDescend.java | 3 +++ .../movement/movements/MovementDiagonal.java | 12 +++++++++--- .../movement/movements/MovementTraverse.java | 12 ++++++++---- 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 0fa326d51..db528de4a 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -50,6 +50,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -420,7 +421,7 @@ public interface MovementHelper extends ActionCosts, Helper { static Ternary canWalkOnBlockState(BlockState state) { Block block = state.getBlock(); - if (isBlockNormalCube(state) && block != Blocks.MAGMA_BLOCK && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { + if (isBlockNormalCube(state) && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { return YES; } if (block instanceof AzaleaBlock) { @@ -806,4 +807,16 @@ public interface MovementHelper extends ActionCosts, Helper { b == Blocks.LAVA || b == Blocks.WATER; } + + static List steppingOnBlocks(IPlayerContext ctx) { + List blocks = new ArrayList<>(); + for (byte x = -1; x <= 1; x++) { + for (byte z = -1; z <= 1; z++) { + if (ctx.player().getBoundingBox().intersects(Vec3.atLowerCornerOf(ctx.player().blockPosition()).add(x, 0, z), Vec3.atLowerCornerOf(ctx.player().blockPosition()).add(x + 1, 1, z + 1))) { + blocks.add(new BetterBlockPos(ctx.player().getBlockX() + x, ctx.player().getBlockY() - 1, ctx.player().getBlockZ() + z)); + } + } + } + return blocks; + } } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 717cd2e70..9b4899dd5 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -133,6 +133,8 @@ public class MovementAscend extends Movement { // jumpingFromBottomSlab must be false if (toPlace.getBlock() == Blocks.SOUL_SAND) { walk = WALK_ONE_OVER_SOUL_SAND_COST; + } else if (toPlace.getBlock() == Blocks.MAGMA_BLOCK) { + walk = SNEAK_ONE_BLOCK_COST; } else { walk = Math.max(JUMP_ONE_BLOCK_COST, WALK_ONE_BLOCK_COST); } @@ -188,6 +190,10 @@ public class MovementAscend extends Movement { return state; } MovementHelper.moveTowards(ctx, state, dest); + + if (jumpingOnto.getBlock() == Blocks.MAGMA_BLOCK) { + state.setInput(Input.SNEAK, true); + } if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index 07d6d7d01..af9952242 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -255,6 +255,9 @@ public class MovementDescend extends Movement { double x = ctx.player().position().x - (src.getX() + 0.5); double z = ctx.player().position().z - (src.getZ() + 0.5); double fromStart = Math.sqrt(x * x + z * z); + + state.setInput(Input.SNEAK, BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock() == Blocks.MAGMA_BLOCK); + if (!playerFeet.equals(dest) || ab > 0.25) { if (numTicks++ < 20 && fromStart < 1.25) { MovementHelper.moveTowards(ctx, state, fakeDest); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index cf387d5c9..a7b535dc9 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -142,7 +142,10 @@ public class MovementDiagonal extends Movement { // For either possible soul sand, that affects half of our walking if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (frostWalker) { + } else if (destWalkOn.getBlock() == Blocks.MAGMA_BLOCK) { + multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; + } + else if (frostWalker) { // frostwalker lets us walk on water without the penalty } else if (destWalkOn.getBlock() == Blocks.WATER) { multiplier += context.walkOnWaterOnePenalty * SQRT_2; @@ -154,12 +157,15 @@ public class MovementDiagonal extends Movement { if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; } + else if (fromDownBlock == Blocks.MAGMA_BLOCK) { + multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; + } BlockState cuttingOver1 = context.get(x, y - 1, destZ); - if (cuttingOver1.getBlock() == Blocks.MAGMA_BLOCK || MovementHelper.isLava(cuttingOver1)) { + if (MovementHelper.isLava(cuttingOver1)) { return; } BlockState cuttingOver2 = context.get(destX, y - 1, z); - if (cuttingOver2.getBlock() == Blocks.MAGMA_BLOCK || MovementHelper.isLava(cuttingOver2)) { + if (MovementHelper.isLava(cuttingOver2)) { return; } boolean water = false; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index cec3ca39a..b9b61da64 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -85,6 +85,7 @@ public class MovementTraverse extends Movement { if (frostWalker || MovementHelper.canWalkOn(context, destX, y - 1, destZ, destOn)) { //this is a walk, not a bridge double WC = WALK_ONE_BLOCK_COST; boolean water = false; + boolean sneaking = false; if (MovementHelper.isWater(pb0) || MovementHelper.isWater(pb1)) { WC = context.waterWalkSpeed; water = true; @@ -98,6 +99,9 @@ public class MovementTraverse extends Movement { } if (srcDownBlock == Blocks.SOUL_SAND) { WC += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; + } else if (srcDownBlock == Blocks.MAGMA_BLOCK) { + sneaking = true; + WC += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; } } double hardness1 = MovementHelper.getMiningDurationTicks(context, destX, y, destZ, pb1, false); @@ -106,7 +110,7 @@ public class MovementTraverse extends Movement { } double hardness2 = MovementHelper.getMiningDurationTicks(context, destX, y + 1, destZ, pb0, true); // only include falling on the upper block to break if (hardness1 == 0 && hardness2 == 0) { - if (!water && context.canSprint) { + if (!water && !sneaking && context.canSprint) { // If there's nothing in the way, and this isn't water, and we aren't sneak placing // We can sprint =D // Don't check for soul sand, since we can sprint on that too @@ -213,12 +217,12 @@ public class MovementTraverse extends Movement { .setInput(Input.SPRINT, true); } - //sneak may have been set to true in the PREPPING state while mining an adjacent block - state.setInput(Input.SNEAK, false); - Block fd = BlockStateInterface.get(ctx, src.below()).getBlock(); boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; + //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is on magma + state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock() == Blocks.MAGMA_BLOCK)); + if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { boolean notPassable = pb0.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, src, dest) || pb1.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, dest, src); boolean canOpen = !(Blocks.IRON_DOOR.equals(pb0.getBlock()) || Blocks.IRON_DOOR.equals(pb1.getBlock())); From 292f13d05e11a736ebc55294ce2942573e9f74b2 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Thu, 8 May 2025 18:24:54 -0400 Subject: [PATCH 02/14] Small change. --- .../baritone/pathing/movement/movements/MovementTraverse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index b9b61da64..9f3f9e15f 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -220,7 +220,7 @@ public class MovementTraverse extends Movement { Block fd = BlockStateInterface.get(ctx, src.below()).getBlock(); boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; - //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is on magma + //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is about to go on magma state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock() == Blocks.MAGMA_BLOCK)); if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { From 8eebeb9772dd8a9e48e7ffa16fc80031c3cb0eb5 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Thu, 8 May 2025 18:51:37 -0400 Subject: [PATCH 03/14] Magma block detection for MovementDiagonal. --- .../baritone/pathing/movement/movements/MovementDiagonal.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index a7b535dc9..ca3baf847 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -276,6 +276,7 @@ public class MovementDiagonal extends Movement { if (sprint()) { state.setInput(Input.SPRINT, true); } + state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock() == Blocks.MAGMA_BLOCK)); MovementHelper.moveTowards(ctx, state, dest); return state; } From 7317a5c9c40a9eda23b83a74a29e1ce7a9d60434 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Thu, 8 May 2025 20:33:27 -0400 Subject: [PATCH 04/14] Fix ascend. --- .../baritone/pathing/movement/movements/MovementAscend.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 9b4899dd5..fe9a75b37 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -191,9 +191,8 @@ public class MovementAscend extends Movement { } MovementHelper.moveTowards(ctx, state, dest); - if (jumpingOnto.getBlock() == Blocks.MAGMA_BLOCK) { - state.setInput(Input.SNEAK, true); - } + state.setInput(Input.SNEAK, jumpingOnto.getBlock() == Blocks.MAGMA_BLOCK); + if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab } From 373757a63ae53aba644c151fb0a1b7b972574ec1 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Fri, 9 May 2025 18:53:03 -0400 Subject: [PATCH 05/14] Implement MovementFall magma block detection. --- .../baritone/pathing/movement/movements/MovementFall.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index cb8711757..b04ac331f 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -29,6 +29,7 @@ import baritone.pathing.movement.Movement; import baritone.pathing.movement.MovementHelper; import baritone.pathing.movement.MovementState; import baritone.pathing.movement.MovementState.MovementTarget; +import baritone.utils.BlockStateInterface; import baritone.utils.pathing.MutableMoveResult; import java.util.HashSet; import java.util.Optional; @@ -40,6 +41,7 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AirBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LadderBlock; @@ -94,6 +96,11 @@ public class MovementFall extends Movement { Rotation targetRotation = null; BlockState destState = ctx.world().getBlockState(dest); Block destBlock = destState.getBlock(); + + if (ctx.world().getBlockState(dest.below()).getBlock() == Blocks.MAGMA_BLOCK && MovementHelper.steppingOnBlocks(ctx).stream().allMatch(block -> BlockStateInterface.get(ctx, block).getBlock() instanceof AirBlock)) { + state.setInput(Input.SNEAK, true); + } + boolean isWater = destState.getFluidState().getType() instanceof WaterFluid; if (!isWater && willPlaceBucket() && !playerFeet.equals(dest)) { if (!Inventory.isHotbarSlot(ctx.player().getInventory().findSlotMatchingItem(STACK_BUCKET_WATER)) || ctx.world().dimension() == Level.NETHER) { From f504d26dfd42177286b96a7e5a9b49e92b0b53b2 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Fri, 9 May 2025 20:15:36 -0400 Subject: [PATCH 06/14] Add magma block functionality to MovementParkour. --- .../movement/movements/MovementAscend.java | 2 +- .../movement/movements/MovementDescend.java | 2 +- .../movement/movements/MovementDiagonal.java | 2 +- .../movement/movements/MovementFall.java | 2 +- .../movement/movements/MovementParkour.java | 21 ++++++++++++------- .../movement/movements/MovementTraverse.java | 2 +- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index fe9a75b37..331fbbc21 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -191,7 +191,7 @@ public class MovementAscend extends Movement { } MovementHelper.moveTowards(ctx, state, dest); - state.setInput(Input.SNEAK, jumpingOnto.getBlock() == Blocks.MAGMA_BLOCK); + state.setInput(Input.SNEAK, jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index af9952242..7ee2b59a1 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -256,7 +256,7 @@ public class MovementDescend extends Movement { double z = ctx.player().position().z - (src.getZ() + 0.5); double fromStart = Math.sqrt(x * x + z * z); - state.setInput(Input.SNEAK, BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock() == Blocks.MAGMA_BLOCK); + state.setInput(Input.SNEAK, BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); if (!playerFeet.equals(dest) || ab > 0.25) { if (numTicks++ < 20 && fromStart < 1.25) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index ca3baf847..c1f451445 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -276,7 +276,7 @@ public class MovementDiagonal extends Movement { if (sprint()) { state.setInput(Input.SPRINT, true); } - state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock() == Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); MovementHelper.moveTowards(ctx, state, dest); return state; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index b04ac331f..9e25cc791 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -97,7 +97,7 @@ public class MovementFall extends Movement { BlockState destState = ctx.world().getBlockState(dest); Block destBlock = destState.getBlock(); - if (ctx.world().getBlockState(dest.below()).getBlock() == Blocks.MAGMA_BLOCK && MovementHelper.steppingOnBlocks(ctx).stream().allMatch(block -> BlockStateInterface.get(ctx, block).getBlock() instanceof AirBlock)) { + if (BlockStateInterface.get(ctx, dest.below()).getBlock().equals(Blocks.MAGMA_BLOCK) && MovementHelper.steppingOnBlocks(ctx).stream().allMatch(block -> BlockStateInterface.get(ctx, block).getBlock() instanceof AirBlock)) { state.setInput(Input.SNEAK, true); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index c46cf68bd..81d94a939 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -103,14 +103,16 @@ public class MovementParkour extends Movement { return; // can't jump out of water } int maxJump; - if (standingOn.getBlock() == Blocks.SOUL_SAND) { + if (standingOn.getBlock() == Blocks.MAGMA_BLOCK) { + maxJump = 2; + } + else if (standingOn.getBlock() == Blocks.SOUL_SAND) { maxJump = 2; // 1 block gap - } else { - if (context.canSprint) { - maxJump = 4; - } else { - maxJump = 3; - } + } else if (context.canSprint) { + maxJump = 4; + } + else { + maxJump = 3; } // check parkour jumps from smallest to largest for obstacles/walls and landing positions @@ -263,6 +265,11 @@ public class MovementParkour extends Movement { if (dist >= 4 || ascend) { state.setInput(Input.SPRINT, true); } + + if (BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { + state.setInput(Input.SNEAK, true); + } + MovementHelper.moveTowards(ctx, state, dest); if (ctx.playerFeet().equals(dest)) { Block d = BlockStateInterface.getBlock(ctx, dest); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index 9f3f9e15f..b0b033af3 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -221,7 +221,7 @@ public class MovementTraverse extends Movement { boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is about to go on magma - state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock() == Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { boolean notPassable = pb0.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, src, dest) || pb1.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, dest, src); From 0815697d30e650d859ac3bc1a3309084564d8c92 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Fri, 9 May 2025 20:41:19 -0400 Subject: [PATCH 07/14] Make MovementPillar literally always sneak because why not. --- .../baritone/pathing/movement/movements/MovementPillar.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index a11086d5b..01da80f16 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -230,7 +230,10 @@ public class MovementPillar extends Movement { } - state.setInput(Input.SNEAK, ctx.player().position().y > dest.getY() || ctx.player().position().y < src.getY() + 0.2D); // delay placement by 1 tick for ncp compatibility + state.setInput(Input.SNEAK, true); +// if (ctx.player().position().y > dest.getY() || ctx.player().position().y < src.getY() + 0.2D) { +// state.setInput(Input.SNEAK, true); // delay placement by 1 tick for ncp compatibility +// } // since (lower down) we only right click once player.isSneaking, and that happens the tick after we request to sneak double diffX = ctx.player().position().x - (dest.getX() + 0.5); From 267d677d79eaeb76d3acc242b48ab3c0fb2bea94 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Fri, 9 May 2025 21:09:56 -0400 Subject: [PATCH 08/14] Make MovementDiagonal not account sprint cost reduction on sneak. --- .../pathing/movement/movements/MovementDiagonal.java | 9 ++++++--- .../pathing/movement/movements/MovementTraverse.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index c1f451445..a70dc9190 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -118,6 +118,7 @@ public class MovementDiagonal extends Movement { BlockState destWalkOn; boolean descend = false; boolean frostWalker = false; + boolean sneaking = false; if (!MovementHelper.canWalkThrough(context, destX, y, destZ, destInto)) { ascend = true; if (!context.allowDiagonalAscend || !MovementHelper.canWalkThrough(context, x, y + 2, z) || !MovementHelper.canWalkOn(context, destX, y, destZ, destInto) || !MovementHelper.canWalkThrough(context, destX, y + 2, destZ)) { @@ -142,8 +143,9 @@ public class MovementDiagonal extends Movement { // For either possible soul sand, that affects half of our walking if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (destWalkOn.getBlock() == Blocks.MAGMA_BLOCK) { + } else if (destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; + sneaking = true; } else if (frostWalker) { // frostwalker lets us walk on water without the penalty @@ -157,8 +159,9 @@ public class MovementDiagonal extends Movement { if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; } - else if (fromDownBlock == Blocks.MAGMA_BLOCK) { + else if (fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; + sneaking = true; } BlockState cuttingOver1 = context.get(x, y - 1, destZ); if (MovementHelper.isLava(cuttingOver1)) { @@ -240,7 +243,7 @@ public class MovementDiagonal extends Movement { } } else { // only can sprint if not edging around - if (context.canSprint && !water) { + if (context.canSprint && !water && !sneaking) { // If we aren't edging around anything, and we aren't in water // We can sprint =D // Don't check for soul sand, since we can sprint on that too diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index b0b033af3..e32220c52 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -99,7 +99,7 @@ public class MovementTraverse extends Movement { } if (srcDownBlock == Blocks.SOUL_SAND) { WC += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (srcDownBlock == Blocks.MAGMA_BLOCK) { + } else if (srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { sneaking = true; WC += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; } From f4b51586e8c41278433140464e591daabab8f203 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Fri, 9 May 2025 22:02:22 -0400 Subject: [PATCH 09/14] Add setting that controls sneaking on magma blocks. --- src/api/java/baritone/api/Settings.java | 5 +++++ .../java/baritone/pathing/movement/CalculationContext.java | 2 ++ .../baritone/pathing/movement/movements/MovementAscend.java | 2 +- .../pathing/movement/movements/MovementDescend.java | 3 ++- .../pathing/movement/movements/MovementDiagonal.java | 6 +++--- .../pathing/movement/movements/MovementParkour.java | 4 ++-- .../pathing/movement/movements/MovementTraverse.java | 4 ++-- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 44dabae2a..3c714ff27 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -1543,6 +1543,11 @@ public final class Settings { */ public final Setting elytraChatSpam = new Setting<>(false); + /** + * Sneak when magma blocks are under feet + */ + public final Setting allowSneakOnMagmaBlocks = new Setting<>(false); + /** * A map of lowercase setting field names to their respective setting */ diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index e84188a7f..083059d50 100644 --- a/src/main/java/baritone/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/pathing/movement/CalculationContext.java @@ -79,6 +79,7 @@ public class CalculationContext { public double backtrackCostFavoringCoefficient; public double jumpPenalty; public final double walkOnWaterOnePenalty; + public final boolean allowSneakOnMagmaBlocks; public final BetterWorldBorder worldBorder; public final PrecomputedData precomputedData; @@ -125,6 +126,7 @@ public class CalculationContext { this.backtrackCostFavoringCoefficient = Baritone.settings().backtrackCostFavoringCoefficient.value; this.jumpPenalty = Baritone.settings().jumpPenalty.value; this.walkOnWaterOnePenalty = Baritone.settings().walkOnWaterOnePenalty.value; + this.allowSneakOnMagmaBlocks = Baritone.settings().allowSneakOnMagmaBlocks.value; // why cache these things here, why not let the movements just get directly from settings? // because if some movements are calculated one way and others are calculated another way, // then you get a wildly inconsistent path that isn't optimal for either scenario. diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 331fbbc21..60b5f501e 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -191,7 +191,7 @@ public class MovementAscend extends Movement { } MovementHelper.moveTowards(ctx, state, dest); - state.setInput(Input.SNEAK, jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index 7ee2b59a1..b1b3f53bd 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -17,6 +17,7 @@ package baritone.pathing.movement.movements; +import baritone.Baritone; import baritone.api.IBaritone; import baritone.api.pathing.movement.MovementStatus; import baritone.api.utils.BetterBlockPos; @@ -256,7 +257,7 @@ public class MovementDescend extends Movement { double z = ctx.player().position().z - (src.getZ() + 0.5); double fromStart = Math.sqrt(x * x + z * z); - state.setInput(Input.SNEAK, BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); if (!playerFeet.equals(dest) || ab > 0.25) { if (numTicks++ < 20 && fromStart < 1.25) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index a70dc9190..d553e1cd1 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -143,7 +143,7 @@ public class MovementDiagonal extends Movement { // For either possible soul sand, that affects half of our walking if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { + } else if (Baritone.settings().allowSneakOnMagmaBlocks.value && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } @@ -159,7 +159,7 @@ public class MovementDiagonal extends Movement { if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; } - else if (fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { + else if (Baritone.settings().allowSneakOnMagmaBlocks.value && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } @@ -279,7 +279,7 @@ public class MovementDiagonal extends Movement { if (sprint()) { state.setInput(Input.SPRINT, true); } - state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); MovementHelper.moveTowards(ctx, state, dest); return state; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 81d94a939..0dfa6fa4c 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -103,7 +103,7 @@ public class MovementParkour extends Movement { return; // can't jump out of water } int maxJump; - if (standingOn.getBlock() == Blocks.MAGMA_BLOCK) { + if (Baritone.settings().allowSneakOnMagmaBlocks.value && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { maxJump = 2; } else if (standingOn.getBlock() == Blocks.SOUL_SAND) { @@ -266,7 +266,7 @@ public class MovementParkour extends Movement { state.setInput(Input.SPRINT, true); } - if (BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { + if (Baritone.settings().allowSneakOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { state.setInput(Input.SNEAK, true); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index e32220c52..df525d919 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -99,7 +99,7 @@ public class MovementTraverse extends Movement { } if (srcDownBlock == Blocks.SOUL_SAND) { WC += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { + } else if (Baritone.settings().allowSneakOnMagmaBlocks.value && srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { sneaking = true; WC += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; } @@ -221,7 +221,7 @@ public class MovementTraverse extends Movement { boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is about to go on magma - state.setInput(Input.SNEAK, MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { boolean notPassable = pb0.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, src, dest) || pb1.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, dest, src); From 6dd5d843d507f440c9703f4311fe5ed9b8737756 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Sat, 10 May 2025 08:53:26 -0400 Subject: [PATCH 10/14] Make magma blocks disallowed if setting is turned off. --- src/api/java/baritone/api/Settings.java | 2 +- .../baritone/pathing/movement/CalculationContext.java | 4 ++-- .../java/baritone/pathing/movement/MovementHelper.java | 2 +- .../pathing/movement/movements/MovementAscend.java | 2 +- .../pathing/movement/movements/MovementDescend.java | 2 +- .../pathing/movement/movements/MovementDiagonal.java | 10 +++++----- .../pathing/movement/movements/MovementParkour.java | 4 ++-- .../pathing/movement/movements/MovementTraverse.java | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 3c714ff27..e5cb0afe6 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -1546,7 +1546,7 @@ public final class Settings { /** * Sneak when magma blocks are under feet */ - public final Setting allowSneakOnMagmaBlocks = new Setting<>(false); + public final Setting allowWalkOnMagmaBlocks = new Setting<>(false); /** * A map of lowercase setting field names to their respective setting diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index 083059d50..cd01e4aec 100644 --- a/src/main/java/baritone/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/pathing/movement/CalculationContext.java @@ -79,7 +79,7 @@ public class CalculationContext { public double backtrackCostFavoringCoefficient; public double jumpPenalty; public final double walkOnWaterOnePenalty; - public final boolean allowSneakOnMagmaBlocks; + public final boolean allowWalkOnMagmaBlocks; public final BetterWorldBorder worldBorder; public final PrecomputedData precomputedData; @@ -126,7 +126,7 @@ public class CalculationContext { this.backtrackCostFavoringCoefficient = Baritone.settings().backtrackCostFavoringCoefficient.value; this.jumpPenalty = Baritone.settings().jumpPenalty.value; this.walkOnWaterOnePenalty = Baritone.settings().walkOnWaterOnePenalty.value; - this.allowSneakOnMagmaBlocks = Baritone.settings().allowSneakOnMagmaBlocks.value; + this.allowWalkOnMagmaBlocks = Baritone.settings().allowWalkOnMagmaBlocks.value; // why cache these things here, why not let the movements just get directly from settings? // because if some movements are calculated one way and others are calculated another way, // then you get a wildly inconsistent path that isn't optimal for either scenario. diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index db528de4a..786210611 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -421,7 +421,7 @@ public interface MovementHelper extends ActionCosts, Helper { static Ternary canWalkOnBlockState(BlockState state) { Block block = state.getBlock(); - if (isBlockNormalCube(state) && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { + if (isBlockNormalCube(state) && (Baritone.settings().allowWalkOnMagmaBlocks.value || block != Blocks.MAGMA_BLOCK) && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { return YES; } if (block instanceof AzaleaBlock) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 60b5f501e..fbf4a1fdf 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -191,7 +191,7 @@ public class MovementAscend extends Movement { } MovementHelper.moveTowards(ctx, state, dest); - state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index b1b3f53bd..b30f06236 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -257,7 +257,7 @@ public class MovementDescend extends Movement { double z = ctx.player().position().z - (src.getZ() + 0.5); double fromStart = Math.sqrt(x * x + z * z); - state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); if (!playerFeet.equals(dest) || ab > 0.25) { if (numTicks++ < 20 && fromStart < 1.25) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index d553e1cd1..79b34ecc0 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -143,7 +143,7 @@ public class MovementDiagonal extends Movement { // For either possible soul sand, that affects half of our walking if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (Baritone.settings().allowSneakOnMagmaBlocks.value && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { + } else if (Baritone.settings().allowWalkOnMagmaBlocks.value && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } @@ -159,16 +159,16 @@ public class MovementDiagonal extends Movement { if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; } - else if (Baritone.settings().allowSneakOnMagmaBlocks.value && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { + else if (Baritone.settings().allowWalkOnMagmaBlocks.value && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } BlockState cuttingOver1 = context.get(x, y - 1, destZ); - if (MovementHelper.isLava(cuttingOver1)) { + if ((Baritone.settings().allowWalkOnMagmaBlocks.value && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver1)) { return; } BlockState cuttingOver2 = context.get(destX, y - 1, z); - if (MovementHelper.isLava(cuttingOver2)) { + if ((Baritone.settings().allowWalkOnMagmaBlocks.value && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver2)) { return; } boolean water = false; @@ -279,7 +279,7 @@ public class MovementDiagonal extends Movement { if (sprint()) { state.setInput(Input.SPRINT, true); } - state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); MovementHelper.moveTowards(ctx, state, dest); return state; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 0dfa6fa4c..0b942682d 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -103,7 +103,7 @@ public class MovementParkour extends Movement { return; // can't jump out of water } int maxJump; - if (Baritone.settings().allowSneakOnMagmaBlocks.value && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { + if (Baritone.settings().allowWalkOnMagmaBlocks.value && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { maxJump = 2; } else if (standingOn.getBlock() == Blocks.SOUL_SAND) { @@ -266,7 +266,7 @@ public class MovementParkour extends Movement { state.setInput(Input.SPRINT, true); } - if (Baritone.settings().allowSneakOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { + if (Baritone.settings().allowWalkOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { state.setInput(Input.SNEAK, true); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index df525d919..5953a786b 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -99,7 +99,7 @@ public class MovementTraverse extends Movement { } if (srcDownBlock == Blocks.SOUL_SAND) { WC += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (Baritone.settings().allowSneakOnMagmaBlocks.value && srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { + } else if (Baritone.settings().allowWalkOnMagmaBlocks.value && srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { sneaking = true; WC += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; } @@ -221,7 +221,7 @@ public class MovementTraverse extends Movement { boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is about to go on magma - state.setInput(Input.SNEAK, Baritone.settings().allowSneakOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { boolean notPassable = pb0.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, src, dest) || pb1.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, dest, src); From 053b88d7cd49e19e1a0bb0ee8e839c68f8a27b88 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Wed, 14 May 2025 15:13:12 -0400 Subject: [PATCH 11/14] Make cost calculation use settings in CalculationContext. --- .../pathing/movement/movements/MovementDiagonal.java | 8 ++++---- .../pathing/movement/movements/MovementParkour.java | 2 +- .../pathing/movement/movements/MovementTraverse.java | 2 +- 3 files changed, 6 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 79b34ecc0..7a2e17f9c 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -143,7 +143,7 @@ public class MovementDiagonal extends Movement { // For either possible soul sand, that affects half of our walking if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (Baritone.settings().allowWalkOnMagmaBlocks.value && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { + } else if (context.allowWalkOnMagmaBlocks && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } @@ -159,16 +159,16 @@ public class MovementDiagonal extends Movement { if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; } - else if (Baritone.settings().allowWalkOnMagmaBlocks.value && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { + else if (context.allowWalkOnMagmaBlocks && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } BlockState cuttingOver1 = context.get(x, y - 1, destZ); - if ((Baritone.settings().allowWalkOnMagmaBlocks.value && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver1)) { + if ((context.allowWalkOnMagmaBlocks && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver1)) { return; } BlockState cuttingOver2 = context.get(destX, y - 1, z); - if ((Baritone.settings().allowWalkOnMagmaBlocks.value && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver2)) { + if ((context.allowWalkOnMagmaBlocks && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver2)) { return; } boolean water = false; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 496d6cf1f..f5ccfb2f5 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -102,7 +102,7 @@ public class MovementParkour extends Movement { return; // can't jump out of water } int maxJump; - if (Baritone.settings().allowWalkOnMagmaBlocks.value && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { + if (context.allowWalkOnMagmaBlocks && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { maxJump = 2; } else if (standingOn.getBlock() == Blocks.SOUL_SAND) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index 5953a786b..e1da281fd 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -99,7 +99,7 @@ public class MovementTraverse extends Movement { } if (srcDownBlock == Blocks.SOUL_SAND) { WC += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (Baritone.settings().allowWalkOnMagmaBlocks.value && srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { + } else if (context.allowWalkOnMagmaBlocks && srcDownBlock.equals(Blocks.MAGMA_BLOCK)) { sneaking = true; WC += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; } From 65d0d860dd6673c4edc0be73f5f6766658c6d824 Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Tue, 22 Jul 2025 01:51:42 -0400 Subject: [PATCH 12/14] Reformatting, appeasing leijurv, and fixing stupid mistake. --- .../baritone/pathing/movement/MovementHelper.java | 4 ++-- .../pathing/movement/movements/MovementAscend.java | 6 +++--- .../movement/movements/MovementDescend.java | 2 +- .../movement/movements/MovementDiagonal.java | 10 +++++----- .../pathing/movement/movements/MovementFall.java | 4 +--- .../movement/movements/MovementParkour.java | 14 ++++++++------ .../pathing/movement/movements/MovementPillar.java | 4 ---- .../movement/movements/MovementTraverse.java | 2 +- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 786210611..914a806ae 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -385,7 +385,7 @@ public interface MovementHelper extends ActionCosts, Helper { static boolean avoidWalkingInto(BlockState state) { Block block = state.getBlock(); return !state.getFluidState().isEmpty() - || block == Blocks.MAGMA_BLOCK + || (block == Blocks.MAGMA_BLOCK && !Baritone.settings().allowWalkOnMagmaBlocks.value) || block == Blocks.CACTUS || block == Blocks.SWEET_BERRY_BUSH || block instanceof BaseFireBlock @@ -421,7 +421,7 @@ public interface MovementHelper extends ActionCosts, Helper { static Ternary canWalkOnBlockState(BlockState state) { Block block = state.getBlock(); - if (isBlockNormalCube(state) && (Baritone.settings().allowWalkOnMagmaBlocks.value || block != Blocks.MAGMA_BLOCK) && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { + if (isBlockNormalCube(state) && (block != Blocks.MAGMA_BLOCK || Baritone.settings().allowWalkOnMagmaBlocks.value) && block != Blocks.BUBBLE_COLUMN && block != Blocks.HONEY_BLOCK) { return YES; } if (block instanceof AzaleaBlock) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index fbf4a1fdf..2ecd9d723 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -131,9 +131,9 @@ public class MovementAscend extends Movement { } } else { // jumpingFromBottomSlab must be false - if (toPlace.getBlock() == Blocks.SOUL_SAND) { + if (toPlace.is(Blocks.SOUL_SAND)) { walk = WALK_ONE_OVER_SOUL_SAND_COST; - } else if (toPlace.getBlock() == Blocks.MAGMA_BLOCK) { + } else if (toPlace.is(Blocks.MAGMA_BLOCK)) { walk = SNEAK_ONE_BLOCK_COST; } else { walk = Math.max(JUMP_ONE_BLOCK_COST, WALK_ONE_BLOCK_COST); @@ -191,7 +191,7 @@ public class MovementAscend extends Movement { } MovementHelper.moveTowards(ctx, state, dest); - state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && jumpingOnto.getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && jumpingOnto.is(Blocks.MAGMA_BLOCK)); if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(BlockStateInterface.get(ctx, src.below()))) { return state; // don't jump while walking from a non double slab into a bottom slab diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index 95ece84e7..3e860e301 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -257,7 +257,7 @@ public class MovementDescend extends Movement { double z = ctx.player().position().z - (src.getZ() + 0.5); double fromStart = Math.sqrt(x * x + z * z); - state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.player().blockPosition().below()).getBlock().equals(Blocks.MAGMA_BLOCK)); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && ctx.world().getBlockState(ctx.player().blockPosition().below()).is(Blocks.MAGMA_BLOCK)); if (!playerFeet.equals(dest) || ab > 0.25) { if (numTicks++ < 20 && fromStart < 1.25) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 7a2e17f9c..89f5c2118 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -141,9 +141,9 @@ public class MovementDiagonal extends Movement { } double multiplier = WALK_ONE_BLOCK_COST; // For either possible soul sand, that affects half of our walking - if (destWalkOn.getBlock() == Blocks.SOUL_SAND) { + if (destWalkOn.is(Blocks.SOUL_SAND)) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } else if (context.allowWalkOnMagmaBlocks && destWalkOn.getBlock().equals(Blocks.MAGMA_BLOCK)) { + } else if (context.allowWalkOnMagmaBlocks && destWalkOn.is(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; } @@ -164,11 +164,11 @@ public class MovementDiagonal extends Movement { sneaking = true; } BlockState cuttingOver1 = context.get(x, y - 1, destZ); - if ((context.allowWalkOnMagmaBlocks && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver1)) { + if ((!context.allowWalkOnMagmaBlocks && cuttingOver1.is(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver1)) { return; } BlockState cuttingOver2 = context.get(destX, y - 1, z); - if ((context.allowWalkOnMagmaBlocks && cuttingOver1.getBlock().equals(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver2)) { + if ((!context.allowWalkOnMagmaBlocks && cuttingOver1.is(Blocks.MAGMA_BLOCK)) || MovementHelper.isLava(cuttingOver2)) { return; } boolean water = false; @@ -279,7 +279,7 @@ public class MovementDiagonal extends Movement { if (sprint()) { state.setInput(Input.SPRINT, true); } - state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> ctx.world().getBlockState(block).is(Blocks.MAGMA_BLOCK))); MovementHelper.moveTowards(ctx, state, dest); return state; } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index 9e25cc791..c537fc2ca 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -29,7 +29,6 @@ import baritone.pathing.movement.Movement; import baritone.pathing.movement.MovementHelper; import baritone.pathing.movement.MovementState; import baritone.pathing.movement.MovementState.MovementTarget; -import baritone.utils.BlockStateInterface; import baritone.utils.pathing.MutableMoveResult; import java.util.HashSet; import java.util.Optional; @@ -41,7 +40,6 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.AirBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LadderBlock; @@ -97,7 +95,7 @@ public class MovementFall extends Movement { BlockState destState = ctx.world().getBlockState(dest); Block destBlock = destState.getBlock(); - if (BlockStateInterface.get(ctx, dest.below()).getBlock().equals(Blocks.MAGMA_BLOCK) && MovementHelper.steppingOnBlocks(ctx).stream().allMatch(block -> BlockStateInterface.get(ctx, block).getBlock() instanceof AirBlock)) { + if (ctx.world().getBlockState(dest.below()).is(Blocks.MAGMA_BLOCK) && MovementHelper.steppingOnBlocks(ctx).stream().allMatch(block -> MovementHelper.canWalkThrough(ctx, block))) { state.setInput(Input.SNEAK, true); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index f5ccfb2f5..9af3d0244 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -102,16 +102,19 @@ public class MovementParkour extends Movement { return; // can't jump out of water } int maxJump; - if (context.allowWalkOnMagmaBlocks && standingOn.getBlock() == Blocks.MAGMA_BLOCK) { + if (context.allowWalkOnMagmaBlocks && standingOn.is(Blocks.MAGMA_BLOCK)) { maxJump = 2; } else if (standingOn.getBlock() == Blocks.SOUL_SAND) { maxJump = 2; // 1 block gap - } else if (context.canSprint) { - maxJump = 4; } else { - maxJump = 3; + if (context.canSprint) { + maxJump = 4; + } + else { + maxJump = 3; + } } // check parkour jumps from smallest to largest for obstacles/walls and landing positions @@ -264,8 +267,7 @@ public class MovementParkour extends Movement { if (dist >= 4 || ascend) { state.setInput(Input.SPRINT, true); } - - if (Baritone.settings().allowWalkOnMagmaBlocks.value && BlockStateInterface.get(ctx, ctx.playerFeet().below()).getBlock().equals(Blocks.MAGMA_BLOCK)) { + if (Baritone.settings().allowWalkOnMagmaBlocks.value && ctx.world().getBlockState(ctx.playerFeet().below()).is(Blocks.MAGMA_BLOCK)) { state.setInput(Input.SNEAK, true); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index 01da80f16..8007eb767 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -229,11 +229,7 @@ public class MovementPillar extends Movement { return state.setStatus(MovementStatus.UNREACHABLE); } - state.setInput(Input.SNEAK, true); -// if (ctx.player().position().y > dest.getY() || ctx.player().position().y < src.getY() + 0.2D) { -// state.setInput(Input.SNEAK, true); // delay placement by 1 tick for ncp compatibility -// } // since (lower down) we only right click once player.isSneaking, and that happens the tick after we request to sneak double diffX = ctx.player().position().x - (dest.getX() + 0.5); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index e1da281fd..4f51df922 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -221,7 +221,7 @@ public class MovementTraverse extends Movement { boolean ladder = fd == Blocks.LADDER || fd == Blocks.VINE; //sneak may have been set to true in the PREPPING state while mining an adjacent block, but we still want it to be true if the player is about to go on magma - state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> BlockStateInterface.get(ctx, block).getBlock().equals(Blocks.MAGMA_BLOCK))); + state.setInput(Input.SNEAK, Baritone.settings().allowWalkOnMagmaBlocks.value && MovementHelper.steppingOnBlocks(ctx).stream().anyMatch(block -> ctx.world().getBlockState(block).is(Blocks.MAGMA_BLOCK))); if (pb0.getBlock() instanceof DoorBlock || pb1.getBlock() instanceof DoorBlock) { boolean notPassable = pb0.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, src, dest) || pb1.getBlock() instanceof DoorBlock && !MovementHelper.isDoorPassable(ctx, dest, src); From c8dcbeb6f8e7fd4e4e8adb171c9f2e1762160a8b Mon Sep 17 00:00:00 2001 From: Murat65536 Date: Tue, 22 Jul 2025 11:34:56 -0400 Subject: [PATCH 13/14] Format. --- .../movement/movements/MovementParkour.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 9af3d0244..5ea1e4dcc 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -104,17 +104,12 @@ public class MovementParkour extends Movement { int maxJump; if (context.allowWalkOnMagmaBlocks && standingOn.is(Blocks.MAGMA_BLOCK)) { maxJump = 2; - } - else if (standingOn.getBlock() == Blocks.SOUL_SAND) { + } else if (standingOn.getBlock() == Blocks.SOUL_SAND) { maxJump = 2; // 1 block gap - } - else { - if (context.canSprint) { - maxJump = 4; - } - else { - maxJump = 3; - } + } else if (context.canSprint) { + maxJump = 4; + } else { + maxJump = 3; } // check parkour jumps from smallest to largest for obstacles/walls and landing positions From e3160f50de8711e461e2da7e1966c4392e3eab6a Mon Sep 17 00:00:00 2001 From: leijurv Date: Wed, 23 Jul 2025 11:57:53 -0700 Subject: [PATCH 14/14] format --- .../pathing/movement/movements/MovementDiagonal.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 89f5c2118..e7d74f03e 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -146,8 +146,7 @@ public class MovementDiagonal extends Movement { } else if (context.allowWalkOnMagmaBlocks && destWalkOn.is(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; - } - else if (frostWalker) { + } else if (frostWalker) { // frostwalker lets us walk on water without the penalty } else if (destWalkOn.getBlock() == Blocks.WATER) { multiplier += context.walkOnWaterOnePenalty * SQRT_2; @@ -158,8 +157,7 @@ public class MovementDiagonal extends Movement { } if (fromDownBlock == Blocks.SOUL_SAND) { multiplier += (WALK_ONE_OVER_SOUL_SAND_COST - WALK_ONE_BLOCK_COST) / 2; - } - else if (context.allowWalkOnMagmaBlocks && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { + } else if (context.allowWalkOnMagmaBlocks && fromDownBlock.equals(Blocks.MAGMA_BLOCK)) { multiplier += (SNEAK_ONE_BLOCK_COST - WALK_ONE_BLOCK_COST) / 2; sneaking = true; }