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);