-
Bug
-
Resolution: Fixed
-
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, Minecraft 19w12b, Minecraft 1.14, Minecraft 1.14.3 Pre-Release 3, 20w11a, 20w14a
-
Confirmed
-
Rendering, Textures and models
-
Normal
The bug
When you get a player head, it's supposed to retain the skin that you had when it was created (see this comment by Dinnerbone in MC-52806). However it fails to retain the skin if there are multiple heads for the same player loaded into the world.
Therefore, a single player can only have one player head. Every head linked to their name that they find afterwards will continue using that skin until they exit the game, regardless of what skin the head should display.
This is a visual / caching bug only, the skin texture is correctly saved in the NBT data.
To reproduce
- Create a world.
- Obtain your player head ("Head A") with
/give @p player_head{SkullOwner:<your player name>}
- Place Head A in the world
- Exit the game and change your skin.
- Re-enter the world and give yourself another player head using the same command. This head is Head B. You may notice that Head B has the old skin.
- Place the Head B in the world
- Exit the game, reopen, and re-enter the world
- Both Head A and Head B will now use the same skin. Depending on which skull is loaded first (this seems to be related to coordinates), they'll either have your old or your new skin.
- If both heads have your new skin, destroy Head B, remove it from your inventory, and relog once more. Then, Head A will once again display your old skin correctly.
This bug also results in issues between worlds:
- Perform steps 1-4 above.
- Create a new world, create and place a head. Think of this as Skull C.
- Now, if you load the first world with Skull A, it will display the skin of Skull C.
- If you close and reopen the game and load Skull A's world before loading the Skull C's world, then Skull C will display the skin of Skull A.
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 /data command, you can change the Name or UUID of the owner to be something different than your (or any other player's) Name/UUID and also be destinct between all the player heads you want to use. This will trick the game into the thinking the head belongs to another player who doesn't yet have a player head so that it properly updates to the skin that it was assigned.
Cuase
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.
- is duplicated by
-
MC-91214 Client caches skin purely by UUID
- Resolved
-
MC-96263 skull:3 items (player heads) show inconsistent skins
- Resolved
-
MC-108031 New skin does not affect old or future skulls
- Resolved
-
MC-108424 Heads
- Resolved
-
MC-114328 Player skulls aren't updating with skin changes on my end,
- Resolved
-
MC-118407 When you do the command to get your player head and then place it or hold it and change your skin, The head will constantly switch between the two skins with no reason for changing
- Resolved
-
MC-146631 Caching of player head textures causes several issues
- Resolved
-
MC-194252 Player Head Updates
- Resolved
- relates to
-
MC-52806 skulls don't update their skin
- Resolved