From fcd5a142168377951110c362cea22f21e57b455e Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Fri, 12 Jan 2024 08:25:12 -0800 Subject: [PATCH] Use a ConcurrentHashMap for enum mappings for BlockData (#10161) This API should be thread-safe as there is no world state --- patches/server/Cache-block-data-strings.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/patches/server/Cache-block-data-strings.patch b/patches/server/Cache-block-data-strings.patch index 0604aa6c18..8459ad575a 100644 --- a/patches/server/Cache-block-data-strings.patch +++ b/patches/server/Cache-block-data-strings.patch @@ -20,6 +20,15 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +@@ -0,0 +0,0 @@ public class CraftBlockData implements BlockData { + return exactMatch; + } + +- private static final Map>, Enum[]> ENUM_VALUES = new HashMap<>(); ++ private static final Map>, Enum[]> ENUM_VALUES = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - make thread safe + + /** + * Convert an NMS Enum (usually a BlockStateEnum) to its appropriate Bukkit @@ -0,0 +0,0 @@ public class CraftBlockData implements BlockData { Preconditions.checkState(CraftBlockData.MAP.put(nms, bukkit) == null, "Duplicate mapping %s->%s", nms, bukkit); }