From aa8773a67e185c36bbf3e8bd83aecf37696d88f3 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Wed, 6 Feb 2019 20:54:07 -0800 Subject: [PATCH 1/2] fixes to sprinting through descend and diagonal --- .../movement/movements/MovementDescend.java | 8 ++++++-- .../movement/movements/MovementDiagonal.java | 14 +++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index aeb4e138f..4f1bce4d6 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -210,8 +210,8 @@ public class MovementDescend extends Movement { }*/ } if (safeMode()) { - double destX = (src.getX() + 0.5) * 0.19 + (dest.getX() + 0.5) * 0.81; - double destZ = (src.getZ() + 0.5) * 0.19 + (dest.getZ() + 0.5) * 0.81; + double destX = (src.getX() + 0.5) * 0.17 + (dest.getX() + 0.5) * 0.83; + double destZ = (src.getZ() + 0.5) * 0.17 + (dest.getZ() + 0.5) * 0.83; EntityPlayerSP player = ctx.player(); state.setTarget(new MovementState.MovementTarget( new Rotation(RotationUtils.calcRotationFromVec3d(player.getPositionEyes(1.0F), @@ -245,6 +245,10 @@ public class MovementDescend extends Movement { // (dest - src) + dest is offset 1 more in the same direction // so it's the block we'd need to worry about running into if we decide to sprint straight through this descend BlockPos into = dest.subtract(src.down()).add(dest); + if (!MovementHelper.canWalkThrough(ctx, new BetterBlockPos(into)) && MovementHelper.canWalkThrough(ctx, new BetterBlockPos(into).up()) && MovementHelper.canWalkThrough(ctx, new BetterBlockPos(into).up(2))) { + // if dest extends into can't walk through, but the two above are can walk through, then we can overshoot and glitch in that weird way + return true; + } for (int y = 0; y <= 2; y++) { // we could hit any of the three blocks if (MovementHelper.avoidWalkingInto(BlockStateInterface.getBlock(ctx, into.up(y)))) { return true; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 0abaccf7b..f34e9468f 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -173,13 +173,25 @@ public class MovementDiagonal extends Movement { state.setStatus(MovementStatus.SUCCESS); return state; } - if (!MovementHelper.isLiquid(ctx, ctx.playerFeet())) { + if (sprint()) { state.setInput(Input.SPRINT, true); } MovementHelper.moveTowards(ctx, state, dest); return state; } + public boolean sprint() { + if (MovementHelper.isLiquid(ctx, ctx.playerFeet())) { + return false; + } + for (int i = 0; i < 4; i++) { + if (!MovementHelper.canWalkThrough(ctx, positionsToBreak[i])) { + return false; + } + } + return true; + } + @Override protected boolean prepared(MovementState state) { return true; From b484e6fa3f53f1d2f2787bacbfe804ab3c172629 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Wed, 6 Feb 2019 21:00:53 -0800 Subject: [PATCH 2/2] literally disable the entire thing --- src/api/java/baritone/api/Settings.java | 7 +++++++ src/main/java/baritone/behavior/MemoryBehavior.java | 12 ++++++++++++ src/main/java/baritone/cache/ContainerMemory.java | 4 ++++ 3 files changed, 23 insertions(+) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index e8e397920..ecadb5711 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -378,6 +378,13 @@ public final class Settings { */ public final Setting pruneRegionsFromRAM = new Setting<>(false); + /** + * Remember the contents of containers (chests, echests, furnaces) + *

+ * Really buggy since the packet stuff is multithreaded badly thanks to brady + */ + public final Setting containerMemory = new Setting<>(false); + /** * Print all the debug messages to chat */ diff --git a/src/main/java/baritone/behavior/MemoryBehavior.java b/src/main/java/baritone/behavior/MemoryBehavior.java index d371116c3..390ac8592 100644 --- a/src/main/java/baritone/behavior/MemoryBehavior.java +++ b/src/main/java/baritone/behavior/MemoryBehavior.java @@ -65,6 +65,9 @@ public final class MemoryBehavior extends Behavior { @Override public synchronized void onTick(TickEvent event) { + if (!Baritone.settings().containerMemory.get()) { + return; + } if (event.getType() == TickEvent.Type.OUT) { enderChestWindowId = null; futureInventories.clear(); @@ -80,6 +83,9 @@ public final class MemoryBehavior extends Behavior { @Override public synchronized void onSendPacket(PacketEvent event) { + if (!Baritone.settings().containerMemory.get()) { + return; + } Packet p = event.getPacket(); if (event.getState() == EventState.PRE) { @@ -116,6 +122,9 @@ public final class MemoryBehavior extends Behavior { @Override public synchronized void onReceivePacket(PacketEvent event) { + if (!Baritone.settings().containerMemory.get()) { + return; + } Packet p = event.getPacket(); if (event.getState() == EventState.PRE) { @@ -162,6 +171,9 @@ public final class MemoryBehavior extends Behavior { private void updateInventory() { + if (!Baritone.settings().containerMemory.get()) { + return; + } int windowId = ctx.player().openContainer.windowId; if (enderChestWindowId != null) { if (windowId == enderChestWindowId) { diff --git a/src/main/java/baritone/cache/ContainerMemory.java b/src/main/java/baritone/cache/ContainerMemory.java index f2b69e5c6..466bf710f 100644 --- a/src/main/java/baritone/cache/ContainerMemory.java +++ b/src/main/java/baritone/cache/ContainerMemory.java @@ -17,6 +17,7 @@ package baritone.cache; +import baritone.Baritone; import baritone.api.cache.IContainerMemory; import baritone.api.cache.IRememberedInventory; import baritone.api.utils.IPlayerContext; @@ -69,6 +70,9 @@ public class ContainerMemory implements IContainerMemory { } public synchronized void save() throws IOException { + if (!Baritone.settings().containerMemory.get()) { + return; + } ByteBuf buf = Unpooled.buffer(0, Integer.MAX_VALUE); PacketBuffer out = new PacketBuffer(buf); out.writeInt(inventories.size());