Java源码示例:net.runelite.api.events.MenuOptionClicked
示例1
private void onMenuOptionClicked(MenuOptionClicked ev)
{
if (!pickerSelected)
{
return;
}
onPickerDeselect();
client.setSpellSelected(false);
ev.consume();
Object target = getWidgetOrWidgetItemForMenuOption(ev.getMenuOpcode().getId(), ev.getParam0(), ev.getParam1());
if (target == null)
{
return;
}
if (target instanceof WidgetItem)
{
WidgetItem iw = (WidgetItem) target;
setSelectedWidget(iw.getWidget(), iw.getIndex(), true);
}
else
{
setSelectedWidget((Widget) target, -1, true);
}
}
示例2
@Subscribe
private void onMenuOptionClicked(final MenuOptionClicked event)
{
if (event.getMenuOpcode() != MenuOpcode.RUNELITE)
{
return;
}
final String selectedMenu = Text.removeTags(event.getTarget());
if (event.getOption().equals(MENU_SET))
{
setTag(event.getIdentifier(), selectedMenu);
}
else if (event.getOption().equals(MENU_REMOVE))
{
unsetTag(event.getIdentifier());
}
}
示例3
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (!event.getOption().contains(MARK) && !event.getOption().contains(UNMARK))
{
return;
}
int group = 1;
Matcher m = GROUP_MATCHER.matcher(event.getOption());
if (m.matches())
{
group = Integer.parseInt(m.group(1));
}
Tile target = client.getSelectedSceneTile();
if (target == null)
{
return;
}
markTile(target.getLocalLocation(), group);
}
示例4
@Test
public void testItem()
{
when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
when(itemManager.getItemDefinition(anyInt())).thenReturn(mock(ItemDefinition.class));
MenuOptionClicked menuOptionClicked = new MenuOptionClicked(
"Examine",
"Something",
ItemID.ABYSSAL_WHIP,
MenuOpcode.EXAMINE_ITEM.getId(),
123,
456,
false
);
examinePlugin.onMenuOptionClicked(menuOptionClicked);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "A weapon from the abyss.", "", 0);
examinePlugin.onChatMessage(chatMessage);
// This passes due to not mocking the ItemDefinition for the whip
verify(examineClient).submitItem(anyInt(), anyString());
}
示例5
@Test
public void testLargeStacks()
{
when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
when(itemManager.getItemDefinition(anyInt())).thenReturn(mock(ItemDefinition.class));
MenuOptionClicked menuOptionClicked = new MenuOptionClicked(
"Examine",
"Something",
ItemID.ABYSSAL_WHIP,
MenuOpcode.EXAMINE_ITEM.getId(),
123,
456,
false
);
examinePlugin.onMenuOptionClicked(menuOptionClicked);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "100000 x Abyssal whip", "", 0);
examinePlugin.onChatMessage(chatMessage);
verify(examineClient, never()).submitItem(anyInt(), anyString());
}
示例6
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
if (!inHerbiboarArea || started || MenuOpcode.GAME_OBJECT_FIRST_OPTION != menuOpt.getMenuOpcode())
{
return;
}
switch (Text.removeTags(menuOpt.getTarget()))
{
case "Rock":
case "Mushroom":
case "Driftwood":
startPoint = WorldPoint.fromScene(client, menuOpt.getParam0(), menuOpt.getParam1(), client.getPlane());
}
}
示例7
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (event.getOpcode() != MenuOpcode.RUNELITE.getId() ||
!event.getOption().equals(TRANSLATE))
{
return;
}
String name =
Text.toJagexName(
Text.removeTags(event.getTarget(), true)
.toLowerCase()
);
playerNames.add(name);
config.playerNames(Text.toCSV(playerNames));
}
示例8
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked menu)
{
if (!inMlm)
{
return;
}
if (MINE_SPOTS.contains(menu.getIdentifier()) && menu.getMenuOpcode() == MenuOpcode.GAME_OBJECT_FIRST_OPTION)
{
resetIdleChecks();
int veinX = menu.getParam0();
int veinY = menu.getParam1();
targetVeinLocation = WorldPoint.fromScene(client, veinX, veinY, client.getPlane());
}
}
示例9
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
final String menuOption = event.getOption();
// The menu option for clear history is "<col=ffff00>Public:</col> Clear history"
if (menuOption.endsWith(CLEAR_HISTORY))
{
clearChatboxHistory(ChatboxTab.of(event.getParam1()));
}
else if (COPY_TO_CLIPBOARD.equals(menuOption) && !Strings.isNullOrEmpty(currentMessage))
{
final StringSelection stringSelection = new StringSelection(Text.removeTags(currentMessage));
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
}
示例10
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOptionClicked)
{
if (menuOptionClicked.getMenuAction() != MenuAction.RUNELITE_INFOBOX)
{
return;
}
InfoBox infoBox = hoveredComponent.getInfoBox();
OverlayMenuEntry overlayMenuEntry = infoBox.getMenuEntries().stream()
.filter(me -> me.getOption().equals(menuOptionClicked.getMenuOption()))
.findAny()
.orElse(null);
if (overlayMenuEntry != null)
{
eventBus.post(new InfoBoxMenuClicked(overlayMenuEntry, infoBox));
}
}
示例11
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
MenuAction menuAction = event.getMenuAction();
if (menuAction != MenuAction.RUNELITE_OVERLAY && menuAction != MenuAction.RUNELITE_OVERLAY_CONFIG)
{
return;
}
event.consume();
Overlay overlay = overlays.get(event.getId());
if (overlay != null)
{
List<OverlayMenuEntry> menuEntries = overlay.getMenuEntries();
OverlayMenuEntry overlayMenuEntry = menuEntries.stream()
.filter(me -> me.getOption().equals(event.getMenuOption()))
.findAny()
.orElse(null);
if (overlayMenuEntry != null)
{
eventBus.post(new OverlayMenuClicked(overlayMenuEntry, overlay));
}
}
}
示例12
@Subscribe
public void onMenuOptionClicked(final MenuOptionClicked event)
{
if (event.getMenuAction() != MenuAction.RUNELITE)
{
return;
}
final String selectedMenu = Text.removeTags(event.getMenuTarget());
if (event.getMenuOption().equals(MENU_SET))
{
setTag(event.getId(), selectedMenu);
}
else if (event.getMenuOption().equals(MENU_REMOVE))
{
unsetTag(event.getId());
}
}
示例13
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
if (!inHerbiboarArea || started || MenuAction.GAME_OBJECT_FIRST_OPTION != menuOpt.getMenuAction())
{
return;
}
switch (Text.removeTags(menuOpt.getMenuTarget()))
{
case "Rock":
case "Mushroom":
case "Driftwood":
startPoint = WorldPoint.fromScene(client, menuOpt.getActionParam(), menuOpt.getWidgetId(), client.getPlane());
}
}
示例14
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
if (event.getMenuAction().getId() != MenuAction.RUNELITE.getId() ||
!(event.getMenuOption().equals(MARK) || event.getMenuOption().equals(UNMARK)))
{
return;
}
Tile target = client.getSelectedSceneTile();
if (target == null)
{
return;
}
markTile(target.getLocalLocation());
}
示例15
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
final String menuOption = event.getMenuOption();
// The menu option for clear history is "<col=ffff00>Public:</col> Clear history"
if (menuOption.endsWith(CLEAR_HISTORY))
{
clearChatboxHistory(ChatboxTab.of(event.getWidgetId()));
}
else if (COPY_TO_CLIPBOARD.equals(menuOption) && !Strings.isNullOrEmpty(currentMessage))
{
final StringSelection stringSelection = new StringSelection(Text.removeTags(currentMessage));
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
}
示例16
@Test
public void testItem()
{
when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
when(itemManager.getItemComposition(anyInt())).thenReturn(mock(ItemComposition.class));
MenuOptionClicked menuOptionClicked = new MenuOptionClicked();
menuOptionClicked.setMenuOption("Examine");
menuOptionClicked.setMenuAction(MenuAction.EXAMINE_ITEM);
menuOptionClicked.setId(ItemID.ABYSSAL_WHIP);
examinePlugin.onMenuOptionClicked(menuOptionClicked);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "A weapon from the abyss.", "", 0);
examinePlugin.onChatMessage(chatMessage);
// This passes due to not mocking the ItemComposition for the whip
verify(examineClient).submitItem(anyInt(), anyString());
}
示例17
@Test
public void testLargeStacks()
{
when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
when(itemManager.getItemComposition(anyInt())).thenReturn(mock(ItemComposition.class));
MenuOptionClicked menuOptionClicked = new MenuOptionClicked();
menuOptionClicked.setMenuOption("Examine");
menuOptionClicked.setMenuAction(MenuAction.EXAMINE_ITEM);
menuOptionClicked.setId(ItemID.ABYSSAL_WHIP);
examinePlugin.onMenuOptionClicked(menuOptionClicked);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "100000 x Abyssal whip", "", 0);
examinePlugin.onChatMessage(chatMessage);
verify(examineClient, never()).submitItem(anyInt(), anyString());
}
示例18
private void checkQuestClicked(MenuOptionClicked ev)
{
boolean quickguide = false;
switch (ev.getOption())
{
case MENUOP_QUICKGUIDE:
quickguide = true;
//fallthrough;
case MENUOP_GUIDE:
ev.consume();
String quest = Text.removeTags(ev.getTarget());
HttpUrl.Builder ub = WIKI_BASE.newBuilder()
.addPathSegment("w")
.addPathSegment(quest)
.addQueryParameter(UTM_SOURCE_KEY, UTM_SOURCE_VALUE);
if (quickguide)
{
ub.addPathSegment("Quick_guide");
}
LinkBrowser.browse(ub.build().toString());
break;
case MENUOP_WIKI:
LinkBrowser.browse(WIKI_BASE.newBuilder()
.addPathSegment("w")
.addPathSegment(Text.removeTags(ev.getTarget()))
.addQueryParameter(UTM_SOURCE_KEY, UTM_SOURCE_VALUE)
.build().toString());
}
}
示例19
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (!isInGame() && getRole() != null)
{
return;
}
String target = Text.removeTags(event.getTarget()).toLowerCase();
if (getRole() == Role.HEALER && (target.startsWith("poisoned meat -> penance healer")
|| target.startsWith("poisoned tofu -> penance healer")
|| target.startsWith("poisoned worms -> penance healer")))
{
lastHealerPoisoned = event.getIdentifier();
poisonUsed = StringUtils.substringBefore(target.replace("oned", "."), " ->");
}
// INW
/*
String option = Text.removeTags(event.getMenuOption());
if (option.startsWith("Tell-"))
{
lastClickedTell = getRole().getCallFromTell(option);
}
else if (usingGloryHorn && option.equals("Call"))
{
}
*/
}
示例20
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
if (MenuOpcode.GAME_OBJECT_FIRST_OPTION == menuOpt.getMenuOpcode() && menuOpt.getTarget().contains("Bookshelf"))
{
lastBookcaseClick = WorldPoint.fromScene(client, menuOpt.getParam0(), menuOpt.getParam1(), client.getPlane());
}
}
示例21
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (WidgetInfo.TO_GROUP(event.getParam1()) == WidgetInfo.FRIENDS_LIST.getGroupId())
{
if (Strings.isNullOrEmpty(event.getTarget()))
{
return;
}
final String sanitizedTarget = Text.removeTags(event.getTarget());
if (event.getOption().equals(ADD_TAG))
{
event.consume();
final ChatboxTextInput build = chatboxPanelManager.openTextInput("Enter the tag").value("")
.onDone((content) ->
{
if (content == null)
{
return;
}
content = Text.removeTags(content).trim();
setTag(sanitizedTarget, content);
}).build();
}
if (event.getOption().equals(DELETE_TAG))
{
event.consume();
client.getLogger().info(sanitizedTarget);
taggedFriends.forEach((k, v) -> client.getLogger().info(k + ": ", v));
deleteTag(sanitizedTarget);
}
}
}
示例22
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (!client.isKeyPressed(KeyCode.KC_SHIFT) || client.isMenuOpen() || party.getMembers().isEmpty() || !config.pings())
{
return;
}
Tile selectedSceneTile = client.getSelectedSceneTile();
if (selectedSceneTile == null)
{
return;
}
boolean isOnCanvas = false;
for (MenuEntry menuEntry : client.getMenuEntries())
{
if (menuEntry == null)
{
continue;
}
if ("walk here".equalsIgnoreCase(menuEntry.getOption()))
{
isOnCanvas = true;
break;
}
}
if (!isOnCanvas)
{
return;
}
event.consume();
final TilePing tilePing = new TilePing(selectedSceneTile.getWorldLocation());
tilePing.setMemberId(party.getLocalMember().getMemberId());
wsClient.send(tilePing);
}
示例23
@Subscribe
public void onMenuOptionClicked(final MenuOptionClicked event)
{
if (event.getOption() != null && event.getOption().equals("Read"))
{
final ItemDefinition itemDefinition = itemManager.getItemDefinition(event.getIdentifier());
if (itemDefinition != null && (itemDefinition.getName().startsWith("Clue scroll") || itemDefinition.getName().startsWith("Challenge scroll")))
{
clueItemId = itemDefinition.getId();
updateClue(MapClue.forItemId(clueItemId));
}
}
}
示例24
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (event.getMenuOpcode() != MenuOpcode.RUNELITE
|| !(event.getOption().equals(MARK) || event.getOption().equals(UNMARK)))
{
return;
}
Scene scene = client.getScene();
Tile[][][] tiles = scene.getTiles();
final int x = event.getParam0();
final int y = event.getParam1();
final int z = client.getPlane();
final Tile tile = tiles[z][x][y];
TileObject object = findTileObject(tile, event.getIdentifier());
if (object == null)
{
return;
}
// object.getId() is always the base object id, getObjectDefinition transforms it to
// the correct object we see
ObjectDefinition objectDefinition = getObjectDefinition(object.getId());
String name = objectDefinition.getName();
// Name is probably never "null" - however prevent adding it if it is, as it will
// become ambiguous as objects with no name are assigned name "null"
if (Strings.isNullOrEmpty(name) || name.equals("null"))
{
return;
}
markObject(objectDefinition, name, object);
}
示例25
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked ev)
{
if (ev.getMenuOpcode() == MenuOpcode.RUNELITE && ev.getOption().equals(MENUOP_SLAYERMUSIQ))
{
ev.consume();
String quest = Text.removeTags(ev.getTarget());
QuestGuideLinks.tryOpenGuide(quest, chatMessageManager);
}
}
示例26
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (WidgetInfo.TO_GROUP(event.getParam1()) == WidgetInfo.FRIENDS_LIST.getGroupId())
{
if (Strings.isNullOrEmpty(event.getTarget()))
{
return;
}
// Handle clicks on "Add Note" or "Edit Note"
if (event.getOption().equals(ADD_NOTE) || event.getOption().equals(EDIT_NOTE))
{
event.consume();
//Friends have color tags
final String sanitizedTarget = Text.toJagexName(Text.removeTags(event.getTarget()));
final String note = getFriendNote(sanitizedTarget);
// Open the new chatbox input dialog
chatboxPanelManager.openTextInput(String.format(NOTE_PROMPT_FORMAT, sanitizedTarget, CHARACTER_LIMIT))
.value(Strings.nullToEmpty(note))
.onDone((content) ->
{
if (content == null)
{
return;
}
content = Text.removeTags(content).trim();
log.debug("Set note for '{}': '{}'", sanitizedTarget, content);
setFriendNote(sanitizedTarget, content);
}).build();
}
}
}
示例27
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
//TODO: should work hopefully
if (event.getMenuOpcode() != MenuOpcode.RUNELITE || event.getParam1() != WidgetInfo.INVENTORY.getId())
{
return;
}
ItemContainer inventoryItemContainer = client.getItemContainer(InventoryID.INVENTORY);
Item[] inventoryItems = new Item[0];
if (inventoryItemContainer != null)
{
inventoryItems = inventoryItemContainer.getItems();
}
switch (event.getOption().toLowerCase())
{
case FILL_OPTION:
int coalInInventoryCount = (int) Arrays.stream(inventoryItems).filter(i -> i.getId() == ItemID.COAL).count();
updateAmountOfCoalInBag(coalInInventoryCount);
break;
case EMPTY_OPTION:
int emptyInventorySpaceCount = (int) Arrays.stream(inventoryItems).filter(i -> i.getId() != -1).count();
int difference = MAX_INVENTORY_SPACE - emptyInventorySpaceCount;
updateAmountOfCoalInBag(-difference);
break;
}
}
示例28
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked click)
{
if (click.getMenuOpcode() != MenuOpcode.RUNELITE ||
!(click.getOption().equals(TAG) || click.getOption().equals(UNTAG)))
{
return;
}
final int id = click.getIdentifier();
final boolean removed = npcTags.remove(id);
final NPC[] cachedNPCs = client.getCachedNPCs();
final NPC npc = cachedNPCs[id];
if (npc == null || npc.getName() == null)
{
return;
}
if (removed)
{
MemorizedNpc mn = memorizedNpcs.get(npc.getIndex());
if (mn != null && isNpcMemorizationUnnecessary(mn))
{
memorizedNpcs.remove(npc.getIndex());
rebuildAllNpcs();
}
}
else
{
npcTags.add(id);
rebuildAllNpcs();
}
click.consume();
}
示例29
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
if (input != null)
{
input.triggerClose();
}
}
示例30
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
if (event.getMenuOpcode().getId() != MenuOpcode.RUNELITE.getId()
|| TO_GROUP(event.getParam1()) != WidgetID.SKILLS_GROUP_ID)
{
return;
}
final Skill skill;
try
{
skill = Skill.valueOf(Text.removeTags(event.getTarget()).toUpperCase());
}
catch (IllegalArgumentException ex)
{
log.debug(null, ex);
return;
}
switch (event.getOption())
{
case MENUOP_ADD_CANVAS_TRACKER:
addOverlay(skill);
break;
case MENUOP_REMOVE_CANVAS_TRACKER:
removeOverlay(skill);
break;
}
}