Ресурсы

Ресурсы делятся на два больших типа - текстуры интерфейса (gui) и внутриигровые ресурсы (resource). Оба типа ресурсов хранятся в директориях, указанных в файле построения (для шаблонного мода это директории gui и res соответственно). У каждого типа ресурсов есть правила, по которым они загружаются и будут доступны в дальнейшем.

Текстуры интерфейса

Текстуры интерфейса должны быть в расширении .png и могут находиться как в директории, указанной в файле построения, так и в дочерних ей. Текстура интерфейса будет доступна в коде по имени без расшрения, если она находится в дочерних директориях, то будут указаны и их имена через точку.

Пример:

Структура файлов интерфейса:

close_button_small.png # Будет доступен как close_button_small 
close_button_large.png # Будет доступен как close_button_large 

machine
    energy_bar.png # Будет доступен как machine.energy_bar
    macerator
        progress_bar.png # Будет доступен как machine.macerator.progress_bar
        heat_bar.png # Будет доступен как machine.macerator.heat_bar

Внутриигровые ресурсы

В отличие от тектур интерфейса, внутриигровые ресурсы имеют различные типы, каждый из которых определяется и загружается по своему. Определяются эти типы по названию файла или по имени дочерней директории, в которой они находятся. 

Во-первых файлы делятся на текстуры и не текстуры, последние определяются как файлы, которые имеют расширения png и tga. 

Текстуры

Текстуры в свою очередь делятся на несколько типов: просто текстуры, текстуры блоков, текстуры предметов, анимации текстур блоков.

Текстуры блоков должны находиться в дочерней директории terrain-atlas или же просто иметь ее в своем пути. Кроме этого их названия должны быть в специальном формате: name_index.png, где name - имя, состоящее из латинских букв и подчеркиваний, а index - натуральное число, обозначающее номер текстуры с данным именем name. В коде данная текстура блока будет доступна по комбинации name и index.

Важно то, что для набора текстур с одинаковым именем крайне желательна непрерывная индексация с 0, т.е. если у вас N текстур с одинаковым именем их индексы должны быть от 0 до N - 1 (0, 1, 2, 3 - правильно; 1, 2, 4, 8 - неправильно).

Пример (Через запятую показаны имя и индекс, это не цельное имя, а два отдельных параметра):

terrain-atlas
    someBlock_0.png # Текстура будет доступна как someBlock, 0
    someBlock_1.png # Текстура будет доступна как someBlock, 1
    someBlock_2.png # Текстура будет доступна как someBlock, 2
    ores
        oreCopper_0.png # Не важно, что файл находится в дочерней директории, текстура будет доступна как oreCopper, 0
        oreTin_0.png # Текстура будет доступна как oreTin, 0

Текстуры предметов абсолютно аналогичны текстурам блоков и формату их названий и местоположения в ресурсах. Однако вместо terrain-atlas ключевое имя директории для текстур предметов - items-opaque.

Анимации текстур блоков могут находиться где угодно в директории ресурсов, однако имеют единый формат названий. Это должен быть файл в формате png, имеющий имя name.anim.png или name.anim.ticksPerFrape.png, где name - имя текстуры блока (именно имя текстуры, а не файла, т.е. для name_index.png это name), anim - ключевое слово, его оставить как есть, а ticksPerFrape - натуральное число, показывающее, сколько тиков (1/20) секунды нужно для смены 1 кадра анимации.

Сама анимация представляет из себя изображение размера (W)x(W*N), где W - разрешение текстуры, которую надо анимировать (обычно 16 или 32), а N - кол-во кадров анимации (обычно 32).

К сожалению, MCPE позволяет анимировать таким образом только текстуры блоков. Текстуры предметов так анимировать нельзя.

Остальные текстуры будут доступны в основном как текстуры моделей. Доступ из кода осуществляется по полному локальному пути в ресурсах, т.е. если текстура находится в <директория ресурсов>/path/to/file.png, то она будет доступна как path/to/file.png

Замена ванильных ресурсов

Любые файлы во внутриигровых ресурсах имеют следующее свойство: если в ванильном ресурспаке MCPE есть файл с таким же локальным путем, что и файл в ресурсах мода, он будет заменен на этот самый файл из ресурсов мода, это позволяет для нужд мода заменять конкретные текстуры, шейдеры и т.п., а так же встраивать в моды ресурспаки.