The value cannot be more than MAX_VALUE so the previous condition was
never met. Additionally use MAX_QUANTITY constant instead of abusing
char max value which is completely unrelated.
It modifies various fields in the ui and should be running on edt.
Additionally add a clear listener to reset the search state when the
input is cleared.
This requires changing the hiscore client to be async so that the
response can be properly applied on the edt
The Discord invites requires the party size to be >0 for invites to work.
Previously this was not updating the presence with the 1 (local) member
after joining due to the plugin event handler running prior to the
service adding the member to the party.
This also changes the party id to always be null when not in a party instead of
set to the special local party id. This simplifies the checks in the
plugins trying to differentiate being in your own party vs not being in
a party.
The overlay was clobbering the plugins sorted xpglobe list when it
re-sorted it by skill instead, preventing the expire routine from
correctly expiring xpglobes. Instead keep the list in render order (by
skill) and just check the full list for expired orbs, since there are
not usually many to check.
Use the menu type instead of assuming if the param1 is a valid widget
then the menu is for a widget. The params are free form data which is
specific to the menu type, so it is possible for it to unintentionally be
a valid widget id even when it is something else.
This changes tag tabs to actually put the bank in search mode, still
without providing any search input, so that the bank tab builder will
draw tab separators (both the separator line and tab text label)
This fixes a lot of edge cases which required us to re-search for things
after input was re-used when a tag tab was open, and removes the
requirement of having the bank search text be in sync with the
currently selected tab.
This also no longer parses the tag tab out of the title during times
when the input is being re-used (like Withdraw-x) which was broken
earlier from the bank plugin changing the title to include the value of
searches.
A new tag tab title is being set now on all tag tab views so the old tag
tab tab title event can be removed.
The widget child array is filled with nulls to hide the sprites. It is also
valid for the child array to have null entries in it in general, but that does
not happen otherwise.
Previously the widget hidden event would not run until the next client
tick, due to it being on a timer, and the game tick event being deferred
until the next frame. Now that we are hooking to the script being
executed it fires prior to the game tick event being fired.
This has been here a long time, but as far as we can tell is no longer
necessary. It is causing double instantiation of classes which are only
injected a single place.
Collections.binarySearch() does not guarantee which element is found if
there are multiple that compare equal, leaving the order of infoboxes
not necessarily in insertion order. This was an unintended side effect of
ba9ffb1d60 and
406c2bc7db.
When pressed tag/untag will first check if the npc id is tagged via
npcTags, so the menu option should be based off of that, and not whether
or not the npc is highlighted generally
The correct way to compute ha price is floor(storePrice * 0.6f). This
was being computed incorrectly everywhere except for the bank plugin.
THis is now being computed centrally via the api.
This was not actually enabling/disabling shift click on config toggle,
nor was it respecting the config option when overwriting the shift click
indexes
Guice requires nullable be visable at runtime when in reduced
functionality mode in order to build the injector due to the optional
client dependencies
This fixes having Java 9+ API dependencies generated by the compiler
when building on JDK9+ despite targeting Java 8 bytecode. This fixes the
gpu plugin linking errors when running on Java 8 after being compiled on
9+.