From a71754c64a317a9c2f9a9f78d01a594a5ade0387 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Thu, 19 Jun 2025 11:08:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(block):=20=E4=BF=AE=E5=A4=8D=E5=8F=AA?= =?UTF-8?q?=E6=94=BE=E4=BA=86=E4=B8=8B=E5=8D=8A=E8=BE=B9=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/behavior/DoorBlockBehavior.java | 7 ++++++- .../bukkit/item/behavior/BlockItemBehavior.java | 2 ++ .../craftengine/core/block/AbstractCustomBlock.java | 5 +++++ .../momirealms/craftengine/core/block/BlockBehavior.java | 3 +++ .../net/momirealms/craftengine/core/block/CustomBlock.java | 2 ++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java index f86ac4f69..dbad0ff89 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java @@ -111,6 +111,12 @@ public class DoorBlockBehavior extends BukkitBlockBehavior { } } + @Override + public void setPlacedBy(BlockPlaceContext context, ImmutableBlockState state) { + BlockPos pos = context.getClickedPos(); + context.getLevel().setBlockAt(pos.x(), pos.y() + 1, pos.z(), state.with(this.halfProperty, DoubleBlockHalf.UPPER).customBlockState(), 3); + } + @Override public ImmutableBlockState updateStateForPlacement(BlockPlaceContext context, ImmutableBlockState state) { World world = context.getLevel(); @@ -191,7 +197,6 @@ public class DoorBlockBehavior extends BukkitBlockBehavior { @Override public InteractionResult useOnBlock(UseOnContext context, ImmutableBlockState state) { - if (!this.canOpenWithHand) { if (!this.canOpenWithHand || context.getPlayer().isSecondaryUseActive()) { return InteractionResult.PASS; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java index 9a7ae14bc..213c4ca49 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java @@ -159,6 +159,8 @@ public class BlockItemBehavior extends ItemBehavior { item.load(); } + block.setPlacedBy(context, blockStateToPlace); + player.swingHand(context.getHand()); context.getLevel().playBlockSound(position, blockStateToPlace.sounds().placeSound()); world.sendGameEvent(bukkitPlayer, GameEvent.BLOCK_PLACE, new Vector(pos.x(), pos.y(), pos.z())); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java index 72ce3af52..32c473c61 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java @@ -194,4 +194,9 @@ public abstract class AbstractCustomBlock implements CustomBlock { } return state; } + + @Override + public void setPlacedBy(BlockPlaceContext context, ImmutableBlockState state) { + this.behavior.setPlacedBy(context, state); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java index c01b5e4a8..b4be523d7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java @@ -95,6 +95,9 @@ public abstract class BlockBehavior { return state; } + public void setPlacedBy(BlockPlaceContext context, ImmutableBlockState state) { + } + public InteractionResult useOnBlock(UseOnContext context, ImmutableBlockState state) { return InteractionResult.PASS; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java index 0ff330d4b..4e835b7fc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java @@ -37,6 +37,8 @@ public interface CustomBlock { ImmutableBlockState getStateForPlacement(BlockPlaceContext context); + void setPlacedBy(BlockPlaceContext context, ImmutableBlockState state); + interface Builder { Builder events(Map>> events);