From f6f764a0edd9591ae42c2d0a234a42118124e6d9 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 2 Sep 2018 22:50:38 +0200 Subject: [PATCH] Show fishing overlays only when player can fish Show fishing overlays only when player can actually fish (e.g is in fishing session or has fishing equipment). This drastically reduces noise for casual players. Signed-off-by: Tomas Slusny --- .../plugins/fishing/FishingOverlay.java | 1 + .../client/plugins/fishing/FishingPlugin.java | 86 +++++++++++++++++-- .../plugins/fishing/FishingSession.java | 9 +- 3 files changed, 83 insertions(+), 13 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java index 929037645b..3b012450e2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java @@ -80,6 +80,7 @@ class FishingOverlay extends Overlay if (sinceCaught.compareTo(statTimeout) >= 0) { + session.setLastFishCaught(null); return null; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java index 743e327b1a..f8bafc42a2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java @@ -42,11 +42,15 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; +import net.runelite.api.InventoryID; +import net.runelite.api.Item; +import net.runelite.api.ItemID; import net.runelite.api.NPC; import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.queries.NPCQuery; import net.runelite.client.config.ConfigManager; @@ -69,6 +73,9 @@ public class FishingPlugin extends Plugin { private final List spotIds = new ArrayList<>(); + @Getter(AccessLevel.PACKAGE) + private final FishingSession session = new FishingSession(); + @Getter(AccessLevel.PACKAGE) private Map minnowSpots = new HashMap<>(); @@ -96,8 +103,6 @@ public class FishingPlugin extends Plugin @Inject private FishingSpotMinimapOverlay fishingSpotMinimapOverlay; - private final FishingSession session = new FishingSession(); - @Provides FishingConfig provideConfig(ConfigManager configManager) { @@ -108,8 +113,6 @@ public class FishingPlugin extends Plugin protected void startUp() throws Exception { overlayManager.add(overlay); - overlayManager.add(spotOverlay); - overlayManager.add(fishingSpotMinimapOverlay); updateConfig(); } @@ -122,9 +125,76 @@ public class FishingPlugin extends Plugin minnowSpots.clear(); } - public FishingSession getSession() + @Subscribe + public void onItemContainerChanged(ItemContainerChanged event) { - return session; + boolean showOverlays = false; + + if (session.getLastFishCaught() != null) + { + showOverlays = true; + } + else if (event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY)) + { + for (Item item : event.getItemContainer().getItems()) + { + if (item == null) + { + continue; + } + + switch (item.getId()) + { + case ItemID.DRAGON_HARPOON: + case ItemID.INFERNAL_HARPOON: + case ItemID.INFERNAL_HARPOON_UNCHARGED: + case ItemID.HARPOON: + case ItemID.BARBTAIL_HARPOON: + case ItemID.BIG_FISHING_NET: + case ItemID.SMALL_FISHING_NET: + case ItemID.SMALL_FISHING_NET_6209: + case ItemID.FISHING_ROD: + case ItemID.FLY_FISHING_ROD: + case ItemID.BARBARIAN_ROD: + case ItemID.OILY_FISHING_ROD: + case ItemID.LOBSTER_POT: + case ItemID.KARAMBWAN_VESSEL: + case ItemID.KARAMBWAN_VESSEL_3159: + showOverlays = true; + break; + } + } + } + else if (event.getItemContainer() == client.getItemContainer(InventoryID.EQUIPMENT)) + { + for (Item item : event.getItemContainer().getItems()) + { + if (item == null) + { + continue; + } + + switch (item.getId()) + { + case ItemID.DRAGON_HARPOON: + case ItemID.INFERNAL_HARPOON: + case ItemID.INFERNAL_HARPOON_UNCHARGED: + showOverlays = true; + break; + } + } + } + + if (showOverlays) + { + overlayManager.add(spotOverlay); + overlayManager.add(fishingSpotMinimapOverlay); + } + else + { + overlayManager.remove(spotOverlay); + overlayManager.remove(fishingSpotMinimapOverlay); + } } @Subscribe @@ -137,7 +207,9 @@ public class FishingPlugin extends Plugin if (event.getMessage().contains("You catch a") || event.getMessage().contains("You catch some")) { - session.setLastFishCaught(); + session.setLastFishCaught(Instant.now()); + overlayManager.add(spotOverlay); + overlayManager.add(fishingSpotMinimapOverlay); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSession.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSession.java index 99ae01e999..ae1f387747 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSession.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSession.java @@ -26,14 +26,11 @@ package net.runelite.client.plugins.fishing; import java.time.Instant; import lombok.Getter; +import lombok.Setter; -public class FishingSession +class FishingSession { @Getter + @Setter private Instant lastFishCaught; - - public void setLastFishCaught() - { - lastFishCaught = Instant.now(); - } }