diff --git a/Spigot-Server-Patches/0435-Be-more-tolerant-of-invalid-attributes.patch b/Spigot-Server-Patches/0435-Be-more-tolerant-of-invalid-attributes.patch new file mode 100644 index 000000000..96a46e6cf --- /dev/null +++ b/Spigot-Server-Patches/0435-Be-more-tolerant-of-invalid-attributes.patch @@ -0,0 +1,32 @@ +From e433847829248399e6cab3296dd39dcf8471cfbf Mon Sep 17 00:00:00 2001 +From: Zach Brown +Date: Thu, 6 Feb 2020 19:20:27 -0600 +Subject: [PATCH] Be more tolerant of invalid attributes + +Prior to this commit, the player would be disconnected if they ever encountered an attribute with a name that did +not match Bukkit's expected vanilla scheme. It appears that datapacks can set whatever attribute name they want, +ignoring vanilla's typical scheme. + +In a more perfect world the API would expose some way to interact with these attributes, however Bukkit is not +particularly flexible in this area. Perhaps this is an area for future expansion at a later time. + +diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java +index 77e584b12..007d28b16 100644 +--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java ++++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java +@@ -47,6 +47,12 @@ public class CraftAttributeMap implements Attributable { + public static Attribute fromMinecraft(String nms) { + String[] split = nms.split("\\.", 2); + ++ // Paper start - Datapacks can set their own attributes that may not match our expectations, ignore them ++ if (split.length != 2) { ++ return null; ++ } ++ // Paper end ++ + String generic = split[0]; + String descriptor = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, split[1]); // movementSpeed -> MOVEMENT_SPEED + String fin = generic + "_" + descriptor; +-- +2.25.0 +