Client: menu changes (#1553)
* Remove sortMenuEntries as it is called before it would be used anyway * Modify the menuentries in MenuOpened rather than setting twice * menus: Corp, Devtools, Friend notes/tags, Grand exchange * menus: Manager, ground items
This commit is contained in:
@@ -240,7 +240,7 @@ public class MenuManager
|
||||
|
||||
// Need to set the event entries to prevent conflicts
|
||||
event.setMenuEntries(arrayEntries);
|
||||
client.setMenuEntries(arrayEntries);
|
||||
event.setModified(true);
|
||||
}
|
||||
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
@@ -256,21 +256,20 @@ public class MenuManager
|
||||
|
||||
int widgetId = event.getActionParam1();
|
||||
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
|
||||
for (WidgetMenuOption currentMenu : options)
|
||||
{
|
||||
if (!menuContainsCustomMenu(currentMenu))//Don't add if we have already added it to this widget
|
||||
{
|
||||
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
||||
|
||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
|
||||
menuEntry.setOption(currentMenu.getMenuOption());
|
||||
menuEntry.setParam1(widgetId);
|
||||
menuEntry.setTarget(currentMenu.getMenuTarget());
|
||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
|
||||
client.setMenuEntries(menuEntries);
|
||||
client.insertMenuItem(
|
||||
currentMenu.getMenuOption(),
|
||||
currentMenu.getMenuTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
0,
|
||||
widgetId,
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,8 +292,6 @@ public class MenuManager
|
||||
return null;
|
||||
}
|
||||
|
||||
client.sortMenuEntries();
|
||||
|
||||
firstEntry = null;
|
||||
MenuEntry[] entries = new MenuEntry[menuOptionCount + priorityEntries.size()];
|
||||
System.arraycopy(client.getMenuEntries(), 0, entries, 0, menuOptionCount);
|
||||
@@ -873,7 +870,6 @@ public class MenuManager
|
||||
|
||||
// Backwards so we swap with the otherwise highest one
|
||||
// Count - 2 so we don't compare the entry against itself
|
||||
outer:
|
||||
for (int i = menuOptionCount - 2; i > 0; i--)
|
||||
{
|
||||
final MenuEntry entry = entries[i];
|
||||
@@ -887,7 +883,7 @@ public class MenuManager
|
||||
entries[i] = first;
|
||||
entries[menuOptionCount - 1] = entry;
|
||||
firstEntry = entry;
|
||||
break outer;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,9 +35,8 @@ import net.runelite.api.Actor;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import static net.runelite.api.MenuOpcode.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import static net.runelite.api.MenuOpcode.NPC_SECOND_OPTION;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.NpcID;
|
||||
import net.runelite.api.Varbits;
|
||||
@@ -66,7 +65,6 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
||||
@Slf4j
|
||||
public class CorpPlugin extends Plugin
|
||||
{
|
||||
private static final int NPC_SECTION_ACTION = MenuOpcode.NPC_SECOND_OPTION.getId();
|
||||
private static final String ATTACK = "Attack";
|
||||
private static final String DARK_ENERGY_CORE = "Dark energy core";
|
||||
|
||||
@@ -244,27 +242,23 @@ public class CorpPlugin extends Plugin
|
||||
players.add(source);
|
||||
}
|
||||
|
||||
private void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
if (menuEntryAdded.getType() != NPC_SECTION_ACTION
|
||||
|| !this.leftClickCore || !menuEntryAdded.getOption().equals(ATTACK))
|
||||
if (event.getType() != NPC_SECOND_OPTION.getId()
|
||||
|| !this.leftClickCore || !event.getOption().equals(ATTACK))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final int npcIndex = menuEntryAdded.getIdentifier();
|
||||
final int npcIndex = event.getIdentifier();
|
||||
final NPC npc = client.getCachedNPCs()[npcIndex];
|
||||
if (npc == null || !npc.getName().equals(DARK_ENERGY_CORE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// since this is the menu entry add event, this is the last menu entry
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
|
||||
|
||||
menuEntry.setOpcode(NPC_SECTION_ACTION + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||
client.setMenuEntries(menuEntries);
|
||||
event.getMenuEntry().setOpcode(NPC_SECOND_OPTION.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
private void onConfigChanged(ConfigChanged configChanged)
|
||||
|
||||
@@ -388,8 +388,7 @@ public class DevToolsPlugin extends Plugin
|
||||
|
||||
if (EXAMINE_MENU_ACTIONS.contains(action))
|
||||
{
|
||||
MenuEntry[] entries = client.getMenuEntries();
|
||||
MenuEntry entry = entries[entries.length - 1];
|
||||
final MenuEntry entry = event.getMenuEntry();
|
||||
|
||||
final int identifier = event.getIdentifier();
|
||||
String info = "ID: ";
|
||||
@@ -411,7 +410,7 @@ public class DevToolsPlugin extends Plugin
|
||||
}
|
||||
|
||||
entry.setTarget(entry.getTarget() + " " + ColorUtil.prependColorTag("(" + info + ")", JagexColors.MENU_TARGET));
|
||||
client.setMenuEntries(entries);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
package net.runelite.client.plugins.friendnotes;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
import java.awt.Color;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
@@ -38,7 +37,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Nameable;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
@@ -185,16 +183,16 @@ public class FriendNotesPlugin extends Plugin
|
||||
setHoveredFriend(Text.toJagexName(Text.removeTags(event.getTarget())));
|
||||
|
||||
// Build "Add Note" or "Edit Note" menu entry
|
||||
final MenuEntry addNote = new MenuEntry();
|
||||
addNote.setOption(hoveredFriend == null || hoveredFriend.getNote() == null ? ADD_NOTE : EDIT_NOTE);
|
||||
addNote.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
addNote.setTarget(event.getTarget()); //Preserve color codes here
|
||||
addNote.setParam0(event.getActionParam0());
|
||||
addNote.setParam1(event.getActionParam1());
|
||||
|
||||
// Add menu entry
|
||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), addNote);
|
||||
client.setMenuEntries(menuEntries);
|
||||
client.insertMenuItem(
|
||||
hoveredFriend == null || hoveredFriend.getNote() == null ? ADD_NOTE : EDIT_NOTE,
|
||||
event.getTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
event.getActionParam0(),
|
||||
event.getActionParam1(),
|
||||
false
|
||||
);
|
||||
}
|
||||
else if (hoveredFriend != null)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
package net.runelite.client.plugins.friendtagging;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.util.Arrays;
|
||||
@@ -25,7 +24,6 @@ import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.Ignore;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Nameable;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
@@ -129,16 +127,17 @@ public class FriendTaggingPlugin extends Plugin
|
||||
String friendName = Text.removeTags(event.getTarget());
|
||||
|
||||
// Build "Add Note" or "Edit Note" menu entry
|
||||
final MenuEntry entry = new MenuEntry();
|
||||
entry.setOption(friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG);
|
||||
entry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
entry.setTarget(event.getTarget()); //Preserve color codes here
|
||||
entry.setParam0(event.getActionParam0());
|
||||
entry.setParam1(event.getActionParam1());
|
||||
|
||||
client.insertMenuItem(
|
||||
friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG,
|
||||
event.getTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
event.getActionParam0(),
|
||||
event.getActionParam1(),
|
||||
false
|
||||
);
|
||||
// Add menu entry
|
||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), entry);
|
||||
client.setMenuEntries(menuEntries);
|
||||
// jk it is already added
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -431,8 +431,7 @@ public class GrandExchangePlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
final MenuEntry[] entries = client.getMenuEntries();
|
||||
final MenuEntry menuEntry = entries[entries.length - 1];
|
||||
final MenuEntry menuEntry = event.getMenuEntry();
|
||||
final int widgetId = menuEntry.getParam1();
|
||||
final int groupId = WidgetInfo.TO_GROUP(widgetId);
|
||||
|
||||
@@ -450,7 +449,7 @@ public class GrandExchangePlugin extends Plugin
|
||||
case WidgetID.SHOP_INVENTORY_GROUP_ID:
|
||||
menuEntry.setOption(SEARCH_GRAND_EXCHANGE);
|
||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
client.setMenuEntries(entries);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -951,8 +951,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
MenuEntry lastEntry = menuEntries[menuEntries.length - 1];
|
||||
final MenuEntry lastEntry = event.getMenuEntry();
|
||||
|
||||
int quantity = 1;
|
||||
Node current = tileItemPile.getBottom();
|
||||
@@ -986,6 +985,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
{
|
||||
final String optionText = telegrabEntry ? "Cast" : "Take";
|
||||
lastEntry.setOption(ColorUtil.prependColorTag(optionText, color));
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
if (mode == BOTH || mode == NAME)
|
||||
@@ -1005,43 +1005,20 @@ public class GroundItemsPlugin extends Plugin
|
||||
}
|
||||
|
||||
lastEntry.setTarget(target);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.showMenuItemQuantities && itemComposition.isStackable() && quantity > 1)
|
||||
{
|
||||
lastEntry.setTarget(lastEntry.getTarget() + " (" + quantity + ")");
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
if (this.removeIgnored && event.getOption().equals("Take") && hiddenItemList.contains(Text.removeTags(event.getTarget())))
|
||||
{
|
||||
menuEntries = removeOption(event.getOption(), event.getTarget());
|
||||
client.setMenuOptionCount(client.getMenuOptionCount() - 1);
|
||||
}
|
||||
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
}
|
||||
|
||||
private MenuEntry[] removeOption(String option, String target)
|
||||
{
|
||||
MenuEntry[] entries = client.getMenuEntries();
|
||||
int j = 0;
|
||||
if (entries.length > 1)
|
||||
{
|
||||
MenuEntry[] newEntries = new MenuEntry[entries.length - 1];
|
||||
for (MenuEntry entry : entries)
|
||||
{
|
||||
if (!(entry.getOption().equals(option) && entry.getTarget().equals(target)))
|
||||
{
|
||||
newEntries[j++] = entry;
|
||||
}
|
||||
}
|
||||
|
||||
return newEntries;
|
||||
}
|
||||
else
|
||||
{
|
||||
return entries;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import java.awt.Color;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
@@ -92,9 +91,6 @@ public class InventoryTagsPlugin extends Plugin
|
||||
private static final List<String> GROUPS = ImmutableList.of(SETNAME_GROUP_8, SETNAME_GROUP_7, SETNAME_GROUP_6,
|
||||
SETNAME_GROUP_5, SETNAME_GROUP_4, SETNAME_GROUP_3, SETNAME_GROUP_2, SETNAME_GROUP_1);
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private ConfigManager configManager;
|
||||
|
||||
@@ -254,7 +250,7 @@ public class InventoryTagsPlugin extends Plugin
|
||||
|
||||
// Need to set the event entries to prevent conflicts
|
||||
event.setMenuEntries(menuList);
|
||||
client.setMenuEntries(menuList);
|
||||
event.setModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -424,6 +424,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Remove this? This makes everything here only work in wildy lol
|
||||
if (!(MiscUtils.getWildernessLevelFrom(client, localPlayer.getWorldLocation()) >= 0))
|
||||
{
|
||||
return;
|
||||
@@ -508,9 +509,8 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
menu_entries.add(entry);
|
||||
}
|
||||
|
||||
MenuEntry[] updated_menu_entries = new MenuEntry[menu_entries.size()];
|
||||
updated_menu_entries = menu_entries.toArray(updated_menu_entries);
|
||||
client.setMenuEntries(updated_menu_entries);
|
||||
event.setMenuEntries(menu_entries.toArray(new MenuEntry[0]));
|
||||
event.setModified(true);
|
||||
}
|
||||
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
|
||||
Reference in New Issue
Block a user