The bug
When holding down shift and pressing an arrow key to move servers in the list, moving it when it is already at the bottom of the list, and press shift+down, the game crashes.
How to reproduce
You'll need quite the server list, so you can press and hold shift+up so it keeps shifting a server up
Do that (press and hold shift+up to shift up multiple times) and then press and hold shift+down to shift it down repeatedly
When you reach the bottom of the list, the auto shift thing throws an error
Note: it doesn't seem to work on the top of the list.
Crash report
1.15.2: crash-2020-06-13_11.54.48-client.txt
Description: keyPressed event handler
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:418)
at java.util.ArrayList.get(ArrayList.java:431)
at dnv.a(SourceFile:60)
at dnv.a(SourceFile:76)
at dii$d.a(SourceFile:412)
at dii$d.keyPressed(SourceFile:403)
at ddr.keyPressed(SourceFile:64)
at dcr.keyPressed(SourceFile:375)
at dii.keyPressed(SourceFile:70)
at ddr.keyPressed(SourceFile:64)
at dgb.keyPressed(SourceFile:98)
at dig.keyPressed(SourceFile:185)
at dbl.a(SourceFile:336)
at dbl$$Lambda$1939/1470898703.run(Unknown Source)
at dgb.wrapScreenError(SourceFile:447)
at dbl.a(SourceFile:334)
at dbl.c(SourceFile:429)
at dbl$$Lambda$1938/823663080.run(Unknown Source)
at ais.execute(SourceFile:94)
at dbl.b(SourceFile:429)
at dbl$$Lambda$1508/1004728150.invoke(Unknown Source)
at org.lwjgl.glfw.GLFWKeyCallbackI.callback(GLFWKeyCallbackI.java:37)
at org.lwjgl.system.JNI.invokeV(Native Method)
at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3174)
at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:123)
at dbn.d(SourceFile:1015)
at dbn.d(SourceFile:619)
at net.minecraft.client.main.Main.main(SourceFile:204)
I can't reproduce in 1.15.2 or 1.16 pre 5, it always stop shifting and it doesn't crash :s