Skip to content

Commit 964d484

Browse files
committed
Fix world border speed: varlong, not varint (regressed in 1.19)
ClientboundInitializeBorderPacket and ClientboundSetBorderLerpSizePacket encode the border lerp time as a VarLong in vanilla (long lerpTime, writeVarLong/readVarLong). minecraft-data had speed correct as varlong in 1.17-1.18.2, but it regressed to varint in 1.19 and was never fixed - wrong for every version from 1.19 to 1.21.11. VarInt and VarLong encode identically below 2^28 ms (~74h), so this only breaks on long (multi-day) border interpolations, where the multi-byte VarLong mis-parses as a VarInt. Verified readVarLong/writeVarLong against the Mojang server jars for 1.19.4 and 1.21.3-1.21.9. 1.19 and 1.19.2 also needed varlong re-declared as a native type (it had been dropped when the field regressed to varint and nothing else used it); later versions already declare it. proto.yml edited, protocol.json regenerated with npm run build.
1 parent a31412e commit 964d484

32 files changed

Lines changed: 68 additions & 64 deletions

data/pc/1.19.2/proto.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
^types:
44
varint: native
5+
varlong: native
56
optvarint: varint
67
pstring: native
78
buffer: native
@@ -1417,7 +1418,7 @@
14171418
z: f64
14181419
oldDiameter: f64
14191420
newDiameter: f64
1420-
speed: varint
1421+
speed: varlong
14211422
portalTeleportBoundary: varint
14221423
warningBlocks: varint
14231424
warningTime: varint
@@ -1429,7 +1430,7 @@
14291430
packet_world_border_lerp_size:
14301431
oldDiameter: f64
14311432
newDiameter: f64
1432-
speed: varint
1433+
speed: varlong
14331434
packet_world_border_size:
14341435
diameter: f64
14351436
packet_world_border_warning_delay:

data/pc/1.19.2/protocol.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"types": {
33
"varint": "native",
4+
"varlong": "native",
45
"optvarint": "varint",
56
"pstring": "native",
67
"buffer": "native",
@@ -4745,7 +4746,7 @@
47454746
},
47464747
{
47474748
"name": "speed",
4748-
"type": "varint"
4749+
"type": "varlong"
47494750
},
47504751
{
47514752
"name": "portalTeleportBoundary",
@@ -4796,7 +4797,7 @@
47964797
},
47974798
{
47984799
"name": "speed",
4799-
"type": "varint"
4800+
"type": "varlong"
48004801
}
48014802
]
48024803
],

data/pc/1.19.3/proto.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,7 +1441,7 @@
14411441
z: f64
14421442
oldDiameter: f64
14431443
newDiameter: f64
1444-
speed: varint
1444+
speed: varlong
14451445
portalTeleportBoundary: varint
14461446
warningBlocks: varint
14471447
warningTime: varint
@@ -1453,7 +1453,7 @@
14531453
packet_world_border_lerp_size:
14541454
oldDiameter: f64
14551455
newDiameter: f64
1456-
speed: varint
1456+
speed: varlong
14571457
packet_world_border_size:
14581458
diameter: f64
14591459
packet_world_border_warning_delay:

data/pc/1.19.3/protocol.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4829,7 +4829,7 @@
48294829
},
48304830
{
48314831
"name": "speed",
4832-
"type": "varint"
4832+
"type": "varlong"
48334833
},
48344834
{
48354835
"name": "portalTeleportBoundary",
@@ -4880,7 +4880,7 @@
48804880
},
48814881
{
48824882
"name": "speed",
4883-
"type": "varint"
4883+
"type": "varlong"
48844884
}
48854885
]
48864886
],

data/pc/1.19.4/proto.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@
15061506
z: f64
15071507
oldDiameter: f64
15081508
newDiameter: f64
1509-
speed: varint
1509+
speed: varlong
15101510
portalTeleportBoundary: varint
15111511
warningBlocks: varint
15121512
warningTime: varint
@@ -1518,7 +1518,7 @@
15181518
packet_world_border_lerp_size:
15191519
oldDiameter: f64
15201520
newDiameter: f64
1521-
speed: varint
1521+
speed: varlong
15221522
packet_world_border_size:
15231523
diameter: f64
15241524
packet_world_border_warning_delay:

data/pc/1.19.4/protocol.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4979,7 +4979,7 @@
49794979
},
49804980
{
49814981
"name": "speed",
4982-
"type": "varint"
4982+
"type": "varlong"
49834983
},
49844984
{
49854985
"name": "portalTeleportBoundary",
@@ -5030,7 +5030,7 @@
50305030
},
50315031
{
50325032
"name": "speed",
5033-
"type": "varint"
5033+
"type": "varlong"
50345034
}
50355035
]
50365036
],

data/pc/1.19/proto.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
^types:
44
varint: native
5+
varlong: native
56
optvarint: varint
67
pstring: native
78
buffer: native
@@ -1378,7 +1379,7 @@
13781379
z: f64
13791380
oldDiameter: f64
13801381
newDiameter: f64
1381-
speed: varint
1382+
speed: varlong
13821383
portalTeleportBoundary: varint
13831384
warningBlocks: varint
13841385
warningTime: varint
@@ -1390,7 +1391,7 @@
13901391
packet_world_border_lerp_size:
13911392
oldDiameter: f64
13921393
newDiameter: f64
1393-
speed: varint
1394+
speed: varlong
13941395
packet_world_border_size:
13951396
diameter: f64
13961397
packet_world_border_warning_delay:

data/pc/1.19/protocol.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"types": {
33
"varint": "native",
4+
"varlong": "native",
45
"optvarint": "varint",
56
"pstring": "native",
67
"buffer": "native",
@@ -4624,7 +4625,7 @@
46244625
},
46254626
{
46264627
"name": "speed",
4627-
"type": "varint"
4628+
"type": "varlong"
46284629
},
46294630
{
46304631
"name": "portalTeleportBoundary",
@@ -4675,7 +4676,7 @@
46754676
},
46764677
{
46774678
"name": "speed",
4678-
"type": "varint"
4679+
"type": "varlong"
46794680
}
46804681
]
46814682
],

data/pc/1.20.2/proto.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@
15801580
z: f64
15811581
oldDiameter: f64
15821582
newDiameter: f64
1583-
speed: varint
1583+
speed: varlong
15841584
portalTeleportBoundary: varint
15851585
warningBlocks: varint
15861586
warningTime: varint
@@ -1592,7 +1592,7 @@
15921592
packet_world_border_lerp_size:
15931593
oldDiameter: f64
15941594
newDiameter: f64
1595-
speed: varint
1595+
speed: varlong
15961596
packet_world_border_size:
15971597
diameter: f64
15981598
packet_world_border_warning_delay:

data/pc/1.20.2/protocol.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5198,7 +5198,7 @@
51985198
},
51995199
{
52005200
"name": "speed",
5201-
"type": "varint"
5201+
"type": "varlong"
52025202
},
52035203
{
52045204
"name": "portalTeleportBoundary",
@@ -5249,7 +5249,7 @@
52495249
},
52505250
{
52515251
"name": "speed",
5252-
"type": "varint"
5252+
"type": "varlong"
52535253
}
52545254
]
52555255
],

0 commit comments

Comments
 (0)