Merge pull request #5268 from deathbeam/fishing-with-fish-stuff

Show fishing overlays only when player can fish
This commit is contained in:
Tomas Slusny
2018-09-03 08:09:03 +02:00
committed by GitHub
3 changed files with 83 additions and 13 deletions

View File

@@ -80,6 +80,7 @@ class FishingOverlay extends Overlay
if (sinceCaught.compareTo(statTimeout) >= 0) if (sinceCaught.compareTo(statTimeout) >= 0)
{ {
session.setLastFishCaught(null);
return null; return null;
} }

View File

@@ -42,11 +42,15 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; 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.NPC;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcDespawned;
import net.runelite.api.queries.NPCQuery; import net.runelite.api.queries.NPCQuery;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
@@ -69,6 +73,9 @@ public class FishingPlugin extends Plugin
{ {
private final List<Integer> spotIds = new ArrayList<>(); private final List<Integer> spotIds = new ArrayList<>();
@Getter(AccessLevel.PACKAGE)
private final FishingSession session = new FishingSession();
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private Map<Integer, MinnowSpot> minnowSpots = new HashMap<>(); private Map<Integer, MinnowSpot> minnowSpots = new HashMap<>();
@@ -96,8 +103,6 @@ public class FishingPlugin extends Plugin
@Inject @Inject
private FishingSpotMinimapOverlay fishingSpotMinimapOverlay; private FishingSpotMinimapOverlay fishingSpotMinimapOverlay;
private final FishingSession session = new FishingSession();
@Provides @Provides
FishingConfig provideConfig(ConfigManager configManager) FishingConfig provideConfig(ConfigManager configManager)
{ {
@@ -108,8 +113,6 @@ public class FishingPlugin extends Plugin
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay); overlayManager.add(overlay);
overlayManager.add(spotOverlay);
overlayManager.add(fishingSpotMinimapOverlay);
updateConfig(); updateConfig();
} }
@@ -122,9 +125,76 @@ public class FishingPlugin extends Plugin
minnowSpots.clear(); 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 @Subscribe
@@ -137,7 +207,9 @@ public class FishingPlugin extends Plugin
if (event.getMessage().contains("You catch a") || event.getMessage().contains("You catch some")) 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);
} }
} }

View File

@@ -26,14 +26,11 @@ package net.runelite.client.plugins.fishing;
import java.time.Instant; import java.time.Instant;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
public class FishingSession class FishingSession
{ {
@Getter @Getter
@Setter
private Instant lastFishCaught; private Instant lastFishCaught;
public void setLastFishCaught()
{
lastFishCaught = Instant.now();
}
} }