Implement multiline tooltips properly. Fixes #6.
Works even better than #13 and #19.
Disclaimer: Not tested with complex textual values which include
ChatColor.toString()-marked colors.
Document trait inheritance of tooltips.
Abstract JSON writing from string conversion.
Added JSON string.
Wrap hover data in a JSON representable object.
This now uses JsonString to wrap a string as a Json value in an OOP way.
Add formatted text support to FancyMessage. Fixes #29.
This commit adds formatted text by accepting a FancyMessage without
click or hover data (enforced upon set). The abstraction made possible
by JsonRepresentedObject allows easily writing formatted or unformatted
text to the stream, which is needed because two distinct types of data
are used here: raw string (not composite object), and formatted message
(composite object).
Made more objects cloneable. Addresses #23.
Added support for multiple line formatted tooltips.
This commit implements that by iterating through message components of
each message, and after reaching the end of a message, appending a
newline message component.
Do not clone empty message components.
Don't consider empty strings as having text
Do not display extra newline for multiline tooltips.
Tooltips do NOT in fact inherit display characteristics.
Fixed documentation as such. This is consistent with the API not having
any form of root characteristics, and is probably a good thing for
consistency's sake.
Added method which converts iterable to array.
[Breaking] Reduce code duplication in FancyMessage, and add tooltip
method accepting Iterable<FancyMessage>
This was broken because |Iterable<FancyMessage>| == |Iterable<String>|
(type erasures), so I changed the tooltip methods to be
tooltipUnformatted and tooltipFormatted
Eliminate null line from top of formatted lore lists.
This is actually done by invalidating the internal state temporarily to
remove the default MessagePart created by the constructor. Doing so is
necessary to make sure there isn't a (GSON equivalent to a) NPE later
down the line.
FancyMessage is now an iterable of message parts.
This allows for more logical iteration through objects, and although the
method is explicitly marked as not for public API consumption, it is
still publicly visible.
This may not be the best option, in which case I will happily revert the
commit.
Made method name changes requested by @mkremins.
Merge changes from upstream master branch
Merge pull request #30 from glen3b/tooltips++

Improve tooltip API greatly. Fixes issues #6 and #29.
Merged changes from upstream (conflict resolution)