Affects Version/s: 1.15.2, 20w17a
Fix Version/s: None
When the game tries to resolve too many player heads at once (12 or more) it can cause a crash. This can corrupt a world, for example when a map with lot of armor stands with player heads are loaded. This is currently breaking a bunch of maps on Java Realms. This can also be used to kick players from servers and corrupt worlds.
This is caused by the skin api being rate-limited, when you make too many requests you get a response like this. Since the game cannot find the "id" or "name" fields it crashes. This was a recent API change.
- Summon the following entity stack in the world with a command block. This will corrupt your world!
Using the API
- Open the following page in a browser
- Keep refreshing the page rapidly
When fixing this keep in mind that older versions won't be able to deal with the rate-limiting. As long as the API has a rate limit, this crash will persist on existing maps for 1.15.2.
A potential fix is to add an invalid "name" in the rate-limiting object so at least older versions don't crash. For future versions, it should actually retry to request the skin after a while. Reverting the rate-limiting until 1.16 is released is also an option.
A better way to fix this is to version the API. Where the existing endpoint will give as response a steve head, or alternatively a black and magenta skin with "RATE LIMIT" as name. Future versions of the game would use a new endpoint that returns the proper rate limit message, allowing the game to handle those (and future) errors.