diff --git a/src/api/java/baritone/api/process/IBuilderProcess.java b/src/api/java/baritone/api/process/IBuilderProcess.java index 77250ce73..67a3ed491 100644 --- a/src/api/java/baritone/api/process/IBuilderProcess.java +++ b/src/api/java/baritone/api/process/IBuilderProcess.java @@ -24,6 +24,7 @@ import net.minecraft.core.Vec3i; import net.minecraft.world.level.block.state.BlockState; import java.io.File; import java.util.List; +import java.util.Optional; /** * @author Brady @@ -74,4 +75,17 @@ public interface IBuilderProcess extends IBaritoneProcess { * cause it to give up. This is updated every tick, but only while the builder process is active. */ List getApproxPlaceable(); + /** + * Returns the lower bound of the current mining layer if mineInLayers is true. + * If mineInLayers is false, this will return an empty optional. + * @return The lower bound of the current mining layer + */ + Optional getMinLayer(); + + /** + * Returns the upper bound of the current mining layer if mineInLayers is true. + * If mineInLayers is false, this will return an empty optional. + * @return The upper bound of the current mining layer + */ + Optional getMaxLayer(); } diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 0265a49ce..7ecb211f5 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -998,6 +998,22 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil return paused ? "Builder Paused" : "Building " + name; } + @Override + public Optional getMinLayer() { + if (Baritone.settings().buildInLayers.value) { + return Optional.of(this.layer); + } + return Optional.empty(); + } + + @Override + public Optional getMaxLayer() { + if (Baritone.settings().buildInLayers.value) { + return Optional.of(this.stopAtHeight); + } + return Optional.empty(); + } + private List approxPlaceable(int size) { List result = new ArrayList<>(); for (int i = 0; i < size; i++) {