@@ -17,23 +17,15 @@ index 95842327aa08d4717f86e9dcc0519ab24c41ca14..135b3e44fb6054d360327a0ce46decc4
1717
1818 if (this.isSameThread()) {
1919diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
20- index 3594f432a25b580173e8577bf324be954f5eddd1..6dc8f9f269db6971b8b46819e017357899ccd118 100644
20+ index 3594f432a25b580173e8577bf324be954f5eddd1..d62ba8d02228b2a00202190ff16a0efc342c7b83 100644
2121--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
2222+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
23- @@ -13,6 +13,7 @@ import net.minecraft.commands.arguments.blocks.BlockStateParser;
24- import net.minecraft.core.Direction;
25- import net.minecraft.core.Registry;
26- import net.minecraft.nbt.CompoundTag;
27- + import net.minecraft.resources.ResourceLocation;
28- import net.minecraft.util.StringRepresentable;
29- import net.minecraft.world.level.block.Block;
30- import net.minecraft.world.level.block.state.BlockState;
31- @@ -494,9 +495,39 @@ public class CraftBlockData implements BlockData {
23+ @@ -494,9 +494,39 @@ public class CraftBlockData implements BlockData {
3224 Preconditions.checkState(CraftBlockData.MAP.put(nms, bukkit) == null, "Duplicate mapping %s->%s", nms, bukkit);
3325 }
3426
3527+ // Paper start - cache block data strings
36- + private static Map<String, CraftBlockData> stringDataCache = new HashMap <>();
28+ + private static Map<String, CraftBlockData> stringDataCache = new java.util.concurrent.ConcurrentHashMap <>();
3729+
3830+ static {
3931+ // cache all of the default states at startup, will not cache ones with the custom states inside of the
@@ -54,7 +46,7 @@ index 3594f432a25b580173e8577bf324be954f5eddd1..6dc8f9f269db6971b8b46819e0173578
5446+ if (material != null) {
5547+ Block block = CraftMagicNumbers.getBlock(material);
5648+ if (block != null) {
57- + ResourceLocation key = Registry.BLOCK.getKey(block);
49+ + net.minecraft.resources. ResourceLocation key = Registry.BLOCK.getKey(block);
5850+ data = data == null ? key.toString() : key + data;
5951+ }
6052+ }
0 commit comments