From 4c9253fa5e65ad62cf5ee079af50a07fd45f38c1 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:24:07 +0100 Subject: [PATCH] Add `placeIncorrectBlockPenaltyMultiplier` builder setting --- src/api/java/baritone/api/Settings.java | 5 +++++ src/main/java/baritone/process/BuilderProcess.java | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 5e33b39ba..9900ef8e9 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -1058,6 +1058,11 @@ public final class Settings { */ public final Setting breakCorrectBlockPenaltyMultiplier = new Setting<>(10d); + /** + * Multiply the cost of placing a block that's incorrect in the builder's schematic by this coefficient + */ + public final Setting placeIncorrectBlockPenaltyMultiplier = new Setting<>(2d); + /** * When this setting is true, build a schematic with the highest X coordinate being the origin, instead of the lowest */ diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 7c867c563..f09a469e7 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -1115,7 +1115,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil if (sch.getBlock() instanceof AirBlock) { // we want this to be air, but they're asking if they can place here // this won't be a schematic block, this will be a throwaway - return placeBlockCost * 2; // we're going to have to break it eventually + return placeBlockCost * Baritone.settings().placeIncorrectBlockPenaltyMultiplier.value; // we're going to have to break it eventually } if (placeable.contains(sch)) { return 0; // thats right we gonna make it FREE to place a block where it should go in a structure @@ -1128,7 +1128,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } // we want it to be something that we don't have // even more of a pain to place something wrong - return placeBlockCost * 3; + return placeBlockCost * 1.5 * Baritone.settings().placeIncorrectBlockPenaltyMultiplier.value; } else { if (hasThrowaway) { return placeBlockCost;