The bug
The chunk NBT data includes a field called LastUpdate
that stores the timestamp in ticks when the player last updated he chunk. It is updating erratically in spawn chunks. When a player is in range of a spawn chunk, the field sometimes updates and sometimes does not.
Attached is an image of a world where I flew about the map in creative mode, generating the terrain as I went. The LastUpdate
for each chunk is plotted as a heat map, with blue being old, red being recent and pink and white being the chunks with the newest updates. The location of the spawn chunks are clearly visible as an area with spotty colouring in the centre on the right side.
Attachments
Comments 6
The game has undergone some massive changes, so does this issue still occur in 1.16.1 or 20w29a (or later)? If so, please provide some reproduction steps.
Still an issue in 1.16.1.
Reproduced as follows:
Set render distance to 11 chunks. (Exact render distance is not important but should be greater than 8 and less than 16. Specifying the render distance ensures the chunk generation doesn't miss chunks and doesn't have too great an overlap. with these steps.)
Create a new creative mode world with seed 13.
Teleport to -512 100 -512.
Use creative mode flight to move around the world in this pattern: south to -512 512, east to -256 512, north to -256 -512, east to 0 -512, south to 0 512, east to 256 512, north to 256 -512, east to 512 -512 and south to 512 512. (This is intended to generate terrain across 4 regions in a regular grid pattern. The coordinates do not need to be exact but should be within a chunk. Use the facing angles on the F3 screen to ensure the facing direction is close to 0.0 and 180.0 when moving.)
Save the world and exit.
Extract the LastUpdate time from the chunk NBT for all chunks in regions -1,-1, -1,0, 0,-1 and 0,0.
Chunks outside the spawn chunks will conform to the time when the player was last in the chunk. Spawn chunks do not conform to this rule but will have an erratic update pattern.
Using these steps, I created a heat map, attached as
[media].
The raw data for the heatmap is attached as
[media]. The fields in the heat map are: rx=region x (relative to top left), cx=chunk x, rz=region z (relative to top left), cz=chunkz, coords=coordinate in image(x,z), LU=LastUpdate. Subtract 1 from rx and rz to get absolute region coordinates. File is sorted by coords and has 4096 lines.
Spawn chunks are located at 35,21 to 57,43 (coords).
The LastUpdate fields in the spawn chunks do not behave as expected. Instead of having a range of values, they have a few fixed values, mostly 98, 6000, 12000, 17023 and 17024. The expected values for all spawn chunks should be around 17023, 17024 (the highest values in the other chunks). Some spawn chunks have values like these but many do not. In the image, 98=black, 6000=cyan, 12000=yellow, 17023=white.
It is an old bug. It exists in 1.12.2 and 1.8.9, and probably exists in all versions between. It is probably older than 1.8.9.