Prior to this commit, the filter state was only set initially when
logging in, causing NPEs and errant plugin behavior if toggled on when
already logged in.
2020-03-31 01:01:39 [Client] WARN n.runelite.client.eventbus.EventBus - Uncaught exception in event subscriber
java.lang.NullPointerException: null
at net.runelite.client.plugins.barrows.BarrowsPlugin.isInCrypt(BarrowsPlugin.java:252)
at net.runelite.client.plugins.barrows.BarrowsPlugin.onGameStateChanged(BarrowsPlugin.java:166)
at net.runelite.client.eventbus.EventBus$Subscriber.invoke(EventBus.java:73)
at net.runelite.client.eventbus.EventBus.post(EventBus.java:222)
at net.runelite.client.callback.Hooks.post(Hooks.java:167)
at client.oz(client.java:62117)
at bn.ew(bn.java:1275)
at client.zl(client.java:2476)
at client.u(client.java:1114)
at br.kq(br.java:336)
at br.run(br.java:315)
at java.lang.Thread.run(Thread.java:748)
This was leaking instances of Clip, which on linux/alsa+alsa-pulseaudio
keeps a connection to pulseaudio open forever, for each notification
which will eventually lock/crash the pulse daemon.
If we just made it close the clip, it would become difficult to change
the volume because the volume interface would go away as soon as the
clip has stopped playing, so instead we keep the clip around after it
has been loaded if the mtime of the file hasn't changed.
Updates the energy recovery rate calculation to reflect the changes made
in the 9th January 2020 game update.
Each individual piece of graceful now boosts your recovery rate by 3%,
with an extra 1% for the top and legs. With the full set, an extra boost
of 10% is added, totalling 30%. Previously, there was no boost for
individual pieces, instead the full set was required for a flat boost of
30%.
Prior to this commit, addModalTooltip only added a button listener to
update the tooltip when its state changed. This, however, did not set
the initial tooltip and leaves modal tooltip buttons in the client
lacking a tooltip until they are toggled. This commit sets the initial
tooltip state using the same toggle check as is used in the listener.