diff --git a/src/main/java/ch/njol/skript/expressions/ExprBlockData.java b/src/main/java/ch/njol/skript/expressions/ExprBlockData.java index 272a0a9abc2..71c921453bd 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprBlockData.java +++ b/src/main/java/ch/njol/skript/expressions/ExprBlockData.java @@ -1,6 +1,5 @@ package ch.njol.skript.expressions; -import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer.ChangeMode; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -11,6 +10,7 @@ import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.entity.BlockDisplay; +import org.bukkit.entity.FallingBlock; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -29,8 +29,7 @@ public class ExprBlockData extends SimplePropertyExpression { static { - String types = Skript.isRunningMinecraft(1, 19, 4) ? "blocks/displays" : "blocks"; - register(ExprBlockData.class, BlockData.class, "block[ ]data", types); + register(ExprBlockData.class, BlockData.class, "block[ ]data", "blocks/displays/entities"); } @Override @@ -39,6 +38,8 @@ public class ExprBlockData extends SimplePropertyExpression { return block.getBlockData(); if (object instanceof BlockDisplay blockDisplay) return blockDisplay.getBlock(); + if (object instanceof FallingBlock fallingBlock) + return fallingBlock.getBlockData(); return null; } @@ -59,6 +60,8 @@ public void change(Event event, Object @Nullable [] delta, ChangeMode mode) { block.setBlockData(blockData); } else if (object instanceof BlockDisplay blockDisplay) { blockDisplay.setBlock(blockData); + } else if (object instanceof FallingBlock fallingBlock) { + fallingBlock.setBlockData(blockData); } } } diff --git a/src/test/skript/tests/syntaxes/expressions/ExprBlockData.sk b/src/test/skript/tests/syntaxes/expressions/ExprBlockData.sk index 043d2eaf591..799e8286bba 100644 --- a/src/test/skript/tests/syntaxes/expressions/ExprBlockData.sk +++ b/src/test/skript/tests/syntaxes/expressions/ExprBlockData.sk @@ -12,3 +12,11 @@ test "block data": assert "%{_data}%" contains "campfire", "lit=false" and "waterlogged=true" with "block data for campfire did not match" set block at {_b} to air + +test "falling block block data": + spawn a falling block at test-location: + set {_e} to entity + assert block data of {_e} is stone[] with "Falling block should default to stone" + set block data of {_e} to sand[] + assert block data of {_e} is sand[] with "Falling block should update to sand" + clear entity within {_e}