Allow MenuOptionClicked events to be consumed
This commit is contained in:
@@ -36,4 +36,10 @@ public class MenuOptionClicked
|
||||
private MenuAction menuAction;
|
||||
private int id;
|
||||
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.
|
||||
* 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);
|
||||
|
||||
eventBus.post(menuOptionClicked);
|
||||
|
||||
return menuOptionClicked.isConsumed();
|
||||
}
|
||||
|
||||
public static void addChatMessage(int type, String name, String message, String sender)
|
||||
|
||||
@@ -102,4 +102,9 @@ public class Hooks
|
||||
{
|
||||
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.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.callback.Hooks;
|
||||
import static net.runelite.client.callback.Hooks.eventBus;
|
||||
import net.runelite.rs.api.RSClanMemberManager;
|
||||
import net.runelite.rs.api.RSClient;
|
||||
@@ -786,4 +787,20 @@ public abstract class RSClientMixin implements RSClient
|
||||
client.setHintArrowX(point.getX());
|
||||
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