From f38fc1e49ad8db10f2072282e1ac3835b12e027f Mon Sep 17 00:00:00 2001 From: Vladichka Date: Mon, 15 Dec 2025 01:24:26 +0200 Subject: [PATCH] Fix notification spam when autodrink works, notify every 15 seconds instead --- src/haven/CFG.java | 1 + src/haven/bot/AutoDrink.java | 7 +++++-- src/me/ender/ui/DrinkMeter.java | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/haven/CFG.java b/src/haven/CFG.java index bd2444fa78..3a20e1f8cf 100644 --- a/src/haven/CFG.java +++ b/src/haven/CFG.java @@ -197,6 +197,7 @@ public class CFG { public static final CFG AUTO_DRINK_ENABLED = new CFG<>("automation.autodrink.enabled", false); public static final CFG AUTO_DRINK_THRESHOLD = new CFG<>("automation.autodrink.threshold", 74); public static final CFG AUTO_DRINK_DELAY = new CFG<>("automation.autodrink.delay", 250); + public static final CFG AUTO_DRINK_FORCED_INTERVAL = new CFG<>("automation.autodrink.forced_interval", 15000); private static final String CONFIG_JSON = "config.json"; private static final Map cfg; diff --git a/src/haven/bot/AutoDrink.java b/src/haven/bot/AutoDrink.java index caab1b9754..1befc6970d 100644 --- a/src/haven/bot/AutoDrink.java +++ b/src/haven/bot/AutoDrink.java @@ -11,6 +11,7 @@ public class AutoDrink { GameUI gui = null; long lastDrinkTime = 0; + public float carried_drinks = 0; private AutoDrink(){} @@ -49,8 +50,10 @@ public void tick(Gob gob) { if (meter != null) { double currentStamina = meter.meter(0); if (currentStamina >= 0 && currentStamina < (autoDrinkThreshold / 100f)) { - lastDrinkTime = currentTime; - gui.wdgmsg("act", "drink"); + if (carried_drinks > 0 || currentTime - lastDrinkTime > CFG.AUTO_DRINK_FORCED_INTERVAL.get()) { + lastDrinkTime = currentTime; + gui.wdgmsg("act", "drink"); + } } } } diff --git a/src/me/ender/ui/DrinkMeter.java b/src/me/ender/ui/DrinkMeter.java index 07e60a1ed5..2a21bc8663 100644 --- a/src/me/ender/ui/DrinkMeter.java +++ b/src/me/ender/ui/DrinkMeter.java @@ -2,6 +2,7 @@ import auto.InvHelper; import haven.*; +import haven.bot.AutoDrink; import java.awt.*; import java.util.List; @@ -109,6 +110,10 @@ private boolean process() { max += ItemData.getMaxCapacity(item) / 100f; } + // a bit hacky but I wanted to avoid repeated inventory inspection + // TODO: make option to drink tea (will require flower menu which interferes with controls) + AutoDrink.getInstance().carried_drinks = water; + return true; }