Merge pull request #1493 from deathbeam/item-container-events
Hide clue scroll interface when no clue is present
This commit is contained in:
@@ -29,7 +29,6 @@ package net.runelite.client.plugins.cluescrolls;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
@@ -43,15 +42,20 @@ import net.runelite.api.GameObject;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemComposition;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Query;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.api.queries.GameObjectQuery;
|
||||
import net.runelite.api.queries.InventoryItemQuery;
|
||||
import net.runelite.api.queries.NPCQuery;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
|
||||
@@ -65,7 +69,6 @@ import net.runelite.client.plugins.cluescrolls.clues.MapClue;
|
||||
import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll;
|
||||
import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll;
|
||||
import net.runelite.client.plugins.cluescrolls.clues.TextClueScroll;
|
||||
import net.runelite.client.task.Schedule;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.util.QueryRunner;
|
||||
|
||||
@@ -96,6 +99,9 @@ public class ClueScrollPlugin extends Plugin
|
||||
@Getter
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private ItemManager itemManager;
|
||||
|
||||
@Inject
|
||||
private QueryRunner queryRunner;
|
||||
|
||||
@@ -131,19 +137,47 @@ public class ClueScrollPlugin extends Plugin
|
||||
clue = null;
|
||||
}
|
||||
|
||||
@Schedule(
|
||||
period = 600,
|
||||
unit = ChronoUnit.MILLIS
|
||||
)
|
||||
public void checkForClues()
|
||||
@Subscribe
|
||||
public void onItemContainerChanged(final ItemContainerChanged event)
|
||||
{
|
||||
if (client.getGameState() == GameState.LOGIN_SCREEN)
|
||||
// Check if item was removed from inventory
|
||||
if (clue != null && event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
|
||||
{
|
||||
client.clearHintArrow();
|
||||
clue = null;
|
||||
return;
|
||||
}
|
||||
final Item[] items = event.getItemContainer().getItems();
|
||||
boolean found = false;
|
||||
|
||||
// Clue was maybe removed from inventory, check if there is any clue scrolls left
|
||||
for (Item item : items)
|
||||
{
|
||||
final ItemComposition itemContainerDefinition = itemManager.getItemComposition(item.getId());
|
||||
|
||||
// Check if we have any clue scrolls left
|
||||
if (itemContainerDefinition.getName().startsWith("Clue scroll"))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
{
|
||||
resetClue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(final GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() == GameState.LOGIN_SCREEN)
|
||||
{
|
||||
resetClue();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(final GameTick event)
|
||||
{
|
||||
npcsToMark = null;
|
||||
objectsToMark = null;
|
||||
equippedItems = null;
|
||||
@@ -202,12 +236,22 @@ public class ClueScrollPlugin extends Plugin
|
||||
// so the clue window doesn't have to be open.
|
||||
if (clue != null)
|
||||
{
|
||||
client.clearHintArrow();
|
||||
if (clue != this.clue)
|
||||
{
|
||||
resetClue();
|
||||
}
|
||||
|
||||
this.clue = clue;
|
||||
this.clueTimeout = Instant.now();
|
||||
}
|
||||
}
|
||||
|
||||
private void resetClue()
|
||||
{
|
||||
clue = null;
|
||||
client.clearHintArrow();
|
||||
}
|
||||
|
||||
private ClueScroll findClueScroll()
|
||||
{
|
||||
Widget clueScrollText = client.getWidget(WidgetInfo.CLUE_SCROLL_TEXT);
|
||||
|
||||
Reference in New Issue
Block a user