2121import com .viaversion .viabackwards .api .BackwardsProtocol ;
2222import com .viaversion .viabackwards .protocol .v1_12_2to1_12_1 .storage .KeepAliveTracker ;
2323import com .viaversion .viaversion .api .connection .UserConnection ;
24- import com .viaversion .viaversion .api .protocol .remapper .PacketHandlers ;
2524import com .viaversion .viaversion .api .type .Types ;
2625import com .viaversion .viaversion .protocols .v1_12to1_12_1 .packet .ClientboundPackets1_12_1 ;
2726import com .viaversion .viaversion .protocols .v1_12to1_12_1 .packet .ServerboundPackets1_12_1 ;
@@ -34,32 +33,20 @@ public Protocol1_12_2To1_12_1() {
3433
3534 @ Override
3635 protected void registerPackets () {
37- registerClientbound (ClientboundPackets1_12_1 .KEEP_ALIVE , new PacketHandlers () {
38- @ Override
39- public void register () {
40- handler (packetWrapper -> {
41- Long keepAlive = packetWrapper .read (Types .LONG );
42- packetWrapper .user ().get (KeepAliveTracker .class ).setKeepAlive (keepAlive );
43- packetWrapper .write (Types .VAR_INT , keepAlive .hashCode ());
44- });
45- }
36+ registerClientbound (ClientboundPackets1_12_1 .KEEP_ALIVE , wrapper -> {
37+ long keepAlive = wrapper .read (Types .LONG );
38+ int id = wrapper .user ().get (KeepAliveTracker .class ).track (keepAlive );
39+ wrapper .write (Types .VAR_INT , id );
4640 });
4741
48- registerServerbound (ServerboundPackets1_12_1 .KEEP_ALIVE , new PacketHandlers () {
49- @ Override
50- public void register () {
51- handler (packetWrapper -> {
52- int keepAlive = packetWrapper .read (Types .VAR_INT );
53- long realKeepAlive = packetWrapper .user ().get (KeepAliveTracker .class ).getKeepAlive ();
54- if (keepAlive != Long .hashCode (realKeepAlive )) {
55- packetWrapper .cancel (); // Wrong data, cancel packet
56- return ;
57- }
58- packetWrapper .write (Types .LONG , realKeepAlive );
59- // Reset KeepAliveTracker (to prevent sending same valid value in a row causing a timeout)
60- packetWrapper .user ().get (KeepAliveTracker .class ).setKeepAlive (Integer .MAX_VALUE );
61- });
42+ registerServerbound (ServerboundPackets1_12_1 .KEEP_ALIVE , wrapper -> {
43+ int keepAlive = wrapper .read (Types .VAR_INT );
44+ Long realKeepAlive = wrapper .user ().get (KeepAliveTracker .class ).consume (keepAlive );
45+ if (realKeepAlive == null ) {
46+ wrapper .cancel (); // stale/bad
47+ return ;
6248 }
49+ wrapper .write (Types .LONG , realKeepAlive );
6350 });
6451 }
6552
0 commit comments