Разносторонняя текстура реализуется путём наложения отдельных текстур на конкретные стороны блока. Соответственно делаешь несколько IIcon или массив IIcon[], в registerBlockIcons прописываешь путь к каждой текстуре, а в getIcon проверяешь номер стороны блока и возвращаешь нужную текстуру. Там есть вариант с миром и координатами для отрисовки блока в мире и метод со стороной и метой для отрисовки в инвентаре. Что до смены лицевого направления (facing), то здесь есть два пути: через смену метадаты блока или путём сохранения направления в TileEntity. Делается сие дело при размещении блока в мире, то бишь при вызове функции onBlockPlacedBy.