From 06468e0e0ecbf2e76bec6f95ffb126939889c627 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Fri, 15 Feb 2019 10:25:27 -0700 Subject: [PATCH] WikiPlugin: Allow lookup of Objects --- .../client/plugins/wiki/WikiPlugin.java | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java index 2459f3a87a..2e4e37381e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java @@ -37,6 +37,8 @@ import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.NPC; import net.runelite.api.NPCComposition; +import net.runelite.api.ObjectComposition; +import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.WidgetLoaded; @@ -161,7 +163,7 @@ public class WikiPlugin extends Plugin icon.setOriginalHeight(16); icon.setTargetVerb("Lookup"); icon.setName("Wiki"); - icon.setClickMask(WidgetConfig.USE_GROUND_ITEM | WidgetConfig.USE_ITEM | WidgetConfig.USE_NPC); + icon.setClickMask(WidgetConfig.USE_GROUND_ITEM | WidgetConfig.USE_ITEM | WidgetConfig.USE_NPC | WidgetConfig.USE_OBJECT); icon.setNoClickThrough(true); icon.setOnTargetEnterListener((JavaScriptCallback) ev -> { @@ -201,6 +203,8 @@ public class WikiPlugin extends Plugin String type; int id; String name; + WorldPoint location; + switch (ev.getMenuAction()) { case CANCEL: @@ -211,6 +215,7 @@ public class WikiPlugin extends Plugin type = "item"; id = itemManager.canonicalize(ev.getId()); name = itemManager.getItemComposition(id).getName(); + location = null; break; } case SPELL_CAST_ON_NPC: @@ -220,6 +225,20 @@ public class WikiPlugin extends Plugin NPCComposition nc = npc.getTransformedComposition(); id = nc.getId(); name = nc.getName(); + location = npc.getWorldLocation(); + break; + } + case SPELL_CAST_ON_GAME_OBJECT: + { + type = "object"; + ObjectComposition lc = client.getObjectDefinition(ev.getId()); + if (lc.getImpostorIds() != null) + { + lc = lc.getImpostor(); + } + id = lc.getId(); + name = lc.getName(); + location = WorldPoint.fromScene(client, ev.getActionParam(), ev.getWidgetId(), client.getPlane()); break; } default: @@ -228,13 +247,20 @@ public class WikiPlugin extends Plugin } name = Text.removeTags(name); - - HttpUrl url = WIKI_RSLOOKUP.newBuilder() - .addQueryParameter("type", type) + HttpUrl.Builder urlBuilder = WIKI_RSLOOKUP.newBuilder(); + urlBuilder.addQueryParameter("type", type) .addQueryParameter("id", "" + id) .addQueryParameter("name", name) - .addQueryParameter(UTM_SORUCE_KEY, UTM_SORUCE_VALUE) - .build(); + .addQueryParameter(UTM_SORUCE_KEY, UTM_SORUCE_VALUE); + + if (location != null) + { + urlBuilder.addQueryParameter("x", "" + location.getX()) + .addQueryParameter("y", "" + location.getY()) + .addQueryParameter("plane", "" + location.getPlane()); + } + + HttpUrl url = urlBuilder.build(); LinkBrowser.browse(url.toString()); return;