Firstly,
I've narrowed it down to the following:
Calling FancyMessage.send(CommandSender) will lead it to toOldMessageFormat() (in the case of the CommandSender not being a Player, which is true for the ConsoleCommandSender), which then uses a StringBuilder to get a textual representation of the FancyMessage. The issue is that it appends the TextualComponent to the StringBuilder, and it has no toString() that outputs the real text. So, the class and hash code are output instead, creating this issue.
Firstly, I've narrowed it down to the following: Calling FancyMessage.send(CommandSender) will lead it to toOldMessageFormat() (in the case of the CommandSender not being a Player, which is true for the ConsoleCommandSender), which then uses a StringBuilder to get a textual representation of the FancyMessage. The issue is that it appends the TextualComponent to the StringBuilder, and it has no toString() that outputs the real text. So, the class and hash code are output instead, creating this issue.