# Свойства блоков

## Вид

### Текстура - *texture*

Название текстуры блока (указывается только имя, без расширения или пути к файлу)

Файл текстуры должен находиться в `res/textures/blocks/` и иметь формат **png**

### Текстурирование сторон - *texture-faces*

>[!IMPORTANT]
> Не может использоваться одновременно с *texture*

Массив из 6 названий текстур, позволяющих указать их для каждой из сторон отдельно.

Пример: 
```json
"texture-faces": [
    "grass_side",
    "grass_side",
    "dirt",
    "grass_top",
    "grass_side",
    "grass_side"
]
```

### Модель - *model*

Модель блока из списка:
- "block" - используется по-умолчанию для всех обычных блоков
- "none" - невидимый блок (пример: воздух)
- "X" - модель травы (крест из двух спрайтов)
- "aabb" - модель, соответствующая хитбоксу блока (составной хитбокс будет объединен в один). Примеры: трубы, лампочки, панели.

### Группа отрисовки - *draw-group*

Целое число определяющее номер группы отрисовки данного блока. 
Актуально для полупрозрачных блоков - решает проблемы невидимых сторон блоков за этим блоком.

### Вращение - *rotation*

Профиль вращения (набор положений, в которые можно установить блок) из списка:

- "none" - вращение блока отключено (по-умолчанию)
- "pipe" - профиль "труба". Примеры блоков: бревно, труба, лампочка
- "pane" - профиль "панель". Примеры блоков: панель, дверь, табличка

## Освещение

### Излучение - *emission*:

Массив из трех целых чисел - R, G, B освещения от 0 до 15.

Примеры:

- `[15, 15, 15]` - самый яркий белый свет
- `[7, 0, 0]` - слабый красный свет
- `[0, 0, 0]` - блок не излучает свет (по-умолчанию)


### Светопроводимость - *light-passing*

При значении `true` блок проводит свет от излучающих блоков.

### Солнечная светопроводимость - *sky-light-passing*

При значении `true` блок не препятствует прохождению вертикального луча солнечного света.


### Без освещения - *shadeless*

Выключает освещение на модели блока.

## Физика

### Препятствие - *obstacle*

Значение false отключает хитбокс у блока (позволяет игроку проходить сквозь блок)

### Хитбокс - *hitbox*

Массив из 6 чисел описывающих смещение и размер хитбокса блока.

Числа указываются в диапазоне [0.0, 1.0] - т.е в пределах блока.

Массив `[0.25, 0.0, 0.5,  0.75, 0.4, 0.3]` описывает хитбокс: 
- шириной (с востока на запад) 0.75 м
- высотой 0.4 м
- длиной (с юга на север) 0.3 м
- смещен на 0.25 м на запад
- смещен на 0.0 м вверх
- смещен на 0.5 м на север

### Приземленность - *grounded*

Блок может быть установлен только на полный блок.
Разрушается при разрушении блока под ним.

### Выделяемость - *selectable*

При значении в `false` курсор будет игнорировать блок, выделяя тот, что находится за ним.

### Заменяемость - *replaceable*

При значении в `true` на месте блока можно установить любой другой блок. Пример: вода, трава, цветок.

### Разрушаемость - *breakable*

При значении в `false` блок нельзя сломать.

## Инвентарь

### Скрытый блок - *hidden*

При значении в `true` блок не появляется в инвентаре и для него не генерируется предмет, поэтому c 0.17 требуется указать свойство *picking-item*

### Подбираемый предмет - *picking-item*

Предмет, который будет выбран при нажатии средней кнопкой мыши на блок.

Пример: блок `door:door_open` скрыт (hidden) поэтому указывается `picking-item: "door:door.item"`

### Имя скрипта - *script-name*

Позволяет указать название скрипта блока. Свойство обеспечивает возможность использования одного скрипта для нескольких блоков.
Название указывается без `пак:scripts/` и расширения.

### Имя макета UI - *ui-layout*

Позволяет указать id XML-макета интерфейса блока. По-умолчанию используется строковый id блока.

### Размер инвентаря - *inventory-size*

Число слотов инвентаря блока. По-умолчанию - 0 (инвентарь отсутствует)

## Расширенные блоки

### Размер блока - *size*

Массив из трех целых чисел. Значение по-умолчанию - `[1, 1, 1]`.
