I can confirm this issue on Manjaro. It seems to be a problem with LWJGL 3. Here is a rundown of my tests:
Opening screenshot works fine up to 1.12.2.
In 17w43b and 17w43a, opening screenshot does not work at all as clicking the chat does nothing. These are the first 1.13 snapshots, and are also the first versions to use LWJGL 3 instead of LWJGL 2.
Starting from 17w45a, the bug appears (the game hangs until the image viewer is closed). Opening the resource pack folder freezes the game in the exact same way.
1.13.x, 1.14.x and 1.16.x suffer the same problems as 17w45a
The problem remains the same in 1.17 snapshots, I was not able to reproduce any crash (tested with 20w03a and 20w15a).
If you are self hosting your server, it could simply be caused by a poor upstream bandwidth.
This is intended, you need to use a smithing table.
@unknown I just attached the crash-report as you asked.
Also, I don't think anyone experienced the issue in 1.14.3, I definitely didn't and I have played a long time on that version.
The issue first appeared in 1.14 snapshots for me, in 19w06a according to this bug report and to my testing. Here is the list of version I tested and whether or not they are affected:
1.14.4 => yes
1.14.4-pre3 => yes
1.14.4-pre2 => yes
1.14.4-pre1 => no
1.14.3 => no
1.14.3-pre3 => no
1.14.3-pre2 => no
1.14.3-pre1 => yes
1.14.2 => yes
1.14.1 => yes
1.14 => yes
19w06a => yes
19w05a => no
19w02a => no
1.13.2 => no
So the problem was introduced in 19w06a, fixed in 1.14.3-pre2, and then re-introduced in 1.14.4-pre2.
I am running plasmashell 5.16.3 on Arch Linux and Minecraft is in a maximized window.
How would you do that with the Vanilla launcher?
After digging a little deeper it has nothing to do with LWJGL directly and comes down to the way the game incorrectly opens the sub-process that opens the file. I have implemented a fix in this fabic mod.
The game creates a sub-process that runs the relevant command that will open the file (
xdg-open
on Linux), and then waits to see if that process prints out any error. Relevant vanilla method innet.minecraft.util.OperatingSystem
with YARN mappings:The problem here is the while loop: I don't know how the relevant commands behave on other operating systems, but on Linux, xdg-open creates a process that inherits its standard input/output/error streams, meaning that the error stream the while loop is checking will only be closed when the child process exits, hence why the loop freezes the game until you close the image viewer / file viewer / whatever was opened.
The correct way to handle error messages from the child process or the open command would be to used something non-blocking, like making the child inherit the game's output stream using a ProcessBuilder. Example implementation from the mod above: