Allow MenuOptionClicked events to be consumed
This commit is contained in:
@@ -36,4 +36,10 @@ public class MenuOptionClicked
|
|||||||
private MenuAction menuAction;
|
private MenuAction menuAction;
|
||||||
private int id;
|
private int id;
|
||||||
private int widgetId;
|
private int widgetId;
|
||||||
|
private boolean consumed;
|
||||||
|
|
||||||
|
public void consume()
|
||||||
|
{
|
||||||
|
this.consumed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ public class Hooks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
public static boolean menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
||||||
{
|
{
|
||||||
/* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000.
|
/* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000.
|
||||||
* I have no idea why, but it does. Their code contains the same conditional statement.
|
* I have no idea why, but it does. Their code contains the same conditional statement.
|
||||||
@@ -360,6 +360,8 @@ public class Hooks
|
|||||||
log.debug("Menu action clicked: {}", menuOptionClicked);
|
log.debug("Menu action clicked: {}", menuOptionClicked);
|
||||||
|
|
||||||
eventBus.post(menuOptionClicked);
|
eventBus.post(menuOptionClicked);
|
||||||
|
|
||||||
|
return menuOptionClicked.isConsumed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addChatMessage(int type, String name, String message, String sender)
|
public static void addChatMessage(int type, String name, String message, String sender)
|
||||||
|
|||||||
@@ -102,4 +102,9 @@ public class Hooks
|
|||||||
{
|
{
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
||||||
|
{
|
||||||
|
throw new RuntimeException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ import net.runelite.api.mixins.Replace;
|
|||||||
import net.runelite.api.mixins.Shadow;
|
import net.runelite.api.mixins.Shadow;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
|
import net.runelite.client.callback.Hooks;
|
||||||
import static net.runelite.client.callback.Hooks.eventBus;
|
import static net.runelite.client.callback.Hooks.eventBus;
|
||||||
import net.runelite.rs.api.RSClanMemberManager;
|
import net.runelite.rs.api.RSClanMemberManager;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
@@ -786,4 +787,20 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
client.setHintArrowX(point.getX());
|
client.setHintArrowX(point.getX());
|
||||||
client.setHintArrowY(point.getY());
|
client.setHintArrowY(point.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Copy("menuAction")
|
||||||
|
static void rs$menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7)
|
||||||
|
{
|
||||||
|
throw new RuntimeException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Replace("menuAction")
|
||||||
|
static void rl$menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7)
|
||||||
|
{
|
||||||
|
if (Hooks.menuActionHook(var0, var1, var2, var3, var4, var5, var6, var7))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rs$menuAction(var0, var1, var2, var3, var4, var5, var6, var7);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user