Affects Version/s: 1.14.4
Fix Version/s: None
Environment:Windows 10. Java 8 Update 101. Default Java JVM flags.
Also occurs on Ubuntu 18.04.2 LTS. Openjdk-8. JVM flags listed [here|https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/].
When opening or breaking any treasure chest that contains a treasure map (ie a chest in a sunken ship or a chest in an underwater ruin) in certain regions, the game stalls and faces these issues in both SSP and SMP:
- Commands don't execute. Changing gamemode or setting a gamerule, for example, do nothing.
- If blocks are broken, they don't drop tile entities.
- Block physics don't update. If I were to break blocks beneath sand or gravel, they will not fall.
- Chat still works, and in SMP, it will still be transmitted to other players.
- Players can still move. Once the game stops stalling in SSP, I will suddenly be jolted back to an earlier position once the chest finishes searching.
- Tile entities can be thrown by the player, and they will still be rendered, even for other players in SMP. However, they cannot be picked up until after the stall.
- Chunks will still generate if players move during the stall.
In SMP, opening an afflicted chest will cause the server client to stop responding until it eventually times out.
In SSP, the game does not crash. However, it takes upwards of twenty seconds for the game to stop stalling, though this might be faster or slower on different computers.
This likely occurs because the game attempts to search for a proper place to generate the treasure map's treasure chest in a large radius around the chest. This searching seems to block the thread responsible for the above functions. SSP is able to recover despite this blocking, but on SMP, this blocked thread seems to always lead to a timeout.
Actions taken while the thread is blocked seem to be stored in a limited queue. This leads to the following behavior in SSP after the block ends:
- If the afflicted chest (or any chest) is interacted with multiple times during the thread block, then it will open up and close some random number of times up to the number of times it was interacted with.
- Even if a player moves out of the range of the chest, the chest GUI will still pop up and will not disappear until the player closes it.
- Some number of commands entered during the thread block will be executed.
- Blocks that were broken during the thread block will be restored. However, some amount of the broken blocks will break again shortly afterwards and drop their tile entity.
- If the game is paused during the thread block, the chest GUI will pop up. This will stop the pause and resume the game as though I had not paused. When the GUI is closed, the game does not pause again.
See the attached world file for a world in which this issue occurs. Opening the treasure chests located at -1162 65 5949 OR -1529 64 5891 causes the issue to occur if the loot table generates a treasure map.
To emphasize, this only occurs in certain regions (currently confirmed in r.3.11 and r.-5.11). Players can open treasure chests that contain treasure maps in other regions without issue.
Other chests placed in an affected region do not cause the issue when opened, nor do other naturally generated chests that don't generate treasure maps.