Open b-chu opened 4 years ago
We had a other user report the same issue, identical stacktrace.
modpack: SkyFactory4 4.1.0 Headcrumbs: 1.12.2-2.0.5.17
Just before the crash they had this logged to the console:
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: java.lang.IllegalArgumentException: Name and ID cannot both be blank
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at com.mojang.authlib.GameProfile.<init>(GameProfile.java:26)
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:186)
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:173)
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.tileentity.TileEntitySkull.updateGameProfile(SourceFile:151)
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at ganymedes01.headcrumbs.utils.ThreadedProfileFiller$1.run(ThreadedProfileFiller.java:25)
[Thread-282/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.Thread.run(Unknown Source)
It seems the format of an error response from Mojang's API has changed, it now looks like:
{
"path" : "/session/minecraft/profile/<uuid>",
"errorType" : "Too Many Requests",
"developerMessage" : "Too Many Requests",
"details" : { }
}
whilst authlib expects the following structure (from: ...authlib.yggdrasil.response.Response)
{
"error": <String>,
"errorMessage": <String>,
"cause": <String>
}
This means that the response is non-null, but does not contain an error field. As a result, YggdrasilAuthenticationService#makeRequest treats this as a valid response and does not throw.
This means both ID and Name are null in the returned response.
The API was reported as having changed on the 24/04/20 to Mojang, although received no response: https://bugs.mojang.com/browse/WEB-2198
This change may well be a mistake, as authlib included in 1.15 expects the same response structure.
The new rate limits mentioned seem to have been tweaked, it took 15 requests to trigger a rate limited response, though that was with a single UUID. Testing with a unique UUID per request was not performed as I do not have that many UUIDs easily accessible!
tl;dr is that any rate limited request will now throw an unhandled exception due to Mojang.
24/04/2020 was also the first day this was reported to us, though without enough information to do anything useful with: DarkPacks/SkyFactory-4#1429
New bug report to Mojang: https://bugs.mojang.com/browse/WEB-2381
Playing Sky Factory 4 Headcrumbs version 2.0.4
Crash log below https://pastebin.com/tBCyHYRC
There's no indication that it's Headcrumbs in the log, but I was suspicious of the error it was throwing. The only thing I did was disable Headcrumbs (and Twitchcrumbs and Wither Crumbs) and it worked again. So almost 100% sure it's Headcrumbs
To make this issue Googleable: