mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-17 10:41:41 +01:00
Use a CHM for StructureTemplate.Pallete cache
fixes a CME due to this collection being shared across threads
This commit is contained in:
parent
cf0525cba8
commit
0202f1788d
1 changed files with 13 additions and 4 deletions
|
@ -18,18 +18,18 @@
|
|||
|
||||
public class StructureTemplate {
|
||||
|
||||
@@ -73,6 +77,11 @@
|
||||
public final List<StructureTemplate.StructureEntityInfo> entityInfoList = Lists.newArrayList();
|
||||
@@ -74,6 +78,11 @@
|
||||
private Vec3i size;
|
||||
private String author;
|
||||
+
|
||||
|
||||
+ // CraftBukkit start - data containers
|
||||
+ private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
|
||||
+ public CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(StructureTemplate.DATA_TYPE_REGISTRY);
|
||||
+ // CraftBukkit end
|
||||
|
||||
+
|
||||
public StructureTemplate() {
|
||||
this.size = Vec3i.ZERO;
|
||||
this.author = "?";
|
||||
@@ -147,7 +156,7 @@
|
||||
}
|
||||
|
||||
|
@ -141,6 +141,15 @@
|
|||
}
|
||||
|
||||
private void loadPalette(HolderGetter<Block> blockLookup, ListTag palette, ListTag blocks) {
|
||||
@@ -840,7 +889,7 @@
|
||||
public static final class Palette {
|
||||
|
||||
private final List<StructureTemplate.StructureBlockInfo> blocks;
|
||||
- private final Map<Block, List<StructureTemplate.StructureBlockInfo>> cache = Maps.newHashMap();
|
||||
+ private final Map<Block, List<StructureTemplate.StructureBlockInfo>> cache = Maps.newConcurrentMap(); // Paper - Fix CME due to this collection being shared across threads
|
||||
@Nullable
|
||||
private List<StructureTemplate.JigsawBlockInfo> cachedJigsaws;
|
||||
|
||||
@@ -924,7 +973,7 @@
|
||||
public BlockState stateFor(int id) {
|
||||
BlockState iblockdata = (BlockState) this.ids.byId(id);
|
||||
|
|
Loading…
Add table
Reference in a new issue