diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 96e4c579..69b7e552 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -814,6 +814,11 @@ public final class Settings { */ public final Setting startAtLayer = new Setting<>(0); + /** + * If a layer is unable to be constructed, just skip it. + */ + public final Setting skipFailedLayers = new Setting<>(false); + /** * How far to move before repeating the build. 0 to disable repeating on a certain axis, 0,0,0 to disable entirely */ diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index e0dbe4c7..00d3831c 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -484,6 +484,11 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil if (goal == null) { goal = assemble(bcc, approxPlaceable); // we're far away, so assume that we have our whole inventory to recalculate placeable properly if (goal == null) { + if (Baritone.settings().skipFailedLayers.value && Baritone.settings().buildInLayers.value && layer < realSchematic.heightY()) { + logDirect("Skipping layer that I cannot construct! Layer #" + layer); + layer++; + return onTick(calcFailed, isSafeToCancel); + } logDirect("Unable to do it. Pausing. resume to resume, cancel to cancel"); paused = true; return new PathingCommand(null, PathingCommandType.REQUEST_PAUSE);