diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index deef0797d5..b4d11c749c 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -101,6 +101,7 @@ public class WidgetID public static final int MTA_GRAVEYARD_GROUP_ID = 196; public static final int MTA_TELEKINETIC_GROUP_ID = 198; public static final int CORP_DAMAGE = 13; + public static final int DESTROY_ITEM_GROUP_ID = 584; static class WorldMap { @@ -518,4 +519,11 @@ public class WidgetID static final int BONUS_COMPONENT = 7; static final int BONUS_TEXT_COMPONENT = 12; } + + static class DestroyItem + { + static final int DESTROY_ITEM_NAME = 6; + static final int DESTROY_ITEM_YES = 1; + static final int DESTROY_ITEM_NO = 3; + } } diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index cf1e172051..30a1e6b24d 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -331,7 +331,12 @@ public enum WidgetInfo BLAST_MINE(WidgetID.BLAST_MINE_GROUP_ID, 0), MTA_ENCHANTMENT_BONUS_TEXT(WidgetID.MTA_ENCHANTMENT_GROUP_ID, WidgetID.MTA.BONUS_TEXT_COMPONENT), - MTA_ENCHANTMENT_BONUS(WidgetID.MTA_ENCHANTMENT_GROUP_ID, WidgetID.MTA.BONUS_COMPONENT); + MTA_ENCHANTMENT_BONUS(WidgetID.MTA_ENCHANTMENT_GROUP_ID, WidgetID.MTA.BONUS_COMPONENT), + + DESTROY_ITEM(WidgetID.DESTROY_ITEM_GROUP_ID, 0), + DESTROY_ITEM_NAME(WidgetID.DESTROY_ITEM_GROUP_ID, WidgetID.DestroyItem.DESTROY_ITEM_NAME), + DESTROY_ITEM_YES(WidgetID.DESTROY_ITEM_GROUP_ID, WidgetID.DestroyItem.DESTROY_ITEM_YES), + DESTROY_ITEM_NO(WidgetID.DESTROY_ITEM_GROUP_ID, WidgetID.DestroyItem.DESTROY_ITEM_NO); private final int groupId; private final int childId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java index 3e8e64acd2..afd3e9055d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java @@ -34,6 +34,7 @@ import javax.inject.Inject; import lombok.AccessLevel; import lombok.Getter; import net.runelite.api.ChatMessageType; +import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.GameState; import net.runelite.api.InventoryID; @@ -48,8 +49,11 @@ import net.runelite.api.events.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.MenuOptionClicked; 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.config.ConfigManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -62,6 +66,7 @@ import net.runelite.client.util.QueryRunner; public class RunecraftPlugin extends Plugin { private static Pattern bindNeckString = Pattern.compile("You have ([0-9]+) charges left before your Binding necklace disintegrates."); + private static final int DESTROY_ITEM_WIDGET_ID = WidgetInfo.DESTROY_ITEM_YES.getId(); @Getter(AccessLevel.PACKAGE) private final Set abyssObjects = new HashSet<>(); @@ -72,6 +77,9 @@ public class RunecraftPlugin extends Plugin @Getter(AccessLevel.PACKAGE) private NPC darkMage; + @Inject + private Client client; + @Inject private OverlayManager overlayManager; @@ -158,6 +166,23 @@ public class RunecraftPlugin extends Plugin } } + @Subscribe + public void onMenuOptionClicked(MenuOptionClicked event) + { + if (event.getWidgetId() != DESTROY_ITEM_WIDGET_ID) + { + return; + } + + Widget widgetDestroyItemName = client.getWidget(WidgetInfo.DESTROY_ITEM_NAME); + if (widgetDestroyItemName == null || !widgetDestroyItemName.getText().equals("Binding necklace")) + { + return; + } + + bindNeckOverlay.bindingCharges = 16; + } + @Subscribe public void onDecorativeObjectSpawn(DecorativeObjectSpawned event) {