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

Can't have multiple skull skins per player name or UUID

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reopened
    • Resolution: Unresolved
    • Affects Version/s: Minecraft 14w34d, Minecraft 1.8-pre1, Minecraft 1.8, Minecraft 1.8.1, Minecraft 1.8.2-pre1, Minecraft 1.8.4, Minecraft 15w35b, Minecraft 1.8.9, Minecraft 16w04a, Minecraft 1.10.2, Minecraft 16w40a, Minecraft 1.11.2, Minecraft 17w06a, Minecraft 1.13, Minecraft 1.13.1
    • Fix Version/s: None
    • Environment:

      Windows 7, Java 7

    • Confirmation Status:
      Community Consensus
    • Game Mode:
      Creative
    • Category:
      Textures and models

      Description

      EDIT: I have given some more specific information on the temporary workaround for mapmakers who need custom skulls but can't get them due to this bug. It's located at the bottom of the description.

      When you make a skull, it's supposed to retain the skin that you had when you made it. However it fails to do so when there are multiple skulls with your name loaded into the world.
      A single player can only create one skull. Every skull linked to their name that they create afterwards will continue using that skin until they exit the game, regardless of what skin the skull should display.

      Steps to Reproduce:
      1. Create a world.
      2. Obtain your skull with /give @p skull 1 3 {SkullOwner:PLAYERNAME}. This is Skull 1.
      3. Place Skull 1 in the world
      4. Exit the game and change your skin.
      5. Re-enter the world and give yourself another skull using the same command. This skull is Skull 2. You may notice that Skull 2 has the old skin.
      6. Place the Skull 2 in the world
      7. Exit the game, reopen, and re-enter the world.
      8. Both Skull 1 and Skull 2 will now use your new skin.*
      9. If you destroy Skull 2, remove it from your inventory, and relog once more, the Skull 1 will once again display the first skin correctly.

      *The skull that it loads first actually seems to be related to coordinates rather than when its skin was uploaded, which makes a lot more sense. So they may both use your old skin.

      This also results in issues between worlds.
      Perform steps 1-4 above.
      5. Create a new world, create and place a skull. Think of this as Skull 3.
      6. Now, if you load the first world with Skull 1, it will display the skin of Skull 3.
      7. If you relog and load Skull 1's world before loading the Skull 3's world, then Skull 3 will display the skin of Skull 1.

      I should note more clearly what is happening with the in-between worlds issue. The skull that loads first will be the only one displayed on your player skulls until you fully exit the game. Once you re enter the game after fully closing it, the first of your player skulls that you load next will then be the only one.

      Current Workaround

      Using the "/blockdata" or "/entitydata" command, you can change the "Name" tag in the "SkullOwner" tag for skulls in inventories or worn as mob equipment, or the "Name" tag in the "Owner" tag for placed skulls to something other than your player name, but also something other than the name of any other skull in the world. This will trick the game into the thinking the skull belongs to another player who doesn't yet have a skull so that it properly updates to the skin that it was assigned.

      For a block on the ground: /blockdata x y z {Owner:{Name:"NEW NAME"}}

      For an entity you will need to include all of the mob's equipment information, or else it will be lost in the process. For example, my command ended up being:

      /entitydata @e[ANY SPECIFICS TO FIND THE MOB] {Equipment:[0:{},1:{},2:{},3:{},4:{id:"minecraft:skull",Damage:3s,Count:1b,tag:{SkullOwner:{Name:"NEW NAME",Id:"e57faec0-3293-4bd1-b43c-ebbde7489d9e",Properties:{textures:[0:{Value:"eyJ0aW1lc3RhbXAiOjE0MTk2MTU3OTEwMTUsInByb2ZpbGVJZCI6ImU1N2ZhZWMwMzI5MzRiZDFiNDNjZWJiZGU3NDg5ZDllIiwicHJvZmlsZU5hbWUiOiJBcXVvc2tpbmciLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2Y3YzRhZGI3MDlmNmZlZjQ1ZWE2YWFlMWJkZjhmNmUyMTQ0OGI2OTYxNWU1ODBhNDNmZTFmZjg5MzcxNmYifX19",},],},},},},],}

      You can get this extremely long data tag by performing /entitydata @e[ANY SPECIFICS] {} in a command block (on a mob that already has the skull on) and scrolling through the previous output.

      Cause

      According to Aikar on MC-68487, the cache for skins uses GameProfile.equals for comparison, which only checks for name and UUID. As such, distinct names or UUIDs allow separate skins, but the same name and UUID means different skins cannot be used.

        Attachments

        1. heads_created.png
          heads_created.png
          121 kB
        2. heads_payloadbased.png
          heads_payloadbased.png
          161 kB
        3. heads_reloggedin.png
          heads_reloggedin.png
          61 kB

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                aquosking Thomas Clinton
              • Votes:
                7 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  CHK: