diff --git a/paper-server/patches/sources/net/minecraft/nbt/CompoundTag.java.patch b/paper-server/patches/sources/net/minecraft/nbt/CompoundTag.java.patch
index 35fd23eed..1cb8cb2d7 100644
--- a/paper-server/patches/sources/net/minecraft/nbt/CompoundTag.java.patch
+++ b/paper-server/patches/sources/net/minecraft/nbt/CompoundTag.java.patch
@@ -18,19 +18,42 @@
}
@Override
-@@ -234,7 +234,11 @@
+@@ -232,14 +232,34 @@
+ }
+
public void putUUID(String key, UUID value) {
++ // Paper start - Support old UUID format
++ if (this.contains(key + "Most", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC) && this.contains(key + "Least", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC)) {
++ this.tags.remove(key + "Most");
++ this.tags.remove(key + "Least");
++ }
++ // Paper end - Support old UUID format
this.tags.put(key, NbtUtils.createUUID(value));
}
-+
++
+ /**
+ * You must use {@link #hasUUID(String)} before or else it will throw an NPE.
+ */
public UUID getUUID(String key) {
++ // Paper start - Support old UUID format
++ if (!contains(key, 11) && this.contains(key + "Most", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC) && this.contains(key + "Least", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC)) {
++ return new UUID(this.getLong(key + "Most"), this.getLong(key + "Least"));
++ }
++ // Paper end - Support old UUID format
return NbtUtils.loadUUID(this.get(key));
}
-@@ -477,8 +481,16 @@
+
+ public boolean hasUUID(String key) {
++ // Paper start - Support old UUID format
++ if (this.contains(key + "Most", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC) && this.contains(key + "Least", net.minecraft.nbt.Tag.TAG_ANY_NUMERIC)) {
++ return true;
++ }
++ // Paper end - Support old UUID format
+ Tag tag = this.get(key);
+ return tag != null && tag.getType() == IntArrayTag.TYPE && ((IntArrayTag)tag).getAsIntArray().length == 4;
+ }
+@@ -477,8 +497,16 @@
@Override
public CompoundTag copy() {
diff --git a/paper-server/patches/sources/net/minecraft/world/item/component/ResolvableProfile.java.patch b/paper-server/patches/sources/net/minecraft/world/item/component/ResolvableProfile.java.patch
index c505c77d3..c0d2bc1d7 100644
--- a/paper-server/patches/sources/net/minecraft/world/item/component/ResolvableProfile.java.patch
+++ b/paper-server/patches/sources/net/minecraft/world/item/component/ResolvableProfile.java.patch
@@ -1,6 +1,18 @@
--- a/net/minecraft/world/item/component/ResolvableProfile.java
+++ b/net/minecraft/world/item/component/ResolvableProfile.java
-@@ -49,7 +49,7 @@
+@@ -20,9 +20,10 @@
+ instance -> instance.group(
+ ExtraCodecs.PLAYER_NAME.optionalFieldOf("name").forGetter(ResolvableProfile::name),
+ UUIDUtil.CODEC.optionalFieldOf("id").forGetter(ResolvableProfile::id),
++ UUIDUtil.STRING_CODEC.lenientOptionalFieldOf("Id").forGetter($ -> Optional.empty()), // Paper
+ ExtraCodecs.PROPERTY_MAP.optionalFieldOf("properties", new PropertyMap()).forGetter(ResolvableProfile::properties)
+ )
+- .apply(instance, ResolvableProfile::new)
++ .apply(instance, (s, uuid, uuid2, propertyMap) -> new ResolvableProfile(s, uuid2.or(() -> uuid), propertyMap)) // Paper
+ );
+ public static final Codec CODEC = Codec.withAlternative(
+ FULL_CODEC, ExtraCodecs.PLAYER_NAME, name -> new ResolvableProfile(Optional.of(name), Optional.empty(), new PropertyMap())
+@@ -49,7 +50,7 @@
if (this.isResolved()) {
return CompletableFuture.completedFuture(this);
} else {