Rewrite again. Makes adding protocol a lot easier and now supports
online mode, but now ProtocolLib is incompatible :(