I will probably defer to your judgment at this point since you've been more intimate with the protocol than I have recently. But just to explain my perspective, the idea I have in my head is that minecraft-protocol would "eat" the first N packets during the handshake, status, and login steps, and then after that process is complete, the API consumer can listen to the 0x02 packets etc. In other words,  this library would handle packets in handshake, status, and login states, and the API consumer would only deal with the packets in "play" state. I'm pretty sure that's how it worked before.