diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/BurnerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/BurnerOverlay.java index 16c8d4edc3..0594e86dd5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/BurnerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/BurnerOverlay.java @@ -64,12 +64,7 @@ class BurnerOverlay extends Overlay plugin.getIncenseBurners().forEach((tile, burner) -> { - if (tile.getPlane() != client.getPlane()) - { - return; - } - - if (!PohPlugin.BURNER_LIT.contains(burner.getId())) + if (tile.getPlane() != client.getPlane() || !burner.isLit()) { return; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/IncenseBurner.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/IncenseBurner.java index c47f9bfe14..0679dc6474 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/IncenseBurner.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/IncenseBurner.java @@ -25,20 +25,22 @@ package net.runelite.client.plugins.poh; import java.time.Instant; -import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.Setter; @Getter @Setter -@RequiredArgsConstructor -@AllArgsConstructor class IncenseBurner { - private final Instant start = Instant.now(); - private final int id; + private Instant start; + private boolean lit; private double countdownTimer; private double randomTimer; private Instant end; + + void reset() + { + countdownTimer = 0; + randomTimer = 0; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java index d7d7181060..1cb0a21044 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.poh; import com.google.common.collect.Sets; import com.google.inject.Provides; import java.io.IOException; +import java.time.Instant; import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -49,7 +50,6 @@ import net.runelite.api.Tile; import net.runelite.api.TileObject; import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.AnimationChanged; -import net.runelite.client.events.ConfigChanged; import net.runelite.api.events.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.GameObjectDespawned; @@ -57,6 +57,7 @@ import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameStateChanged; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.events.ConfigChanged; import net.runelite.client.game.HiscoreManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -144,9 +145,11 @@ public class PohPlugin extends Plugin return; } - final double countdownTimer = 130.0; // Minimum amount of seconds a burner will light - final double randomTimer = 30.0; // Minimum amount of seconds a burner will light - incenseBurners.put(event.getTile(), new IncenseBurner(gameObject.getId(), countdownTimer, randomTimer, null)); + IncenseBurner incenseBurner = incenseBurners.computeIfAbsent(event.getTile(), k -> new IncenseBurner()); + incenseBurner.setStart(Instant.now()); + incenseBurner.setLit(BURNER_LIT.contains(gameObject.getId())); + incenseBurner.setEnd(null); + // The burner timers are set when observing a player light the burner } @Subscribe @@ -203,6 +206,7 @@ public class PohPlugin extends Plugin .ifPresent(tile -> { final IncenseBurner incenseBurner = incenseBurners.get(tile); + incenseBurner.reset(); if (actor == client.getLocalPlayer()) { @@ -245,6 +249,7 @@ public class PohPlugin extends Plugin { final double tickLengthSeconds = Constants.GAME_TICK_LENGTH / 1000.0; incenseBurner.setCountdownTimer((200 + fmLevel) * tickLengthSeconds); - incenseBurner.setRandomTimer(fmLevel * tickLengthSeconds); + incenseBurner.setRandomTimer((fmLevel - 1) * tickLengthSeconds); + log.debug("Set burner timer for firemaking level {}", fmLevel); } } \ No newline at end of file