GlowstoneMC/Glowstone — pull request #570 by turt2live (2014-11-26 03:10:36+00:00)
Title: Support LilyPad proxy information (adds #569)

Please refer to #569 for a technical description of the data format and why this is important.

-----

This PR adds support for the proxy data sent by [LilyPad](http://www.lilypadmc.org/). This is done by attempting to parse the JSON data first. If parsing failed, then the data is likely Bungee or other (unsupported) data. If parsing passed on the other hand, then we rip it apart for our purposes.

The Bungee parsing has only been changed to ensure that the two unsupported values are set to null. All other processing remains unchanged.

This PR also adds support for the security key LilyPad sends for it's internal use. This is not used by Glowstone at all but is included to make the lives of the LilyPad maintainers easier. By having this field exposed (to a degree) helps ensure that they don't have to keep up to date with our networking logic and rewrite the GlowProtocol used for handshakes. It will still require effort on their part to get access to this field, but at least it is much easier than having to override our networking.

It should also be noted that this PR technically allows the use of multiple proxies (ie: Bungee and LilyPad). Whether or not the independent assemblies permit that is another story, but the handling of the additional proxy data permits the use of both proxies.