33 lines
1.6 KiB
Diff
33 lines
1.6 KiB
Diff
From d6bf11981f42a9ce30d7ffd037e9ec4468a82524 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach@zachbr.io>
|
|
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.1
|
|
|