From e1db314aeee016ea1c289ec9a1af31f5340ffb00 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 21 Jun 2025 05:16:10 +0800 Subject: [PATCH] =?UTF-8?q?waterlogged=E9=9D=9E=E5=BF=85=E9=A1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/behavior/SlabBlockBehavior.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java index ccc4fc312..abfea5b85 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java @@ -66,10 +66,13 @@ public class SlabBlockBehavior extends BukkitBlockBehavior { BlockPos clickedPos = context.getClickedPos(); ImmutableBlockState blockState = context.getLevel().getBlockAt(clickedPos).customBlockState(); if (blockState != null && blockState.owner().value() == super.customBlock) { - return blockState.with(this.typeProperty, SlabType.DOUBLE).with(super.waterloggedProperty, false); + if (super.waterloggedProperty != null) + blockState = blockState.with(super.waterloggedProperty, false); + return blockState.with(this.typeProperty, SlabType.DOUBLE); } else { Object fluidState = FastNMS.INSTANCE.method$Level$getFluidState(context.getLevel().serverWorld(), LocationUtils.toBlockPos(clickedPos)); - state = state.with(super.waterloggedProperty, FastNMS.INSTANCE.method$FluidState$getType(fluidState) == MFluids.WATER); + if (super.waterloggedProperty != null) + state = state.with(super.waterloggedProperty, FastNMS.INSTANCE.method$FluidState$getType(fluidState) == MFluids.WATER); Direction clickedFace = context.getClickedFace(); return clickedFace == Direction.DOWN || clickedFace != Direction.UP && context.getClickLocation().y - (double) clickedPos.y() > (double) 0.5F ? state.with(this.typeProperty, SlabType.TOP) : state.with(this.typeProperty, SlabType.BOTTOM); } @@ -94,6 +97,7 @@ public class SlabBlockBehavior extends BukkitBlockBehavior { @Override public Object updateShape(Object thisBlock, Object[] args, Callable superMethod) throws Exception { Object blockState = args[0]; + if (super.waterloggedProperty == null) return blockState; ImmutableBlockState immutableBlockState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockStateToId(blockState)); if (immutableBlockState == null || immutableBlockState.isEmpty()) return blockState; if (immutableBlockState.get(super.waterloggedProperty)) { @@ -109,7 +113,7 @@ public class SlabBlockBehavior extends BukkitBlockBehavior { ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockStateToId(blockState)); if (state == null || state.isEmpty()) return false; if (type == CoreReflections.instance$PathComputationType$WATER) { - return state.get(this.typeProperty) != SlabType.DOUBLE && state.get(super.waterloggedProperty); + return super.waterloggedProperty != null && state.get(this.typeProperty) != SlabType.DOUBLE && state.get(super.waterloggedProperty); } return false; }