#solid block? invalid move
execute unless block ~ ~ ~ #bd:passable run scoreboard players set global validMove 0
execute unless block ~ ~ ~ #bd:passable run scoreboard players set global validMoveZNEG 0

#x-axis linked blocks must travel together
execute if block ~ ~ ~ #bd:x_axis_linked if block ~1 ~ ~ #bd:x_axis_linked positioned ~1 ~ ~-1 run function bd:movement/check_move/z_negative
execute if block ~ ~ ~ #bd:x_axis_linked if block ~-1 ~ ~ #bd:x_axis_linked positioned ~-1 ~ ~-1 run function bd:movement/check_move/z_negative