From 8ac57c8da3facd67c2332807a31b2d4ceb97d655 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Fri, 9 Aug 2024 13:54:29 +0200 Subject: [PATCH 1/5] Fix selection box aabbs (cherry picked from commit e682fc75a6fd5156b4d52a97efd430e31a8f5a49) --- src/main/java/baritone/selection/Selection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/selection/Selection.java b/src/main/java/baritone/selection/Selection.java index 69c77d668..116e048c5 100644 --- a/src/main/java/baritone/selection/Selection.java +++ b/src/main/java/baritone/selection/Selection.java @@ -37,7 +37,7 @@ public class Selection implements ISelection { max.z - min.z + 1 ); - this.aabb = new AABB(this.min); + this.aabb = new AABB(min.x, min.y, min.z, max.x + 1, max.y + 1, max.z + 1); } @Override From 249f93877c6cbcc90707e84c93b82334d0f872a0 Mon Sep 17 00:00:00 2001 From: Wagyourtail Date: Mon, 17 Jun 2024 00:10:58 -0500 Subject: [PATCH 2/5] fix neoforge and forge for 1.20.4 cherry picked, squashed and adapted from commits 74d82f23398cad94e900243bafc8f9fc4d004e1b and 81f7375591dd7b5539c60edec0f9eb3004591faa --- buildSrc/build.gradle | 2 +- .../mixins/MixinClientPlayerEntity.java | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index a58fe6089..a6855791f 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -40,5 +40,5 @@ dependencies { implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0' implementation group: 'commons-io', name: 'commons-io', version: '2.7' - implementation group: 'xyz.wagyourtail.unimined', name: 'xyz.wagyourtail.unimined.gradle.plugin', version: '1.1.0' + implementation group: 'xyz.wagyourtail.unimined', name: 'xyz.wagyourtail.unimined.gradle.plugin', version: '1.2.9' } \ No newline at end of file diff --git a/src/launch/java/baritone/launch/mixins/MixinClientPlayerEntity.java b/src/launch/java/baritone/launch/mixins/MixinClientPlayerEntity.java index 24e807f62..9f59a9adc 100644 --- a/src/launch/java/baritone/launch/mixins/MixinClientPlayerEntity.java +++ b/src/launch/java/baritone/launch/mixins/MixinClientPlayerEntity.java @@ -27,17 +27,37 @@ import net.minecraft.client.KeyMapping; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.entity.player.Abilities; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Group; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + /** * @author Brady * @since 8/1/2018 */ @Mixin(LocalPlayer.class) public class MixinClientPlayerEntity { + @Unique + private static final MethodHandle MAY_FLY = baritone$resolveMayFly(); + + @Unique + private static MethodHandle baritone$resolveMayFly() { + try { + var lookup = MethodHandles.publicLookup(); + return lookup.findVirtual(LocalPlayer.class, "mayFly", MethodType.methodType(boolean.class)); + } catch (NoSuchMethodException e) { + return null; + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } @Inject( method = "tick", @@ -61,6 +81,7 @@ public class MixinClientPlayerEntity { target = "net/minecraft/world/entity/player/Abilities.mayfly:Z" ) ) + @Group(name = "mayFly", min = 1, max = 1) private boolean isAllowFlying(Abilities capabilities) { IBaritone baritone = BaritoneAPI.getProvider().getBaritoneForPlayer((LocalPlayer) (Object) this); if (baritone == null) { @@ -69,6 +90,22 @@ public class MixinClientPlayerEntity { return !baritone.getPathingBehavior().isPathing() && capabilities.mayfly; } + @Redirect( + method = "aiStep", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/player/LocalPlayer;mayFly()Z" + ) + ) + @Group(name = "mayFly", min = 1, max = 1) + private boolean onMayFlyNeoforge(LocalPlayer instance) throws Throwable { + IBaritone baritone = BaritoneAPI.getProvider().getBaritoneForPlayer((LocalPlayer) (Object) this); + if (baritone == null) { + return (boolean) MAY_FLY.invokeExact(instance); + } + return !baritone.getPathingBehavior().isPathing() && (boolean) MAY_FLY.invokeExact(instance); + } + @Redirect( method = "aiStep", at = @At( From 40e83423bc64e5beb562af5dd9167afc0a239c9c Mon Sep 17 00:00:00 2001 From: Murat Bayraktar Date: Sat, 10 May 2025 05:36:17 +0000 Subject: [PATCH 3/5] Update build limits (#4736) * Update minimum build limit * Update MovementDescend.java to work for any minimum height * Update RenderCommand.java for dynamic build heights. * Fix so it actually compiles. * Small syntax change. * Simpler formatting * Fix more height issues. * Remove allowJumpAt256 as redundant. * Remove allowJumpAt256 as redundant. * Update CalculationContext.java * Update Settings.java * Update Settings.java * Deprecate allowJumpAt256. * Re-introduce build limit jump setting. * Update MovementParkour.java * Update CalculationContext.java * Update Settings.java * Update CalculationContext.java * Update src/api/java/baritone/api/Settings.java Co-authored-by: ZacSharp <68165024+ZacSharp@users.noreply.github.com> --------- Co-authored-by: Murat65536 Co-authored-by: ZacSharp <68165024+ZacSharp@users.noreply.github.com> --- src/api/java/baritone/api/Settings.java | 7 +++++++ src/main/java/baritone/command/defaults/RenderCommand.java | 4 ++-- src/main/java/baritone/command/defaults/TunnelCommand.java | 2 +- .../java/baritone/pathing/movement/CalculationContext.java | 4 ++-- .../pathing/movement/movements/MovementDescend.java | 4 ++-- .../pathing/movement/movements/MovementParkour.java | 3 +-- .../baritone/utils/BlockStateInterfaceAccessWrapper.java | 4 ++-- 7 files changed, 17 insertions(+), 11 deletions(-) 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/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 c46cf68bd..d1f56ed81 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..a388e4333 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.getMaxBuildHeight(); } @Override public int getMinBuildHeight() { - return 0; + return bsi.world.getMinBuildHeight(); } } From f86f0ab6cdd4e7f93302ac3b692663f7d61411e3 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Sat, 10 May 2025 15:51:20 +0200 Subject: [PATCH 4/5] Fix height vs. max build height mixup --- .../java/baritone/utils/BlockStateInterfaceAccessWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java b/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java index a388e4333..9f4bddf12 100644 --- a/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java +++ b/src/main/java/baritone/utils/BlockStateInterfaceAccessWrapper.java @@ -56,7 +56,7 @@ public final class BlockStateInterfaceAccessWrapper implements BlockGetter { @Override public int getHeight() { - return bsi.world.getMaxBuildHeight(); + return bsi.world.getHeight(); } @Override From 31b30e3a3179897c9eb7d1532264e91b6fa055a7 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Sat, 10 May 2025 20:24:26 +0200 Subject: [PATCH 5/5] Migrate `allowJumpAt256` to `allowJumpAtBuildLimit` in settings files --- src/api/java/baritone/api/utils/SettingsUtil.java | 4 ++++ 1 file changed, 4 insertions(+) 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) {