The Download group of packets was in desperate need for a restructuring.
Now, instead of using `DownloadServerList` to list everything, different object types now are downloaded through their own seperate packets. (Improving network efficiency)
This was a change I made to the Lang API a while back, and now it has made it's way into SubData.
Packets are now tied to channels (`n`) and then handles (`h`) within those channels.
Simple requests like those used to list hosts or servers shouldn't require messing around trying to keep up with the SubData Direct protocol. It should be easy, right?
Now, SubAPI includes methods simalar to those seen in SubServers.Bungee for accessing data for Hosts, Servers, SubServers, Proxies, & Players easily. Requests the SubData Packet API is already capable of making will be included as methods in these variables.
This commit changes the way SubServers.Host launches itself and loads it's plugins. Overall loading plugins this way is more efficient, faster, and can cause less problems than before.
Plugins will still use the package.xml & @SubPlugin annotation system to be loaded.
Also, there are some changes to the logger that better support async logging.
EventPriority is a fixed enum, where EventOrder is a short value (with predefined settings for ease of use) allowing for more fine tuning on when your events should be run
This marks the beginning of SubServers.Host. As of now it is just a
simple plugin loading API, but it is planned to become a way to host
servers on other machines.
Also, SubAPI now checks to make sure variables aren't null in many
places.