Apparently, the setOpaque method on JPanels was causing some performance
issues on the client, the original reason I had these was so that the
base panel would have a color defined, and every container or wrapper
panel on top would just be transparent.
To fix this I have set a default JPanel background color and replaced
calls to setOpaque with calls to
setBackground with the appropriate colors.
Cause:
Time til next level relied on xp per hour being divided by 3600
(seconds in an hour). For XP rates under 3600 per hour, this would
result in a divide by zero.
Solution:
Use floats and rely on an xp per second implementation that works on
seconds instead of hours.
It appears to work as expected.

* Add javadocs to methods
* Rename 2 methods for clarity, and add Nullable tag
* Rename local vars for consistency / correctness
* Simplify setHoveredFriend to allow clearer variable names
* Finalize local vars and add KEY_PREFIX constant
* Tweak 2 log messages for clarity and crash-proofing
* Inline the comments added to generic callbacks
* Skip the tag removal on MenuEntryAdded targets
Prepared it for release, still to be redesigned.
Changes:
- Changed the background color on some panels to match the new ui
- Re-ordered the plugin to a lower position on the side bar
- Added new parameter to navigation buttons: priority.
- Ordered the navigation buttons by their priority and name in PluginToolbar.
- Added a maximum size to the navigation buttons to keep all their sizes
the same.
- Added new icons for the following plugins:
- Account (login/logout)
- Grand Exchange
- Feed
- Info
- Kourend Library
- Notes
- Screenshot
Farming Plugin:
- Redid the layout, coloring and positioning on the FarmingTrackerPanel
to include my new MaterialTabs.
- Added section divider labels in the special and tree tabs.
- Hid the patch type indicator for some patches (explained in docs).
- Added patch names for all instances of FarmingPatch (previously only
a portion of them were written for a hack that is no longer necessary).
- Created getName() method in PatchImplementation that returns the patch
type's name in a formatted style (SPIRIT_TREE -> Spirit Tree).
- Created a new tab for bushes.
MaterialTabs:
- Added onSelectEvent runnable to MaterialTab.
- Added horizontal gap to the tabs.
- Added getTab() method that returns a tab on a given index.
CustomScrollBarUI:
- Added functionality to allow the ui colors to be changed from an
external call. (setters)
ColorScheme:
- Created color constants in the ColorScheme file for the progresss bar
backgrounds and used them in the CropState enum.