mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-08 20:41:49 +00:00
Improved docs (#708)
* начало переписи доков * extensions update * libapp update * libfile update * io_stream update * Update io_stream.md * io_stream update x3 * io_stream update x4 * libtime update * libgui update + make bytearray.md * libinput update * Update libapp.md * Update libapp.md * libgui update * events.md ru fix * да ну не надо так делать --> не имеет смысла, ибо гитхаб -> показывает адекватно * types refactoring * fixes * Update libblock.md * Update libblock.md * Update libbyteutil.md
This commit is contained in:
parent
8b31bdeb78
commit
ac02bc0c8e
43 changed files with 1107 additions and 1314 deletions
|
|
@ -1,78 +1,95 @@
|
|||
# Библиотека *block*
|
||||
|
||||
## Содержание
|
||||
- [Таблицы и прочие общие методы](#таблицы-и-прочие-общие-методы)
|
||||
- [Работа с миром](#работа-с-миром)
|
||||
- [Свойства блоков](#свойства-блоков)
|
||||
- [Raycast](#raycast)
|
||||
- [Вращение](#вращение)
|
||||
- [Расширенные блоки](#расширенные-блоки)
|
||||
- [Модель и физика](#модель-и-физика)
|
||||
- [Данные блоков](#данные-блоков)
|
||||
|
||||
## Таблицы и прочие общие методы
|
||||
```lua
|
||||
-- Возвращает строковый id блока по его числовому id.
|
||||
block.name(blockid: int) -> str
|
||||
|
||||
-- Возвращает числовой id блока, принимая в качестве агрумента строковый
|
||||
block.index(name: str) -> int
|
||||
|
||||
-- Возвращает id материала блока.
|
||||
block.material(blockid: int) -> str
|
||||
-- Возвращает количество id доступных в загруженном контенте блоков
|
||||
block.defs_count() -> int
|
||||
|
||||
-- Таблица материалов по их полным именам (пример: base:carpet)
|
||||
block.materials: table<string, table>
|
||||
|
||||
-- Таблица пользовательских свойств блоков (см. ../../block-properties.md)
|
||||
block.properties: table<int, table<string, object>>
|
||||
block.properties: table<int, table<string, any>>
|
||||
```
|
||||
|
||||
-- Возвращает название блока, отображаемое в интерфейсе.
|
||||
block.caption(blockid: int) -> str
|
||||
|
||||
## Работа с миром
|
||||
```lua
|
||||
-- Возвращает числовой id блока на указанных координатах.
|
||||
-- Если чанк на указанных координатах не загружен, возвращает -1.
|
||||
block.get(x: int, y: int, z: int) -> int
|
||||
|
||||
-- Возвращает полное состояние (поворот + сегмент + доп. информация) в виде целого числа
|
||||
block.get_states(x: int, y: int, z: int) -> int
|
||||
|
||||
-- Устанавливает блок с заданным числовым id и состоянием (0 - по-умолчанию) на заданных координатах.
|
||||
block.set(x: int, y: int, z: int, id: int, states: int)
|
||||
-- Если передан noupdate=true, то вызов ивента `on_update` для соседних блоков не произойдёт.
|
||||
block.set(x: int, y: int, z: int, id: int, states: int, noupdate: boolean=false)
|
||||
|
||||
-- Устанавливает блок с заданным числовым id и состоянием (0 - по-умолчанию) на заданных координатах
|
||||
-- от лица игрока, вызывая событие on_placed.
|
||||
-- playerid не является обязательным
|
||||
block.place(x: int, y: int, z: int, id: int, states: int, [optional] playerid: int)
|
||||
block.place(x: int, y: int, z: int, id: int, states: int, [опционально] playerid: int)
|
||||
|
||||
-- Ломает блок на заданных координатах от лица игрока, вызывая событие on_broken.
|
||||
-- playerid не является обязательным
|
||||
block.destruct(x: int, y: int, z: int, playerid: int)
|
||||
|
||||
-- Собирает полное состояние в виде целого числа
|
||||
block.compose_state(state: {rotation: int, segment: int, userbits: int}) -> int
|
||||
|
||||
-- Разбирает полное состояние на: вращение, сегмент, пользовательские биты
|
||||
block.decompose_state(state: int) -> {int, int, int}
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> `block.set` не вызывает событие on_placed.
|
||||
|
||||
```lua
|
||||
-- Проверяет, является ли блок на указанных координатах полным
|
||||
block.is_solid_at(x: int, y: int, z: int) -> bool
|
||||
|
||||
-- Проверяет, можно ли на заданных координатах поставить блок
|
||||
-- (примеры: воздух, трава, цветы, вода)
|
||||
block.is_replaceable_at(x: int, y: int, z: int) -> bool
|
||||
|
||||
-- Возвращает количество id доступных в загруженном контенте блоков
|
||||
block.defs_count() -> int
|
||||
|
||||
-- Возвращает числовой id предмета, указанного в свойстве *picking-item*.
|
||||
block.get_picking_item(id: int) -> int
|
||||
|
||||
-- Возвращает индекс варианта блока
|
||||
block.get_variant(x: int, y: int, z: int) -> int
|
||||
|
||||
-- Устанавливает вариант блока по индексу
|
||||
block.set_variant(x: int, y: int, z: int, index: int) -> int
|
||||
|
||||
-- Проверяет наличие тега у блока
|
||||
block.has_tag(id: int, tag: str) -> bool
|
||||
```
|
||||
|
||||
### Raycast
|
||||
> [!WARNING]
|
||||
> `block.set` не вызывает событие on_placed.
|
||||
|
||||
## Свойства блоков
|
||||
```lua
|
||||
-- Проверяет, является ли блок на указанных координатах полным
|
||||
block.is_solid_at(x: int, y: int, z: int) -> boolean
|
||||
|
||||
-- Проверяет, можно ли на заданных координатах поставить блок
|
||||
-- (примеры: воздух, трава, цветы, вода)
|
||||
block.is_replaceable_at(x: int, y: int, z: int) -> boolean
|
||||
|
||||
-- Возвращает полное состояние (поворот + сегмент + доп. информация) в виде целого числа
|
||||
block.get_states(x: int, y: int, z: int) -> int
|
||||
|
||||
-- Возвращает название блока, отображаемое в интерфейсе.
|
||||
block.caption(blockid: int) -> string
|
||||
|
||||
-- Возвращает строковый id блока по его числовому id.
|
||||
block.name(blockid: int) -> string
|
||||
|
||||
-- Возвращает числовой id блока, принимая в качестве агрумента строковый
|
||||
block.index(name: string) -> int
|
||||
|
||||
-- Собирает полное состояние в виде целого числа
|
||||
block.compose_state(state: {rotation: int, segment: int, userbits: int}) -> int
|
||||
|
||||
-- Разбирает полное состояние на: вращение, сегмент, пользовательские биты
|
||||
block.decompose_state(state: int) -> {int, int, int}
|
||||
|
||||
-- Проверяет наличие тега у блока
|
||||
block.has_tag(id: int, tag: string) -> boolean
|
||||
|
||||
-- Возвращает числовой id предмета, указанного в свойстве *picking-item*.
|
||||
block.get_picking_item(id: int) -> int
|
||||
|
||||
-- Возвращает id материала блока.
|
||||
block.material(blockid: int) -> string
|
||||
```
|
||||
|
||||
## Raycast
|
||||
|
||||
```lua
|
||||
block.raycast(start: vec3, dir: vec3, max_distance: number, [опционально] dest: table, [опционально] filter: table) -> {
|
||||
|
|
@ -95,9 +112,6 @@ block.raycast(start: vec3, dir: vec3, max_distance: number, [опциональ
|
|||
|
||||
## Вращение
|
||||
|
||||
Следующие функции используется для учёта вращения блока при обращении к соседним блокам или других целей, где направление блока имеет решающее значение.
|
||||
|
||||
|
||||
```lua
|
||||
-- Возвращает целочисленный единичный вектор X блока на указанных координатах с учётом его вращения (три целых числа).
|
||||
-- Если поворот отсутствует, возвращает 1, 0, 0
|
||||
|
|
@ -119,46 +133,38 @@ block.get_rotation(x: int, y: int, z: int) -> int
|
|||
block.set_rotation(x: int, y: int, z: int, rotation: int)
|
||||
|
||||
-- Возвращает имя профиля вращения (none/pane/pipe)
|
||||
block.get_rotation_profile(id: int) -> str
|
||||
block.get_rotation_profile(id: int) -> string
|
||||
```
|
||||
|
||||
## Расширенные блоки
|
||||
|
||||
Расширенные блоки - те, размер которых превышает 1x1x1
|
||||
|
||||
```lua
|
||||
-- Проверяет, является ли блок расширенным.
|
||||
block.is_extended(id: int) -> bool
|
||||
block.is_extended(id: int) -> boolean
|
||||
|
||||
-- Возвращает размер блока.
|
||||
block.get_size(id: int) -> int, int, int
|
||||
|
||||
-- Проверяет является ли блок сегментом расширенного блока, не являющимся главным.
|
||||
block.is_segment(x: int, y: int, z: int) -> bool
|
||||
block.is_segment(x: int, y: int, z: int) -> boolean
|
||||
|
||||
-- Возвращает позицию главного сегмента расширенного блока или исходную позицию,
|
||||
-- если блок не является расширенным.
|
||||
block.seek_origin(x: int, y: int, z: int) -> int, int, int
|
||||
```
|
||||
|
||||
## Пользовательские биты
|
||||
|
||||
Выделенная под использования в скриптах часть поля `voxel.states` хранящего доп-информацию о вокселе, такую как вращение блока. На данный момент выделенная часть составляет 8 бит.
|
||||
## Модель и физика
|
||||
|
||||
```lua
|
||||
-- Возвращает выбранное число бит с указанного смещения в виде целого беззнакового числа
|
||||
block.get_user_bits(x: int, y: int, z: int, offset: int, bits: int) -> int
|
||||
-- возвращает тип модели блока (block/aabb/custom/...)
|
||||
block.get_model(id: int) -> string
|
||||
|
||||
-- Записывает указанное число бит значения value в user bits по выбранному смещению
|
||||
block.set_user_bits(x: int, y: int, z: int, offset: int, bits: int, value: int) -> int
|
||||
```
|
||||
-- возвращает имя модели блока
|
||||
block.model_name(id: int) -> string
|
||||
|
||||
-- возвращает массив из 6 текстур, назначенных на стороны блока
|
||||
block.get_textures(id: int) -> table<string>
|
||||
|
||||
## Физика
|
||||
|
||||
Информация свойствах блока, используемых физическим движком.
|
||||
|
||||
```lua
|
||||
-- Возвращает массив из двух векторов (массивов из 3 чисел):
|
||||
-- 1. Минимальная точка хитбокса
|
||||
-- 2. Размер хитбокса
|
||||
|
|
@ -166,32 +172,24 @@ block.set_user_bits(x: int, y: int, z: int, offset: int, bits: int, value: int)
|
|||
block.get_hitbox(id: int, rotation_index: int) -> {vec3, vec3}
|
||||
```
|
||||
|
||||
## Модель
|
||||
|
||||
Информация о модели блока.
|
||||
## Данные блоков
|
||||
|
||||
```lua
|
||||
-- возвращает тип модели блока (block/aabb/custom/...)
|
||||
block.get_model(id: int) -> str
|
||||
-- Возвращает выбранное число бит с указанного смещения в виде целого беззнакового числа
|
||||
block.get_user_bits(x: int, y: int, z: int, offset: int, bits: int) -> int
|
||||
|
||||
-- возвращает имя модели блока
|
||||
block.model_name(id: int) -> str
|
||||
-- Записывает указанное число бит значения value в user bits по выбранному смещению
|
||||
block.set_user_bits(x: int, y: int, z: int, offset: int, bits: int, value: int) -> int
|
||||
|
||||
-- возвращает массив из 6 текстур, назначенных на стороны блока
|
||||
block.get_textures(id: int) -> таблица строк
|
||||
```
|
||||
|
||||
## Поля данных
|
||||
|
||||
```lua
|
||||
-- записывает значение в указанное поле блока
|
||||
-- * бросает исключение при несовместимости типов
|
||||
-- * бросает исключение при выходе за границы массива
|
||||
-- * ничего не делает при отсутствии поля у блока
|
||||
block.set_field(
|
||||
x: int, y: int, z: int,
|
||||
name: str,
|
||||
value: bool|int|number|string,
|
||||
name: string,
|
||||
value: string | number | boolean,
|
||||
[опционально] index: int = 0
|
||||
)
|
||||
|
||||
|
|
@ -202,7 +200,7 @@ block.set_field(
|
|||
-- * бросает исключение при выходе за границы массива
|
||||
block.get_field(
|
||||
x: int, y: int, z: int,
|
||||
name: str,
|
||||
name: string,
|
||||
[опционально] index: int = 0
|
||||
) -> хранимое значение или nil
|
||||
```
|
||||
) -> any | nil
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue