update block library docs & add block.get_picking_item(...)

This commit is contained in:
MihailRis 2024-07-09 18:39:33 +03:00
parent c94c2697e7
commit 277155e3d1
2 changed files with 52 additions and 24 deletions

View File

@ -383,41 +383,37 @@ block.defs_count() -> int
Возвращает количество id доступных в движке блоков Возвращает количество id доступных в движке блоков
Следующие три функции используется для учёта вращения блока при обращении к соседним блокам или других целей, где направление блока имеет решающее значение.
```python ```python
block.get_picking_item(id: int) -> int
```
Возвращает числовой id предмета, указанного в свойстве *picking-item*.
### Вращение
Следующие функции используется для учёта вращения блока при обращении к соседним блокам или других целей, где направление блока имеет решающее значение.
```lua
-- Возвращает целочисленный единичный вектор X блока на указанных координатах с учётом его вращения (три целых числа).
-- Если поворот отсутствует, возвращает 1, 0, 0
block.get_X(x: int, y: int, z: int) -> int, int, int block.get_X(x: int, y: int, z: int) -> int, int, int
```
Возвращает целочисленный единичный вектор X блока на указанных координатах с учётом его вращения (три целых числа). -- То же, но для оси Y (по-умолчанию 0, 1, 0)
Если поворот отсутствует, возвращает 1, 0, 0
```python
block.get_Y(x: int, y: int, z: int) -> int, int, int block.get_Y(x: int, y: int, z: int) -> int, int, int
```
Возвращает целочисленный единичный вектор Y блока на указанных координатах с учётом его вращения (три целых числа). -- То же, но для оси Z (по-умолчанию 0, 0, 1)
Если поворот отсутствует, возвращает 0, 1, 0
```python
block.get_Z(x: int, y: int, z: int) -> int, int, int block.get_Z(x: int, y: int, z: int) -> int, int, int
```
Возвращает целочисленный единичный вектор Z блока на указанных координатах с учётом его вращения (три целых числа). -- Возвращает индекс поворота блока в его профиле вращения (не превышает 7).
Если поворот отсутствует, возвращает 0, 0, 1
```python
block.get_rotation(x: int, y: int, z: int) -> int block.get_rotation(x: int, y: int, z: int) -> int
```
Возвращает индекс поворота блока в его профиле вращения. -- Устанавливает вращение блока по индексу в его профиле вращения.
```python
block.set_rotation(x: int, y: int, z: int, rotation: int) block.set_rotation(x: int, y: int, z: int, rotation: int)
```
Устанавливает вращение блока по индексу в его профиле вращения. -- Возвращает имя профиля вращения (none/pane/pipe)
block.get_rotation_profile(id: int) -> str
```
### Расширенные блоки ### Расширенные блоки
@ -463,6 +459,30 @@ block.set_user_bits(x: int, y: int, z: int, offset: int, bits: int, value: int)
``` ```
Записывает указанное число бит значения value в user bits по выбранному смещению Записывает указанное число бит значения value в user bits по выбранному смещению
### Физика
Информация свойствах блока, используемых физическим движком.
```lua
-- Возвращает массив из двух векторов (массивов из 3 чисел):
-- 1. Минимальная точка хитбокса
-- 2. Размер хитбокса
-- rotation_index - индекс поворота блока
block.get_hitbox(id: int, rotation_index: int) -> {vec3, vec3}
```
### Модель
Информация о модели блока.
```lua
-- возвращает тип модели блока (block/aabb/custom/...)
block.get_model(id: int) -> str
-- возвращает массив из 6 текстур, назначенных на стороны блока
block.get_textures(id: int) -> таблица строк
```
## Библиотека item ## Библиотека item
```python ```python

View File

@ -300,6 +300,13 @@ static int l_get_rotation_profile(lua::State* L) {
return 0; return 0;
} }
static int l_get_picking_item(lua::State* L) {
if (auto def = require_block(L)) {
return lua::pushinteger(L, def->rt.pickingItem);
}
return 0;
}
const luaL_Reg blocklib [] = { const luaL_Reg blocklib [] = {
{"index", lua::wrap<l_index>}, {"index", lua::wrap<l_index>},
{"name", lua::wrap<l_name>}, {"name", lua::wrap<l_name>},
@ -327,5 +334,6 @@ const luaL_Reg blocklib [] = {
{"get_model", lua::wrap<l_get_model>}, {"get_model", lua::wrap<l_get_model>},
{"get_hitbox", lua::wrap<l_get_hitbox>}, {"get_hitbox", lua::wrap<l_get_hitbox>},
{"get_rotation_profile", lua::wrap<l_get_rotation_profile>}, {"get_rotation_profile", lua::wrap<l_get_rotation_profile>},
{"get_picking_item", lua::wrap<l_get_picking_item>},
{NULL, NULL} {NULL, NULL}
}; };