From 899ccc4ad21d00b12191ace52cf3bbf7ec50e5e4 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 3 Apr 2018 22:06:33 +0200 Subject: [PATCH 1/3] runelite-api: expose item composition placeholder ids --- .../java/net/runelite/api/ItemComposition.java | 17 +++++++++++++++++ .../net/runelite/rs/api/RSItemComposition.java | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java b/runelite-api/src/main/java/net/runelite/api/ItemComposition.java index b314cd7dac..7fc0efda3e 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemComposition.java @@ -58,6 +58,23 @@ public interface ItemComposition */ int getLinkedNoteId(); + /** + * Returns the item ID of the normal/placeholder counterpart. For example, if + * you call this on a monkfish(ID 7946), this method will + * return the ID of a placeholder monkfish(ID 17065), and vice versa. + * + * @return the ID that is linked to this item in normal/placeholder form. + */ + int getPlaceholderId(); + + /** + * Returns a result that depends on whether the item is in placeholder form or + * not. + * + * @return 14401 if placeholder, -1 if normal + */ + int getPlaceholderTemplateId(); + /** * Returns the store price of the item. Even if the item cannot be found * in a store, all items have a store price from which the High and Low diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java index 8d48957b1a..8e63e8e2ba 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java @@ -50,6 +50,14 @@ public interface RSItemComposition extends ItemComposition @Override int getLinkedNoteId(); + @Import("placeholderId") + @Override + int getPlaceholderId(); + + @Import("placeholderTemplateId") + @Override + int getPlaceholderTemplateId(); + @Import("price") @Override int getPrice(); From b33b3118647c27a670e45c723ca78d89ba621032 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 3 Apr 2018 22:17:41 +0200 Subject: [PATCH 2/3] runelite-client: fix bank tags search for placeholder items --- .../plugins/banktags/BankTagsPlugin.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java index 832382aff2..16d2c5a2a6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java @@ -33,6 +33,7 @@ import net.runelite.api.Client; import net.runelite.api.IntegerNode; import net.runelite.api.InventoryID; import net.runelite.api.Item; +import net.runelite.api.ItemComposition; import net.runelite.api.ItemContainer; import net.runelite.api.MenuAction; import net.runelite.api.events.MenuOptionClicked; @@ -155,6 +156,13 @@ public class BankTagsPlugin extends Plugin String itemName = stringStack[stringStackSize - 2]; String searchInput = stringStack[stringStackSize - 1]; + ItemComposition itemComposition = itemManager.getItemComposition(itemId); + if (itemComposition.getPlaceholderTemplateId() != -1) + { + // if the item is a placeholder then get the item id for the normal item + itemId = itemComposition.getPlaceholderId(); + } + String tagsConfig = configManager.getConfiguration(CONFIG_GROUP, ITEM_KEY_PREFIX + itemId); if (tagsConfig == null || tagsConfig.length() == 0) { @@ -211,8 +219,20 @@ public class BankTagsPlugin extends Plugin { return; } - int itemId = item.getId(); - String itemName = itemManager.getItemComposition(itemId).getName(); + ItemComposition itemComposition = itemManager.getItemComposition(item.getId()); + int itemId; + if (itemComposition.getPlaceholderTemplateId() != -1) + { + // if the item is a placeholder then get the item id for the normal item + itemId = itemComposition.getPlaceholderId(); + } + else + { + itemId = item.getId(); + } + + String itemName = itemComposition.getName(); + String initialValue = getTags(itemId); chatboxInputManager.openInputWindow(itemName + " Tags", initialValue, (newTags) -> From 232a363ba9d870d5bad995a5558c9580bc646d16 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 3 Apr 2018 22:26:04 +0200 Subject: [PATCH 3/3] runelite-client: only update the actions if the item id matches --- .../net/runelite/client/plugins/banktags/BankTagsPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java index 16d2c5a2a6..0eafa69f5d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java @@ -254,7 +254,8 @@ public class BankTagsPlugin extends Plugin } Widget bankItemWidget = bankItemWidgets[inventoryIndex]; String[] actions = bankItemWidget.getActions(); - if (actions == null || EDIT_TAGS_MENU_INDEX - 1 >= actions.length) + if (actions == null || EDIT_TAGS_MENU_INDEX - 1 >= actions.length + || itemId != bankItemWidget.getItemId()) { return; }