Support String UUID's in old player skulls

Should fix remaining skull issues for people with unconverted old skulls.

Fixes #3734
This commit is contained in:
Aikar 2020-07-03 02:16:51 -04:00
parent b3f265d1b1
commit a12a677859
No known key found for this signature in database
GPG Key ID: 401ADFC9891FAAFE
2 changed files with 20 additions and 4 deletions

View File

@ -7,6 +7,22 @@ We have stored UUID in plenty of places that did not get DFU'd
So just look for old format and load it if it exists.
diff --git a/src/main/java/net/minecraft/server/GameProfileSerializer.java b/src/main/java/net/minecraft/server/GameProfileSerializer.java
index 66d503a91665952b98c8cdc06c9ad10782b0558b..dca47422816e0ff5cf56ee73d0aa7e2f74a48060 100644
--- a/src/main/java/net/minecraft/server/GameProfileSerializer.java
+++ b/src/main/java/net/minecraft/server/GameProfileSerializer.java
@@ -28,6 +28,11 @@ public final class GameProfileSerializer {
s = nbttagcompound.getString("Name");
}
+ // Paper start - support string UUID's
+ if (nbttagcompound.hasKeyOfType("Id", 8)) {
+ uuid = UUID.fromString(nbttagcompound.getString("Id"));
+ }
+ // Paper end
if (nbttagcompound.b("Id")) {
uuid = nbttagcompound.a("Id");
}
diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java
index f608b35502890650adfc1df35e0794471f57ecbc..436f40bcd7817bedde4f6570c7c47dba7ff7034f 100644
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java

View File

@ -9,10 +9,10 @@ growing to large sizes and preventing login.
This now automatically cleans up the extra properties.
diff --git a/src/main/java/net/minecraft/server/GameProfileSerializer.java b/src/main/java/net/minecraft/server/GameProfileSerializer.java
index 66d503a91665952b98c8cdc06c9ad10782b0558b..488c3473c9e56913d382c2d9957582634f3f3d85 100644
index dca47422816e0ff5cf56ee73d0aa7e2f74a48060..1fe44d4a1a1895f5715c720f9d7d7acb10e50f61 100644
--- a/src/main/java/net/minecraft/server/GameProfileSerializer.java
+++ b/src/main/java/net/minecraft/server/GameProfileSerializer.java
@@ -42,8 +42,8 @@ public final class GameProfileSerializer {
@@ -47,8 +47,8 @@ public final class GameProfileSerializer {
while (iterator.hasNext()) {
String s1 = (String) iterator.next();
NBTTagList nbttaglist = nbttagcompound1.getList(s1, 10);
@ -23,7 +23,7 @@ index 66d503a91665952b98c8cdc06c9ad10782b0558b..488c3473c9e56913d382c2d995758263
NBTTagCompound nbttagcompound2 = nbttaglist.getCompound(i);
String s2 = nbttagcompound2.getString("Value");
@@ -229,7 +229,7 @@ public final class GameProfileSerializer {
@@ -234,7 +234,7 @@ public final class GameProfileSerializer {
Optional<T> optional = iblockstate.b(nbttagcompound.getString(s));
if (optional.isPresent()) {
@ -32,7 +32,7 @@ index 66d503a91665952b98c8cdc06c9ad10782b0558b..488c3473c9e56913d382c2d995758263
} else {
GameProfileSerializer.LOGGER.warn("Unable to read property: {} with value: {} for blockstate: {}", s, nbttagcompound.getString(s), nbttagcompound1.toString());
return s0;
@@ -259,8 +259,8 @@ public final class GameProfileSerializer {
@@ -264,8 +264,8 @@ public final class GameProfileSerializer {
return nbttagcompound;
}