From 95bc1c4f52a23b97d288093c271117801f35a2ae Mon Sep 17 00:00:00 2001 From: Jishuna Date: Mon, 15 Jan 2024 20:33:17 +1100 Subject: [PATCH] #1333: Add BlockData#copyTo --- .../craftbukkit/block/data/CraftBlockData.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java index 61b37f516..ffbe9b395 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java @@ -660,6 +660,23 @@ public class CraftBlockData implements BlockData { this.state = state.mirror(EnumBlockMirror.valueOf(mirror.name())); } + @Override + public void copyTo(BlockData blockData) { + CraftBlockData other = (CraftBlockData) blockData; + IBlockData nms = other.state; + for (IBlockState property : state.getBlock().getStateDefinition().getProperties()) { + if (nms.hasProperty(property)) { + nms = copyProperty(state, nms, property); + } + } + + other.state = nms; + } + + private > IBlockData copyProperty(IBlockData source, IBlockData target, IBlockState property) { + return target.setValue(property, source.getValue(property)); + } + @NotNull @Override public BlockState createBlockState() {