The command could not work before because the capitalize in
longBossName would produce a capital Of causing the hiscore
skill name to not match.
This normalizes from the hiscore name by removing : to compare
it to our internal boss names.
FileOutputStream (by design) passes FILE_ATTRIBUTE_NORMAL and
CREATE_ALWAYS to CreateFile, which causes it to fail with access denied
if it is opening a FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM file
See JDK-8047342
debug mode aggressively checks and throws whenever a gl error occurs.
The glBlitFramebuffer call is bizzare because with the alpha channel
enabled on the renderbuffer it appears to work correctly despite
causing an INVALID_OPERATION error. We have no use for the alpha channel
since the dst alpha value is always 1, so it can just be disabled on macos.
This field was originally used to show a catch rate overlay, but all its
uses were removed in 76fbab60fc when the
overlay was removed due to unreliable behavior.
Orginally the only way to form a party was via Discord invites. This has
changed semi-recently to allow sharing party ids instead.
The Discord invite system is finnicky since it doesn't work unless
Discord is detected, doesn't work right with multiple clients, or
multiple Discords. And, discord_rpc is deprecated without a suitable
replacement.
This changes the party system to instead always require sharing party
ids instead.
It can't be assumed the array passed to setModIcons is still correct in
the async image callbacks. Instead, fetch the current modicons array in
the callback and use that.
The inventory can be moved pre-interface tick by the tli subchange
listener, as well as post-our client tick event from script events
running.
This makes it difficult to correctly and generically move the interface,
since it would have to be moved pre-interface tick and also pre-frame.
Currently the code moves the interface pre-frame, which looks okay, but
since it is ticking the interface when it is a different position,
clicks on it do not work correctly.
We do not have events for pre-interface tick, so use forced position to
reliably set the position
Hovered overlay already accounts for render order, with the exception of
the vanilla WidgetOverlays which are drawn prior to any of our overlays
being drawn. Instead we order them in render-order, which works for the
dynamic-layer ones.
The minimap must be top_right so that our overlays layout around it
correctly, which currently causes it to be picked up first over dynamic
overlays due to the way overlay sorting is done.
Ctrl + backspace is an overwhelmingly common keybind for clearing the
word before the cursor. Meanwhile, clearing the current line is not as
common a keybind, so having an unset default is more sensible here for
users to decide for themselves what keybind they would prefer.
because WidgetOverlays in their default position render in the vanilla
position it can cause other overlays to occlude previous overlays when
they should not