This allows different final messages being built for split chat vs
normal chat, fixing <colNORMAL> incorrectly applying the default chatbox
color to split chat.
Searching the replacement isn't necessary since it won't ever have any
additional col tags except for the ones identified by getLastColor, which
would be identified even when searching the original message. Instead,
just search the original message up to and including the match.
This was an issue with multiple name matches, since it was applying the
replacement with its close color to all matches, even though only
scanning the message for the last color up until the first match
It is possible a clientscript can update the energy in between the last
game tick and the current frame, causing the text to flicker between run
energy and our replacement. This just sets the text before each frame.
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.