Affects Version/s: Minecraft 19w09a, Minecraft 19w11a, Minecraft 19w11b, Minecraft 19w12a, Minecraft 19w12b
Fix Version/s: Minecraft 19w13b
chro@Lovage ~ $ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (IcedTea 3.10.0) (Gentoo icedtea-3.10.0)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
chro@Lovage ~ $ uname -a
Linux Lovage 4.20.0-gentoo.zstd-22 #2 SMP Mon Dec 31 11:37:37 EET 2018 x86_64 AMD Ryzen Threadripper 1950X 16-Core Processor AuthenticAMD GNU/Linuxchro@Lovage ~ $ java -version openjdk version "1.8.0_191" OpenJDK Runtime Environment (IcedTea 3.10.0) (Gentoo icedtea-3.10.0) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) chro@Lovage ~ $ uname -a Linux Lovage 4.20.0-gentoo.zstd-22 #2 SMP Mon Dec 31 11:37:37 EET 2018 x86_64 AMD Ryzen Threadripper 1950X 16-Core Processor AuthenticAMD GNU/Linux
The only way to work around this is to set the client render distance greater than server view distance, and reconnect. F3+A or just changing the render distance after the fact do not help.
There are no errors on the server command line.
There are lots of errors like this on the client game output screen (19w11a):
02:05:15 dgb Client thread warn Ignoring chunk since it's not in the view range: 16, -21
There are lots of errors like this on the client command line (19w11b):
[0316/133139:INFO:GameCallbacks.cpp(198)] game/dga (Client thread) warn Ignoring chunk since it's not in the view range: -9, 6
Steps to reproduce (tested to work with 19w12b also):
- Start a new world on vanilla 19w12b server with unmodified configuration. (start any vanilla 19w12b server with view distance greater than 2)
- Join with a vanilla 19w12b client with render distance set to 2.
- Walk ~100 blocks in any direction. (Walk at least (MultiplayerChunkCache ^ 0.5 + 1) * 8 blocks along either X or Z axis)
You will seemingly stand on nothing now. Logging out and reconnecting allows you to load the same amount of chunks from this point to any direction.
Logs for both client and server are included. Note that all of the "fell out of the world" messages are results of the kill command on server command line, not falling down.
I can confirm that the server sends chunks too far away when client render distance is less than the server's, only for the client to discard them, and it won't re-send them when the client would actually need them.
- both server and client are vanilla 19w11b.
- client render distance: 2
- server view distance: 10
Connected to the server standing in chunk [0, 0]
The client ignores chunks:
- [-11, 1] through [-11, 11]
- [-10, 11] through [-6, 11]
- [-10, -10] through [10, 10], except for a smaller square in it, [-4, -4] through [4, 4].
The smaller square not discarded, [-4, -4] through [4, 4], is the same size as the cache displayed on the f3 overlay:
MultiplayerChunkCache: 81, 81
When walking over to chunk [1, 0], the client ignores chunks [11, -10] through [11, 10] and discards [-4, -4] through [-4, 4] leaving MultiplayerChunkCache 81, 72
Same with walking (along X) to chunk (2, 3, 4, 5); ignoring X (12, 13, 14, 15); discarding X (-3, -2, -1, 0); chunks remaining in cache (63, 54, 45, 36).
Blocks in chunk [5, 0] are not rendered (entities are).
When stepping over the edge to the seemingly nonexistent chunk [5, 0], the client ignores chunks [15, -10] through [15, 10] and discards [0, -4] through [0, 4] leaving MultiplayerChunkCache 81, 36.
When "air walking" back over to chunk [4, 0], the client (again) ignores chunks ( [-7, 1] through [-7, 11] ) and ( [-6, -10] through [-6, 0] )
At this point chunks [-3, -4] through [0, 4] have been unloaded from the client and there is no way to load them either without reconnecting to the server (this includes the chunk I connected standing in, [0, 0]). F3 overlay shows MultiplayerChunkCache: 81, 36 now.