You don't have to break compatibility here!
Just send a Packet250 with the actual dimension and then send Packet1Login with some random dimension, then edit it into the thing (like make a static field in NetClientHandler that sets the dimension of Packet1Login, rather than reading it from the wire in there).
Wouldn't be a lot of lines of code really...