Okay, there's an awful lot of missing context here, but it looks like maybe you have a program that pretends to be a JJ2 client with the name ":" by trying to read JJ2 and JJ2+ packets and sending more packets back, including I guess chat-type packets. Here's what I said in Discord on January 7th about this; I got no response at the time, which I had hoped meant that I was right and it worked, but I guess not?
Quote:
Based on what Faw showed me--which may be wrong--it's likely that bot developers are having a problem because they're reading bytes sent from between JJ2+ instances. Or possibly they're running their own programs that are pretending to be JJ2+ instances. Either way, a server running JJ2+ version 6.4 or above is receiving packets that say "hi I'm a client running JJ2+ version 6.4 or above! I will absolutely understand packets that you send me back in return which make that same assumption!" So the server sends back packets designed for JJ2+ version 6.4 or above.
Packets inevitably change across JJ2+ versions. That's one of the specific things that warrants a change in the version number. It is not a bug, or unintentional behavior, for JJ2+ to send one packet to a client running 6.4 and a different packet to a client running 6.3. Packets are not designed to be consistent across versions, they are not a documented part of JJ2+'s API, they are just something that if you're very sneaky you can hack into, but you have to do your own research.
But if you then run a program that sits on top of JJ2+, or pretends to be JJ2+, and tries to read those packets, then your program needs to accept that you will get different packets sometimes. In this case, the confusion seems to be surrounding a packet that includes player names. This is at least the fourth time JJ2+ has changed this packet. If you try to run the same code to parse the packet sent from a server running version 6.3 as from a server running 4.2, it won't work. Similarly, if you try to treat 6.6 the same way as 6.3, that won't work either. Packets are for JJ2+ talking to itself, to other programs that promise they are JJ2+ and understand how JJ2+ talks to itself. If a third-party program, a bot, doesn't understand how JJ2+ talks to itself, it is the one breaking the promise, it is the one making the mistake.
In this case, there is one new byte before each player name in versions of the packet sent by 6.4 or above. That's the change.
|
__________________
|