if you started 2 clients with different configs at the same time one
client could delete files out from under the other while it was trying
to load them, causing them to fail to load
The quest icons are also loaded on world map open, so all this has to do is
load the icons if the player is logged in with the map open at the time the
plugin is started.
This has not worked in the past, since the Examine option is not an inventory
action and so cannot ever be shift-click swapped, and causes a crash now if
set due to it subtracting the Examine menu op from ITEM_FIRST_OPTION.
This was queueing potentially multiple tasks if the config was changed on the
login screen, all waiting for the player to be logged in. Instead, use the game
state change event to load the icons.
Since c1aa0c4898 moved client startup to
be much earlier, the plugins can now start after the client is already
at the login screen. This causes the low detail plugin and chat icon
manager to not initialize correctly as they are waiting on the event
for the login screen.
Disposed frames are still reachable via Window.getWindows() until gcd, and can
receive and process events. We don't want the splash screen to close the app if
it receives a window close event after being disposed.
The quit strategy API existed in com.apple.eawt prior to Java 9, and was moved
into java.desktop in 9. This move makes our orange-extensions API incompatiable
with the 9 eawt package too, so we can not use Application.setQuitStrategy on
9+ either, without making orange-extensions multi-release too.
Since Desktop.setQuitStrategy is the new standard way of doing this, use it if
available, and otherwise use the Java 8 Application.setQuitStrategy instead.
This allows for overrides on template chunks to be defined based on the
chunk's position, not where the chunk ends up in the scene. I think this
only really matters for the POH, which stores each style across all 4
planes of 3 (or 7) regions.
Startup races with stretch mode plugin startup and clientui startup, so starting with stretched mode on doesn't reliably work. Just reset a few frames after startup to be sure.
This fixes the following issues:
1) resize events for the client not being propagated to the listener on
the canvas
2) resizing the client in fixed mode not triggering a resetSize due to
the underlying canvas size not changing
3) maximizing the client calling restSize too soon causing it to have no
effect
The client has been recreated with a new builder off of the http-api
client for awhile anyway since runelite-client has multiple other
requirements (caching, tls, etc). This fully moves creation of the
okhttp client into both http-service and runelite-client separately.
I've kept the CLIENT field in http-api for now since a few external
plugins depend on it currently.