In the attached image, the fence is connected to the carpet block, despite the fact that it's not a full block. The issue is caused by custom blocks not overriding the getBlockFaceShape method from Block.java, which returns SOLID by default. This piece of code fixes the issue by returning the UNDEFINED shape instead.
@Override
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) {
return BlockFaceShape.UNDEFINED;
}
I think it would be nice to be able to chose the face shape for each face of the block, but it could be difficult to implement for blocks with rotation.
Thank you for your bug report and code example. We will fix this.