Vines use the opposite facing value when they try to spread in corners. This causes them to spread on blocks which would only support them on the opposite site or to not spread on blocks which should be able to support them on this side.
- Build a setup as shown in Setup.png (stair type does not matter)
- Increase the randomTickSpeed gamerule value
→ The vines spread on the stairs despite them not supporting the vines, updating blocks around the vines causes them to be removed from the stairs
Based on 1.12 decompiled using MCP 9.40 PRE 1
The method net.minecraft.block.BlockVine.updateTick(World, BlockPos, IBlockState, Random) does not call EnumFacing.getOpposite() in the following check: