From 1acf3b3837327b658b3c70a2c4e346c4dc1de2e5 Mon Sep 17 00:00:00 2001 From: Epic Date: Thu, 1 May 2025 15:08:41 +0100 Subject: [PATCH] Infer block entity data in brigadier blockstate argument (#12197) --- .../brigadier/argument/VanillaArgumentProviderImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java b/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java index b41d4a1fc..4aa656df2 100644 --- a/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java +++ b/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java @@ -86,6 +86,7 @@ import org.bukkit.block.structure.Mirror; import org.bukkit.block.structure.StructureRotation; import org.bukkit.craftbukkit.CraftHeightMap; import org.bukkit.craftbukkit.CraftRegistry; +import org.bukkit.craftbukkit.block.CraftBlockEntityState; import org.bukkit.craftbukkit.block.CraftBlockStates; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.scoreboard.CraftCriteria; @@ -172,7 +173,11 @@ public class VanillaArgumentProviderImpl implements VanillaArgumentProvider { @Override public ArgumentType blockState() { return this.wrap(BlockStateArgument.block(PaperCommands.INSTANCE.getBuildContext()), (result) -> { - return CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), BlockPos.ZERO, result.getState(), result.tag); + final BlockState snapshot = CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), BlockPos.ZERO, result.getState(), null); + if (result.tag != null && snapshot instanceof final CraftBlockEntityState blockEntitySnapshot) { + blockEntitySnapshot.loadData(result.tag); + } + return snapshot; }); }