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());