9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-30 12:29:15 +00:00

waterlogged非必须

This commit is contained in:
XiaoMoMi
2025-06-21 05:16:10 +08:00
parent 0dcf3201b7
commit e1db314aee

View File

@@ -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<Object> 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;
}