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)
- Proxies connected to Redis are downloaded on startup/reload
- Named proxies are no longer removed on disconnect
- Proxies now show up in `/sub list`
- Proxies now have Add/Remove events in the API
- Proxies are included in the response of the `DownloadServerList` packet
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.
This is how SubServers will implement the Validator API that I suggested. I had to make some assumptions though (like how I don't expect BungeeCord's api to have a setTabValidator() method).
/sub reload - can now perform soft reloads
/greload - still performs hard resets
Soft Reloads mean that SubServers will load new data from the config and attempt to merge it with what is already in memory.
This is good if you need to make some quick changes, since it will only stop servers if a major change has been made to them.
However, this has the potential to cause issues, which is why the Hard Reset will continue to be tied to bungeecord command.
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.