Validate ResourceLocation in NBT reading

This commit is contained in:
Nassim Jahnke 2024-01-04 13:52:38 +01:00
commit b2a6d575dd
No known key found for this signature in database
GPG key ID: EF6771C01F6EF02F
2 changed files with 70 additions and 5 deletions

View file

@ -46,18 +46,21 @@ index 135530bc9d7ecd0348ace6474f4ca6d2e1bad283..e464ada187fd1f15efef29a0e5033aeb
return tag != null && tag.getType() == IntArrayTag.TYPE && ((IntArrayTag)tag).getAsIntArray().length == 4;
}
diff --git a/src/main/java/net/minecraft/nbt/NbtUtils.java b/src/main/java/net/minecraft/nbt/NbtUtils.java
index 4388f2a8b05f5ed2f0934c1693299a4c92072adc..b65dcff9812dbc3256c080ac264c4aafd83ce276 100644
index 4388f2a8b05f5ed2f0934c1693299a4c92072adc..18fad4f083862ace2bc56579883f548f6d697091 100644
--- a/src/main/java/net/minecraft/nbt/NbtUtils.java
+++ b/src/main/java/net/minecraft/nbt/NbtUtils.java
@@ -72,6 +72,11 @@ public final class NbtUtils {
@@ -72,6 +72,14 @@ public final class NbtUtils {
@Nullable
public static GameProfile readGameProfile(CompoundTag nbt) {
UUID uUID = nbt.hasUUID("Id") ? nbt.getUUID("Id") : Util.NIL_UUID;
+ // Paper start - support string UUID's
+ // Paper start - Support string UUIDs
+ if (nbt.contains("Id", Tag.TAG_STRING)) {
+ uUID = UUID.fromString(nbt.getString("Id"));
+ try {
+ uUID = UUID.fromString(nbt.getString("Id"));
+ } catch (IllegalArgumentException ignored){
+ }
+ }
+ // Paper end
+ // Paper end - Support string UUIDs
String string = nbt.getString("Name");
try {