Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-132437

Player Heads with SkullOwner NBT cause lag spikes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • None
    • Minecraft 1.12.2, Minecraft 1.13-pre5
    • None
    • Windows 7, 10. Java 8 x64
    • Unconfirmed

      Player Heads with set SkullOwner NBT cause lag due to the number of requests to the Authentication Service.

      This problem has been present for a long while but now I was able to see an exception that further confirms my theory. The following are my assumptions based on my use of the API and working with commands.

      In order to give a skin to a player head the game looks for the player's profile to get their uuid, through the API we can do it here https://api.mojang.com/profiles/minecraft

      If the player name doesn't match, the response is an empty collection which doesn't seem to be handled very well in the game, we get a server-wide lag spike and an exception.

       [12:21:33] [Client thread/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@807b29c[id=0624fe2c-c5eb-3dcd-aa73-0cb0ff392bd3,name=_madcathog,properties={},legacy=false][12:21:33] [Client thread/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@807b29c[id=0624fe2c-c5eb-3dcd-aa73-0cb0ff392bd3,name=_madcathog,properties={},legacy=false]com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[authlib-1.5.25.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [authlib-1.5.25.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties

       

      Now, If the name is valid, there is usually a lag spike the first time the profile is obtained. Then the textures can be obtained from the SessionService (https://sessionserver.mojang.com/session/minecraft/profile/\{uuid}) and finally rendered into the player head. The session service seems to be handled better or at least to respond faster.

       

      This is the most I can say based on my experience and debugging just using the API, working with commands and playing the game. And I could pinpoint the problem in the calls to the profile service because giving specific information to the SkullOwner NBT (uuid and texture) doesn't generate major lag spikes and the game stays fluent.

       

      Last year I made a video showing the lag spike, I don't know why I took so long to create this issue here. https://youtu.be/RpzJcK57RS4?list=PLR3unhU1Q_xfWELhWwogcgrJ7_5oYKSQS&t=241

            Unassigned Unassigned
            MadCat Mad Cat
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: