Clear stored npcs in fishing/pc/rc plugins

Fixes #5970

This was originally attempted in 7eeb484c64 but
NPCs are not automatically despawned from a scene change, which causes eg. the
fishing plugin to lose fishing spots that are in view during a scene change.
This commit is contained in:
Adam
2019-02-24 20:18:31 -05:00
parent 01bfb8af19
commit 0821cf216d
3 changed files with 35 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ import net.runelite.api.NPC;
import net.runelite.api.Varbits;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.InteractingChanged;
import net.runelite.api.events.ItemContainerChanged;
@@ -143,6 +144,17 @@ public class FishingPlugin extends Plugin
currentSpot = null;
}
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
GameState gameState = gameStateChanged.getGameState();
if (gameState == GameState.CONNECTION_LOST || gameState == GameState.LOGIN_SCREEN || gameState == GameState.HOPPING)
{
fishingSpots.clear();
minnowSpots.clear();
}
}
@Subscribe
public void onItemContainerChanged(ItemContainerChanged event)
{

View File

@@ -35,12 +35,14 @@ import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.NpcID;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -87,6 +89,16 @@ public class PestControlPlugin extends Plugin
spinners.clear();
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
GameState gameState = event.getGameState();
if (gameState == GameState.CONNECTION_LOST || gameState == GameState.LOGIN_SCREEN || gameState == GameState.HOPPING)
{
spinners.clear();
}
}
@Subscribe
public void onChatMessage(ChatMessage chatMessage)
{

View File

@@ -229,9 +229,17 @@ public class RunecraftPlugin extends Plugin
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
if (event.getGameState() == GameState.LOADING)
GameState gameState = event.getGameState();
switch (gameState)
{
abyssObjects.clear();
case LOADING:
abyssObjects.clear();
break;
case CONNECTION_LOST:
case HOPPING:
case LOGIN_SCREEN:
darkMage = null;
break;
}
}