diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java
index 44dabae2a..d008007ce 100644
--- a/src/api/java/baritone/api/Settings.java
+++ b/src/api/java/baritone/api/Settings.java
@@ -185,6 +185,13 @@ public final class Settings {
*
* Defaults to false because this fails on constantiam. Please let me know if this is ever disabled. Please.
*/
+ public final Setting allowJumpAtBuildLimit = new Setting<>(false);
+
+ /**
+ * Just here so mods that use the API don't break. Does nothing.
+ */
+ @Deprecated
+ @JavaOnly
public final Setting allowJumpAt256 = new Setting<>(false);
/**
diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java
index 7a18b61c3..57ba8af90 100644
--- a/src/api/java/baritone/api/utils/SettingsUtil.java
+++ b/src/api/java/baritone/api/utils/SettingsUtil.java
@@ -83,6 +83,10 @@ public class SettingsUtil {
String settingName = matcher.group("setting").toLowerCase();
String settingValue = matcher.group("value");
+ // TODO remove soonish
+ if ("allowjumpat256".equals(settingName)) {
+ settingName = "allowjumpatbuildlimit";
+ }
try {
parseAndApply(settings, settingName, settingValue);
} catch (Exception ex) {
diff --git a/src/main/java/baritone/command/defaults/RenderCommand.java b/src/main/java/baritone/command/defaults/RenderCommand.java
index 543c3387c..308391241 100644
--- a/src/main/java/baritone/command/defaults/RenderCommand.java
+++ b/src/main/java/baritone/command/defaults/RenderCommand.java
@@ -40,10 +40,10 @@ public class RenderCommand extends Command {
int renderDistance = (ctx.minecraft().options.renderDistance().get() + 1) * 16;
ctx.minecraft().levelRenderer.setBlocksDirty(
origin.x - renderDistance,
- 0,
+ ctx.world().getMinBuildHeight(),
origin.z - renderDistance,
origin.x + renderDistance,
- 255,
+ ctx.world().getMaxBuildHeight(),
origin.z + renderDistance
);
logDirect("Done");
diff --git a/src/main/java/baritone/command/defaults/TunnelCommand.java b/src/main/java/baritone/command/defaults/TunnelCommand.java
index dec304a03..9e1cca1cb 100644
--- a/src/main/java/baritone/command/defaults/TunnelCommand.java
+++ b/src/main/java/baritone/command/defaults/TunnelCommand.java
@@ -44,7 +44,7 @@ public class TunnelCommand extends Command {
int width = Integer.parseInt(args.getArgs().get(1).getValue());
int depth = Integer.parseInt(args.getArgs().get(2).getValue());
- if (width < 1 || height < 2 || depth < 1 || height > 255) {
+ if (width < 1 || height < 2 || depth < 1 || height > ctx.world().getMaxBuildHeight()){
logDirect("Width and depth must at least be 1 block; Height must at least be 2 blocks, and cannot be greater than the build limit.");
cont = false;
}
diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java
index e84188a7f..ffd1a2fca 100644
--- a/src/main/java/baritone/pathing/movement/CalculationContext.java
+++ b/src/main/java/baritone/pathing/movement/CalculationContext.java
@@ -63,7 +63,7 @@ public class CalculationContext {
public final List allowBreakAnyway;
public final boolean allowParkour;
public final boolean allowParkourPlace;
- public final boolean allowJumpAt256;
+ public final boolean allowJumpAtBuildLimit;
public final boolean allowParkourAscend;
public final boolean assumeWalkOnWater;
public boolean allowFallIntoLava;
@@ -104,7 +104,7 @@ public class CalculationContext {
this.allowBreakAnyway = new ArrayList<>(Baritone.settings().allowBreakAnyway.value);
this.allowParkour = Baritone.settings().allowParkour.value;
this.allowParkourPlace = Baritone.settings().allowParkourPlace.value;
- this.allowJumpAt256 = Baritone.settings().allowJumpAt256.value;
+ this.allowJumpAtBuildLimit = Baritone.settings().allowJumpAtBuildLimit.value;
this.allowParkourAscend = Baritone.settings().allowParkourAscend.value;
this.assumeWalkOnWater = Baritone.settings().assumeWalkOnWater.value;
this.allowFallIntoLava = false; // Super secret internal setting for ElytraBehavior
diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java
index 07d6d7d01..0b84ef4db 100644
--- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java
+++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java
@@ -147,9 +147,9 @@ public class MovementDescend extends Movement {
int effectiveStartHeight = y;
for (int fallHeight = 3; true; fallHeight++) {
int newY = y - fallHeight;
- if (newY < 0) {
+ if (newY < context.world.getMinBuildHeight()) {
// when pathing in the end, where you could plausibly fall into the void
- // this check prevents it from getting the block at y=-1 and crashing
+ // this check prevents it from getting the block at y=(below whatever the minimum height is) and crashing
return false;
}
boolean reachedMinimum = fallHeight >= context.minFallHeight;
diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java
index 1fa150a21..1e04b6842 100644
--- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java
+++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java
@@ -64,10 +64,9 @@ public class MovementParkour extends Movement {
if (!context.allowParkour) {
return;
}
- if (y == 256 && !context.allowJumpAt256) {
+ if (!context.allowJumpAtBuildLimit && y >= context.world.getMaxBuildHeight()) {
return;
}
-
int xDiff = dir.getStepX();
int zDiff = dir.getStepZ();
if (!MovementHelper.fullyPassable(context, x + xDiff, y, z + zDiff)) {
diff --git a/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java b/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java
index 19b04b454..9f4bddf12 100644
--- a/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java
+++ b/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java
@@ -56,12 +56,12 @@ public final class BlockStateInterfaceAccessWrapper implements BlockGetter {
@Override
public int getHeight() {
- return 255;
+ return bsi.world.getHeight();
}
@Override
public int getMinBuildHeight() {
- return 0;
+ return bsi.world.getMinBuildHeight();
}
}