Skip to content

Commit 2d76c9c

Browse files
Fix BlockData merge for cached states (#14080)
1 parent 8a52ce8 commit 2d76c9c

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

paper-server/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,7 @@ public static void reloadCache() {
456456
ENCODER_CACHE.clear();
457457
Block.BLOCK_STATE_REGISTRY.forEach(state -> {
458458
CraftBlockData data = state.asBlockData();
459+
data.parsedStates = state.getValues().toList();
459460
ENCODER_CACHE.put(data.getAsString(), data);
460461
});
461462
}

paper-server/src/test/java/org/bukkit/BlockDataTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,22 @@ public void testMerge() {
9999
assertNotEquals(falseTarget, candidate, "Target and candidate are still not equal");
100100
}
101101

102+
@Test
103+
public void testMergeFullySpecifiedBannerData() {
104+
BlockData banner = CraftBlockData.fromString(null, "minecraft:light_gray_banner");
105+
BlockData rotation = CraftBlockData.fromString(null, "minecraft:light_gray_banner[rotation=1]");
106+
107+
assertEquals(rotation, banner.merge(rotation));
108+
}
109+
110+
@Test
111+
public void testMergeFullySpecifiedLogData() {
112+
BlockData log = CraftBlockData.fromString(BlockType.OAK_LOG, null);
113+
BlockData axis = CraftBlockData.fromString(BlockType.OAK_LOG, "[axis=y]");
114+
115+
assertEquals(axis, log.merge(axis));
116+
}
117+
102118
@Test
103119
public void testMergeAny() {
104120
Chest trueTarget = (Chest) CraftBlockData.fromString(null, "minecraft:chest[facing=east,waterlogged=true]");

0 commit comments

Comments
 (0)