From ba1ccce9628e529814999f7f0fcf7cf9dc4461e3 Mon Sep 17 00:00:00 2001 From: Ic3Tank <61137113+IceTank@users.noreply.github.com> Date: Tue, 4 Feb 2025 22:04:21 +0100 Subject: [PATCH] Expose current layer in IBuilderProcess --- .../baritone/api/process/IBuilderProcess.java | 14 ++++++++++++++ .../java/baritone/process/BuilderProcess.java | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) 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++) {