1.8 Protocol Update

Adds the new 1.8 protocol.
Using an Action byte is a bad habit. What if the next protocol uses different action values? You should instead split this function into several virtual functions according to what each of them does, and let the protocol decide how to send the data, whether to use a common function with an Action parameter, or a completely different packet.