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:
@@ -1743,12 +1743,6 @@ public interface Client extends GameShell
|
|||||||
*/
|
*/
|
||||||
void setUnhiddenCasts(Set<String> casts);
|
void setUnhiddenCasts(Set<String> casts);
|
||||||
|
|
||||||
/**
|
|
||||||
* Sorts the current menu entries in the same way the client does this.
|
|
||||||
* The last entry will be the left click one after this.
|
|
||||||
*/
|
|
||||||
void sortMenuEntries();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add player to friendlist
|
* Add player to friendlist
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -33,6 +33,13 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class MenuOpened implements Event
|
public class MenuOpened implements Event
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* This should be set to true if anything about the menu
|
||||||
|
* in menuEntries is changed, so the changes can be
|
||||||
|
* propagated through to the client.
|
||||||
|
*/
|
||||||
|
private boolean modified;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The menu entries in the newly opened menu.
|
* The menu entries in the newly opened menu.
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ public class MenuManager
|
|||||||
|
|
||||||
// Need to set the event entries to prevent conflicts
|
// Need to set the event entries to prevent conflicts
|
||||||
event.setMenuEntries(arrayEntries);
|
event.setMenuEntries(arrayEntries);
|
||||||
client.setMenuEntries(arrayEntries);
|
event.setModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||||
@@ -256,21 +256,20 @@ public class MenuManager
|
|||||||
|
|
||||||
int widgetId = event.getActionParam1();
|
int widgetId = event.getActionParam1();
|
||||||
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
||||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
|
||||||
|
|
||||||
for (WidgetMenuOption currentMenu : options)
|
for (WidgetMenuOption currentMenu : options)
|
||||||
{
|
{
|
||||||
if (!menuContainsCustomMenu(currentMenu))//Don't add if we have already added it to this widget
|
if (!menuContainsCustomMenu(currentMenu))//Don't add if we have already added it to this widget
|
||||||
{
|
{
|
||||||
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
client.insertMenuItem(
|
||||||
|
currentMenu.getMenuOption(),
|
||||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
|
currentMenu.getMenuTarget(),
|
||||||
menuEntry.setOption(currentMenu.getMenuOption());
|
MenuOpcode.RUNELITE.getId(),
|
||||||
menuEntry.setParam1(widgetId);
|
0,
|
||||||
menuEntry.setTarget(currentMenu.getMenuTarget());
|
0,
|
||||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
widgetId,
|
||||||
|
false
|
||||||
client.setMenuEntries(menuEntries);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -293,8 +292,6 @@ public class MenuManager
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.sortMenuEntries();
|
|
||||||
|
|
||||||
firstEntry = null;
|
firstEntry = null;
|
||||||
MenuEntry[] entries = new MenuEntry[menuOptionCount + priorityEntries.size()];
|
MenuEntry[] entries = new MenuEntry[menuOptionCount + priorityEntries.size()];
|
||||||
System.arraycopy(client.getMenuEntries(), 0, entries, 0, menuOptionCount);
|
System.arraycopy(client.getMenuEntries(), 0, entries, 0, menuOptionCount);
|
||||||
@@ -873,7 +870,6 @@ public class MenuManager
|
|||||||
|
|
||||||
// Backwards so we swap with the otherwise highest one
|
// Backwards so we swap with the otherwise highest one
|
||||||
// Count - 2 so we don't compare the entry against itself
|
// Count - 2 so we don't compare the entry against itself
|
||||||
outer:
|
|
||||||
for (int i = menuOptionCount - 2; i > 0; i--)
|
for (int i = menuOptionCount - 2; i > 0; i--)
|
||||||
{
|
{
|
||||||
final MenuEntry entry = entries[i];
|
final MenuEntry entry = entries[i];
|
||||||
@@ -887,7 +883,7 @@ public class MenuManager
|
|||||||
entries[i] = first;
|
entries[i] = first;
|
||||||
entries[menuOptionCount - 1] = entry;
|
entries[menuOptionCount - 1] = entry;
|
||||||
firstEntry = entry;
|
firstEntry = entry;
|
||||||
break outer;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,9 +35,8 @@ import net.runelite.api.Actor;
|
|||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.MenuOpcode;
|
|
||||||
import static net.runelite.api.MenuOpcode.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
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.NPC;
|
||||||
import net.runelite.api.NpcID;
|
import net.runelite.api.NpcID;
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
@@ -66,7 +65,6 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class CorpPlugin extends Plugin
|
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 ATTACK = "Attack";
|
||||||
private static final String DARK_ENERGY_CORE = "Dark energy core";
|
private static final String DARK_ENERGY_CORE = "Dark energy core";
|
||||||
|
|
||||||
@@ -244,27 +242,23 @@ public class CorpPlugin extends Plugin
|
|||||||
players.add(source);
|
players.add(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||||
{
|
{
|
||||||
if (menuEntryAdded.getType() != NPC_SECTION_ACTION
|
if (event.getType() != NPC_SECOND_OPTION.getId()
|
||||||
|| !this.leftClickCore || !menuEntryAdded.getOption().equals(ATTACK))
|
|| !this.leftClickCore || !event.getOption().equals(ATTACK))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int npcIndex = menuEntryAdded.getIdentifier();
|
final int npcIndex = event.getIdentifier();
|
||||||
final NPC npc = client.getCachedNPCs()[npcIndex];
|
final NPC npc = client.getCachedNPCs()[npcIndex];
|
||||||
if (npc == null || !npc.getName().equals(DARK_ENERGY_CORE))
|
if (npc == null || !npc.getName().equals(DARK_ENERGY_CORE))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// since this is the menu entry add event, this is the last menu entry
|
event.getMenuEntry().setOpcode(NPC_SECOND_OPTION.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
event.setWasModified(true);
|
||||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
|
|
||||||
|
|
||||||
menuEntry.setOpcode(NPC_SECTION_ACTION + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
|
||||||
client.setMenuEntries(menuEntries);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onConfigChanged(ConfigChanged configChanged)
|
private void onConfigChanged(ConfigChanged configChanged)
|
||||||
|
|||||||
@@ -388,8 +388,7 @@ public class DevToolsPlugin extends Plugin
|
|||||||
|
|
||||||
if (EXAMINE_MENU_ACTIONS.contains(action))
|
if (EXAMINE_MENU_ACTIONS.contains(action))
|
||||||
{
|
{
|
||||||
MenuEntry[] entries = client.getMenuEntries();
|
final MenuEntry entry = event.getMenuEntry();
|
||||||
MenuEntry entry = entries[entries.length - 1];
|
|
||||||
|
|
||||||
final int identifier = event.getIdentifier();
|
final int identifier = event.getIdentifier();
|
||||||
String info = "ID: ";
|
String info = "ID: ";
|
||||||
@@ -411,7 +410,7 @@ public class DevToolsPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
entry.setTarget(entry.getTarget() + " " + ColorUtil.prependColorTag("(" + info + ")", JagexColors.MENU_TARGET));
|
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;
|
package net.runelite.client.plugins.friendnotes;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.ObjectArrays;
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -38,7 +37,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Friend;
|
import net.runelite.api.Friend;
|
||||||
import net.runelite.api.MenuOpcode;
|
import net.runelite.api.MenuOpcode;
|
||||||
import net.runelite.api.MenuEntry;
|
|
||||||
import net.runelite.api.Nameable;
|
import net.runelite.api.Nameable;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
@@ -185,16 +183,16 @@ public class FriendNotesPlugin extends Plugin
|
|||||||
setHoveredFriend(Text.toJagexName(Text.removeTags(event.getTarget())));
|
setHoveredFriend(Text.toJagexName(Text.removeTags(event.getTarget())));
|
||||||
|
|
||||||
// Build "Add Note" or "Edit Note" menu entry
|
// 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
|
// Add menu entry
|
||||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), addNote);
|
client.insertMenuItem(
|
||||||
client.setMenuEntries(menuEntries);
|
hoveredFriend == null || hoveredFriend.getNote() == null ? ADD_NOTE : EDIT_NOTE,
|
||||||
|
event.getTarget(),
|
||||||
|
MenuOpcode.RUNELITE.getId(),
|
||||||
|
0,
|
||||||
|
event.getActionParam0(),
|
||||||
|
event.getActionParam1(),
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else if (hoveredFriend != null)
|
else if (hoveredFriend != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
package net.runelite.client.plugins.friendtagging;
|
package net.runelite.client.plugins.friendtagging;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.ObjectArrays;
|
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.datatransfer.StringSelection;
|
import java.awt.datatransfer.StringSelection;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -25,7 +24,6 @@ import net.runelite.api.Client;
|
|||||||
import net.runelite.api.Friend;
|
import net.runelite.api.Friend;
|
||||||
import net.runelite.api.Ignore;
|
import net.runelite.api.Ignore;
|
||||||
import net.runelite.api.MenuOpcode;
|
import net.runelite.api.MenuOpcode;
|
||||||
import net.runelite.api.MenuEntry;
|
|
||||||
import net.runelite.api.Nameable;
|
import net.runelite.api.Nameable;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
@@ -129,16 +127,17 @@ public class FriendTaggingPlugin extends Plugin
|
|||||||
String friendName = Text.removeTags(event.getTarget());
|
String friendName = Text.removeTags(event.getTarget());
|
||||||
|
|
||||||
// Build "Add Note" or "Edit Note" menu entry
|
// Build "Add Note" or "Edit Note" menu entry
|
||||||
final MenuEntry entry = new MenuEntry();
|
client.insertMenuItem(
|
||||||
entry.setOption(friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG);
|
friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG,
|
||||||
entry.setOpcode(MenuOpcode.RUNELITE.getId());
|
event.getTarget(),
|
||||||
entry.setTarget(event.getTarget()); //Preserve color codes here
|
MenuOpcode.RUNELITE.getId(),
|
||||||
entry.setParam0(event.getActionParam0());
|
0,
|
||||||
entry.setParam1(event.getActionParam1());
|
event.getActionParam0(),
|
||||||
|
event.getActionParam1(),
|
||||||
|
false
|
||||||
|
);
|
||||||
// Add menu entry
|
// Add menu entry
|
||||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), entry);
|
// jk it is already added
|
||||||
client.setMenuEntries(menuEntries);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -431,8 +431,7 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final MenuEntry[] entries = client.getMenuEntries();
|
final MenuEntry menuEntry = event.getMenuEntry();
|
||||||
final MenuEntry menuEntry = entries[entries.length - 1];
|
|
||||||
final int widgetId = menuEntry.getParam1();
|
final int widgetId = menuEntry.getParam1();
|
||||||
final int groupId = WidgetInfo.TO_GROUP(widgetId);
|
final int groupId = WidgetInfo.TO_GROUP(widgetId);
|
||||||
|
|
||||||
@@ -450,7 +449,7 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
case WidgetID.SHOP_INVENTORY_GROUP_ID:
|
case WidgetID.SHOP_INVENTORY_GROUP_ID:
|
||||||
menuEntry.setOption(SEARCH_GRAND_EXCHANGE);
|
menuEntry.setOption(SEARCH_GRAND_EXCHANGE);
|
||||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||||
client.setMenuEntries(entries);
|
event.setWasModified(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -951,8 +951,7 @@ public class GroundItemsPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
final MenuEntry lastEntry = event.getMenuEntry();
|
||||||
MenuEntry lastEntry = menuEntries[menuEntries.length - 1];
|
|
||||||
|
|
||||||
int quantity = 1;
|
int quantity = 1;
|
||||||
Node current = tileItemPile.getBottom();
|
Node current = tileItemPile.getBottom();
|
||||||
@@ -986,6 +985,7 @@ public class GroundItemsPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
final String optionText = telegrabEntry ? "Cast" : "Take";
|
final String optionText = telegrabEntry ? "Cast" : "Take";
|
||||||
lastEntry.setOption(ColorUtil.prependColorTag(optionText, color));
|
lastEntry.setOption(ColorUtil.prependColorTag(optionText, color));
|
||||||
|
event.setWasModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == BOTH || mode == NAME)
|
if (mode == BOTH || mode == NAME)
|
||||||
@@ -1005,43 +1005,20 @@ public class GroundItemsPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
lastEntry.setTarget(target);
|
lastEntry.setTarget(target);
|
||||||
|
event.setWasModified(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.showMenuItemQuantities && itemComposition.isStackable() && quantity > 1)
|
if (this.showMenuItemQuantities && itemComposition.isStackable() && quantity > 1)
|
||||||
{
|
{
|
||||||
lastEntry.setTarget(lastEntry.getTarget() + " (" + quantity + ")");
|
lastEntry.setTarget(lastEntry.getTarget() + " (" + quantity + ")");
|
||||||
|
event.setWasModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.removeIgnored && event.getOption().equals("Take") && hiddenItemList.contains(Text.removeTags(event.getTarget())))
|
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 java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.Client;
|
|
||||||
import net.runelite.api.MenuOpcode;
|
import net.runelite.api.MenuOpcode;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
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,
|
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);
|
SETNAME_GROUP_5, SETNAME_GROUP_4, SETNAME_GROUP_3, SETNAME_GROUP_2, SETNAME_GROUP_1);
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Client client;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ConfigManager configManager;
|
private ConfigManager configManager;
|
||||||
|
|
||||||
@@ -254,7 +250,7 @@ public class InventoryTagsPlugin extends Plugin
|
|||||||
|
|
||||||
// Need to set the event entries to prevent conflicts
|
// Need to set the event entries to prevent conflicts
|
||||||
event.setMenuEntries(menuList);
|
event.setMenuEntries(menuList);
|
||||||
client.setMenuEntries(menuList);
|
event.setModified(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -424,6 +424,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Remove this? This makes everything here only work in wildy lol
|
||||||
if (!(MiscUtils.getWildernessLevelFrom(client, localPlayer.getWorldLocation()) >= 0))
|
if (!(MiscUtils.getWildernessLevelFrom(client, localPlayer.getWorldLocation()) >= 0))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -508,9 +509,8 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
menu_entries.add(entry);
|
menu_entries.add(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuEntry[] updated_menu_entries = new MenuEntry[menu_entries.size()];
|
event.setMenuEntries(menu_entries.toArray(new MenuEntry[0]));
|
||||||
updated_menu_entries = menu_entries.toArray(updated_menu_entries);
|
event.setModified(true);
|
||||||
client.setMenuEntries(updated_menu_entries);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||||
|
|||||||
@@ -109,47 +109,4 @@ public abstract class MenuMixin implements RSClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Override
|
|
||||||
public void sortMenuEntries()
|
|
||||||
{
|
|
||||||
int count = getMenuOptionCount() - 1;
|
|
||||||
int[] menuOpcodes = getMenuOpcodes();
|
|
||||||
String[] menuTargetNames = getMenuTargets();
|
|
||||||
String[] menuActions = getMenuOptions();
|
|
||||||
int[] menuArguments0 = getMenuIdentifiers();
|
|
||||||
int[] menuArguments1 = getMenuArguments1();
|
|
||||||
int[] menuArguments2 = getMenuArguments2();
|
|
||||||
boolean[] menuShiftClick = getMenuForceLeftClick();
|
|
||||||
|
|
||||||
int tmp;
|
|
||||||
for (int i = 0; i < count; ++i)
|
|
||||||
{
|
|
||||||
if (menuOpcodes[i] < 1000 && menuOpcodes[i + 1] > 1000)
|
|
||||||
{
|
|
||||||
String var3 = menuTargetNames[i];
|
|
||||||
menuTargetNames[i] = menuTargetNames[i + 1];
|
|
||||||
menuTargetNames[i + 1] = var3;
|
|
||||||
String var4 = menuActions[i];
|
|
||||||
menuActions[i] = menuActions[i + 1];
|
|
||||||
menuActions[i + 1] = var4;
|
|
||||||
tmp = menuOpcodes[i];
|
|
||||||
menuOpcodes[i] = menuOpcodes[i + 1];
|
|
||||||
menuOpcodes[i + 1] = tmp;
|
|
||||||
tmp = menuArguments1[i];
|
|
||||||
menuArguments1[i] = menuArguments1[i + 1];
|
|
||||||
menuArguments1[i + 1] = tmp;
|
|
||||||
tmp = menuArguments2[i];
|
|
||||||
menuArguments2[i] = menuArguments2[i + 1];
|
|
||||||
menuArguments2[i + 1] = tmp;
|
|
||||||
tmp = menuArguments0[i];
|
|
||||||
menuArguments0[i] = menuArguments0[i + 1];
|
|
||||||
menuArguments0[i + 1] = tmp;
|
|
||||||
boolean var6 = menuShiftClick[i];
|
|
||||||
menuShiftClick[i] = menuShiftClick[i + 1];
|
|
||||||
menuShiftClick[i + 1] = var6;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1419,10 +1419,14 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
@MethodHook("openMenu")
|
@MethodHook("openMenu")
|
||||||
public void menuOpened(int x, int y)
|
public void menuOpened(int x, int y)
|
||||||
{
|
{
|
||||||
sortMenuEntries();
|
|
||||||
final MenuOpened event = new MenuOpened();
|
final MenuOpened event = new MenuOpened();
|
||||||
event.setMenuEntries(getMenuEntries());
|
event.setMenuEntries(getMenuEntries());
|
||||||
callbacks.post(MenuOpened.class, event);
|
callbacks.post(MenuOpened.class, event);
|
||||||
|
|
||||||
|
if (event.isModified())
|
||||||
|
{
|
||||||
|
setMenuEntries(event.getMenuEntries());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
|||||||
@@ -5411,131 +5411,133 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
garbageValue = "1"
|
garbageValue = "1"
|
||||||
)
|
)
|
||||||
final void method1293() {
|
final void method1293() {
|
||||||
WorldMapID.method537();
|
WorldMapID.sortMenuEntries();
|
||||||
if (class188.dragInventoryWidget == null) {
|
if (class188.dragInventoryWidget != null) {
|
||||||
if (clickedWidget == null) {
|
return;
|
||||||
int var2;
|
}
|
||||||
int var4;
|
if (clickedWidget != null) {
|
||||||
int var5;
|
return;
|
||||||
int var10;
|
}
|
||||||
int var19;
|
int var2;
|
||||||
label274: {
|
int var4;
|
||||||
int var1 = MouseHandler.MouseHandler_lastButton;
|
int var5;
|
||||||
int var3;
|
int var10;
|
||||||
int var6;
|
int var19;
|
||||||
int var8;
|
label274: {
|
||||||
if (isMenuOpen) {
|
int var1 = MouseHandler.MouseHandler_lastButton;
|
||||||
if (var1 != 1 && (FriendSystem.mouseCam || var1 != 4)) {
|
int var3;
|
||||||
var2 = MouseHandler.MouseHandler_x;
|
int var6;
|
||||||
var3 = MouseHandler.MouseHandler_y;
|
int var8;
|
||||||
if (var2 < MilliClock.menuX - 10 || var2 > World.menuWidth + MilliClock.menuX + 10 || var3 < class96.menuY - 10 || var3 > class1.menuHeight + class96.menuY + 10) {
|
if (isMenuOpen) {
|
||||||
isMenuOpen = false;
|
if (var1 != 1 && (FriendSystem.mouseCam || var1 != 4)) {
|
||||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
var2 = MouseHandler.MouseHandler_x;
|
||||||
}
|
var3 = MouseHandler.MouseHandler_y;
|
||||||
}
|
if (var2 < MilliClock.menuX - 10 || var2 > World.menuWidth + MilliClock.menuX + 10 || var3 < class96.menuY - 10 || var3 > class1.menuHeight + class96.menuY + 10) {
|
||||||
|
isMenuOpen = false;
|
||||||
|
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (var1 == 1 || !FriendSystem.mouseCam && var1 == 4) {
|
if (var1 == 1 || !FriendSystem.mouseCam && var1 == 4) {
|
||||||
var2 = MilliClock.menuX;
|
var2 = MilliClock.menuX;
|
||||||
var3 = class96.menuY;
|
var3 = class96.menuY;
|
||||||
var4 = World.menuWidth;
|
var4 = World.menuWidth;
|
||||||
var5 = MouseHandler.MouseHandler_lastPressedX;
|
var5 = MouseHandler.MouseHandler_lastPressedX;
|
||||||
var6 = MouseHandler.MouseHandler_lastPressedY;
|
var6 = MouseHandler.MouseHandler_lastPressedY;
|
||||||
int var18 = -1;
|
int var18 = -1;
|
||||||
|
|
||||||
for (var8 = 0; var8 < menuOptionsCount; ++var8) {
|
for (var8 = 0; var8 < menuOptionsCount; ++var8) {
|
||||||
var19 = var3 + (menuOptionsCount - 1 - var8) * 15 + 31;
|
var19 = var3 + (menuOptionsCount - 1 - var8) * 15 + 31;
|
||||||
if (var5 > var2 && var5 < var4 + var2 && var6 > var19 - 13 && var6 < var19 + 3) {
|
if (var5 > var2 && var5 < var4 + var2 && var6 > var19 - 13 && var6 < var19 + 3) {
|
||||||
var18 = var8;
|
var18 = var8;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var18 != -1 && var18 >= 0) {
|
|
||||||
var8 = menuArguments1[var18];
|
|
||||||
var19 = menuArguments2[var18];
|
|
||||||
var10 = menuOpcodes[var18];
|
|
||||||
int var17 = menuIdentifiers[var18];
|
|
||||||
String var12 = menuActions[var18];
|
|
||||||
String var13 = menuTargets[var18];
|
|
||||||
SecureRandomFuture.menuAction(var8, var19, var10, var17, var12, var13, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
|
||||||
}
|
|
||||||
|
|
||||||
isMenuOpen = false;
|
|
||||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var2 = Player.getNewestMenuIdx();
|
|
||||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && var2 >= 0) {
|
|
||||||
var3 = menuOpcodes[var2];
|
|
||||||
if (var3 == 39 || var3 == 40 || var3 == 41 || var3 == 42 || var3 == 43 || var3 == 33 || var3 == 34 || var3 == 35 || var3 == 36 || var3 == 37 || var3 == 38 || var3 == 1005) {
|
|
||||||
var4 = menuArguments1[var2];
|
|
||||||
var5 = menuArguments2[var2];
|
|
||||||
Widget var14 = WorldMapElement.getWidget(var5);
|
|
||||||
var8 = ParamDefinition.getWidgetClickMask(var14);
|
|
||||||
boolean var7 = (var8 >> 28 & 1) != 0;
|
|
||||||
if (var7) {
|
|
||||||
break label274;
|
|
||||||
}
|
|
||||||
|
|
||||||
var10 = ParamDefinition.getWidgetClickMask(var14);
|
|
||||||
boolean var9 = (var10 >> 29 & 1) != 0;
|
|
||||||
if (var9) {
|
|
||||||
break label274;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && this.shouldLeftClickOpenMenu()) {
|
|
||||||
var1 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && menuOptionsCount > 0 && var2 >= 0) {
|
|
||||||
var3 = menuArguments1[var2];
|
|
||||||
var4 = menuArguments2[var2];
|
|
||||||
var5 = menuOpcodes[var2];
|
|
||||||
var6 = menuIdentifiers[var2];
|
|
||||||
String var15 = menuActions[var2];
|
|
||||||
String var16 = menuTargets[var2];
|
|
||||||
SecureRandomFuture.menuAction(var3, var4, var5, var6, var15, var16, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var1 == 2 && menuOptionsCount > 0) {
|
|
||||||
this.openMenu(MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
if (var18 != -1 && var18 >= 0) {
|
||||||
|
var8 = menuArguments1[var18];
|
||||||
|
var19 = menuArguments2[var18];
|
||||||
|
var10 = menuOpcodes[var18];
|
||||||
|
int var17 = menuIdentifiers[var18];
|
||||||
|
String var12 = menuActions[var18];
|
||||||
|
String var13 = menuTargets[var18];
|
||||||
|
SecureRandomFuture.menuAction(var8, var19, var10, var17, var12, var13, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||||
|
}
|
||||||
|
|
||||||
|
isMenuOpen = false;
|
||||||
|
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var2 = Player.getNewestMenuIdx();
|
||||||
|
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && var2 >= 0) {
|
||||||
|
var3 = menuOpcodes[var2];
|
||||||
|
if (var3 == 39 || var3 == 40 || var3 == 41 || var3 == 42 || var3 == 43 || var3 == 33 || var3 == 34 || var3 == 35 || var3 == 36 || var3 == 37 || var3 == 38 || var3 == 1005) {
|
||||||
|
var4 = menuArguments1[var2];
|
||||||
|
var5 = menuArguments2[var2];
|
||||||
|
Widget var14 = WorldMapElement.getWidget(var5);
|
||||||
|
var8 = ParamDefinition.getWidgetClickMask(var14);
|
||||||
|
boolean var7 = (var8 >> 28 & 1) != 0;
|
||||||
|
if (var7) {
|
||||||
|
break label274;
|
||||||
|
}
|
||||||
|
|
||||||
|
var10 = ParamDefinition.getWidgetClickMask(var14);
|
||||||
|
boolean var9 = (var10 >> 29 & 1) != 0;
|
||||||
|
if (var9) {
|
||||||
|
break label274;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (class188.dragInventoryWidget != null && !field867 && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && this.shouldLeftClickOpenMenu()) {
|
||||||
var19 = field732;
|
var1 = 2;
|
||||||
var10 = field744;
|
|
||||||
MenuAction var11 = class1.tempMenuAction;
|
|
||||||
SecureRandomFuture.menuAction(var11.argument1, var11.argument2, var11.opcode, var11.argument0, var11.action, var11.action, var19, var10);
|
|
||||||
class1.tempMenuAction = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
field867 = false;
|
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && menuOptionsCount > 0 && var2 >= 0) {
|
||||||
itemDragDuration = 0;
|
var3 = menuArguments1[var2];
|
||||||
if (class188.dragInventoryWidget != null) {
|
var4 = menuArguments2[var2];
|
||||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
var5 = menuOpcodes[var2];
|
||||||
|
var6 = menuIdentifiers[var2];
|
||||||
|
String var15 = menuActions[var2];
|
||||||
|
String var16 = menuTargets[var2];
|
||||||
|
SecureRandomFuture.menuAction(var3, var4, var5, var6, var15, var16, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||||
}
|
}
|
||||||
|
|
||||||
class188.dragInventoryWidget = WorldMapElement.getWidget(var5);
|
if (var1 == 2 && menuOptionsCount > 0) {
|
||||||
dragItemSlotSource = var4;
|
this.openMenu(MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||||
field732 = MouseHandler.MouseHandler_lastPressedX;
|
|
||||||
field744 = MouseHandler.MouseHandler_lastPressedY;
|
|
||||||
if (var2 >= 0) {
|
|
||||||
class1.tempMenuAction = new MenuAction();
|
|
||||||
class1.tempMenuAction.argument1 = menuArguments1[var2];
|
|
||||||
class1.tempMenuAction.argument2 = menuArguments2[var2];
|
|
||||||
class1.tempMenuAction.opcode = menuOpcodes[var2];
|
|
||||||
class1.tempMenuAction.argument0 = menuIdentifiers[var2];
|
|
||||||
class1.tempMenuAction.action = menuActions[var2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (class188.dragInventoryWidget != null && !field867 && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
||||||
|
var19 = field732;
|
||||||
|
var10 = field744;
|
||||||
|
MenuAction var11 = class1.tempMenuAction;
|
||||||
|
SecureRandomFuture.menuAction(var11.argument1, var11.argument2, var11.opcode, var11.argument0, var11.action, var11.action, var19, var10);
|
||||||
|
class1.tempMenuAction = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
field867 = false;
|
||||||
|
itemDragDuration = 0;
|
||||||
|
if (class188.dragInventoryWidget != null) {
|
||||||
|
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
class188.dragInventoryWidget = WorldMapElement.getWidget(var5);
|
||||||
|
dragItemSlotSource = var4;
|
||||||
|
field732 = MouseHandler.MouseHandler_lastPressedX;
|
||||||
|
field744 = MouseHandler.MouseHandler_lastPressedY;
|
||||||
|
if (var2 >= 0) {
|
||||||
|
class1.tempMenuAction = new MenuAction();
|
||||||
|
class1.tempMenuAction.argument1 = menuArguments1[var2];
|
||||||
|
class1.tempMenuAction.argument2 = menuArguments2[var2];
|
||||||
|
class1.tempMenuAction.opcode = menuOpcodes[var2];
|
||||||
|
class1.tempMenuAction.argument0 = menuIdentifiers[var2];
|
||||||
|
class1.tempMenuAction.action = menuActions[var2];
|
||||||
|
}
|
||||||
|
|
||||||
|
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("hf")
|
@ObfuscatedName("hf")
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ public class WorldMapID {
|
|||||||
signature = "(S)V",
|
signature = "(S)V",
|
||||||
garbageValue = "-6260"
|
garbageValue = "-6260"
|
||||||
)
|
)
|
||||||
static final void method537() {
|
@Export("sortMenuEntries")
|
||||||
|
static final void sortMenuEntries() {
|
||||||
boolean var0 = false;
|
boolean var0 = false;
|
||||||
|
|
||||||
while (!var0) {
|
while (!var0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user