Merge branch 'main' into release-0.25

This commit is contained in:
MihailRis
2024-11-28 18:59:37 +03:00
12 changed files with 276 additions and 3 deletions
+9
View File
@@ -199,3 +199,12 @@
- На данный момент общая сумма размеров полей не может превышать 240 байт.
- Поле без указания длины массива эквивалентно массиву из 1 элемента.
- Массив символьного типа может использоваться для хранения UTF-8 строк.
## Пользовательские свойства
Пользовательские свойства должны быть объявляены в файле `пак:config/user-props.toml`:
```toml
"пак:имя_свойства" = {}
```
Пример: [пользовательские свойства пака **base**](../../res/content/base/config/user-props.toml).
+2
View File
@@ -15,6 +15,7 @@
- [cameras](scripting/builtins/libcameras.md)
- [entities](scripting/builtins/libentities.md)
- [file](scripting/builtins/libfile.md)
- [gfx.blockwraps](scripting/builtins/libgfx-blockwraps.md)
- [gfx.particles](particles.md#библиотека-gfxparticles)
- [gfx.text3d](3d-text.md#библиотека-gfxtext3d)
- [gui](scripting/builtins/libgui.md)
@@ -22,6 +23,7 @@
- [inventory](scripting/builtins/libinventory.md)
- [item](scripting/builtins/libitem.md)
- [mat4](scripting/builtins/libmat4.md)
- [network](scripting/builtins/libnetwork.md)
- [pack](scripting/builtins/libpack.md)
- [player](scripting/builtins/libplayer.md)
- [quat](scripting/builtins/libquat.md)
@@ -0,0 +1,23 @@
# Библиотека *gfx.blockwraps*
Библиотека для работы с *обертками блоков*.
Обёртки блоков введены для реализации анимации разрушения блоков и могут
использоваться для иных задач.
```lua
-- Создаёт обертку на указанной позиции, с указанной текстурой.
-- Возвращает id обёртки.
gfx.blockwraps.wrap(position: vec3, texture: str) --> int
-- Удаляет обертку, если она существует.
gfx.blockwraps.unwrap(id: int)
-- Меняет позицию обёртки, если она существует.
gfx.blockwraps.set_pos(id: int, position: vec3)
-- Меняет текстуру обёртки, если она существует.
gfx.blockwraps.set_texture(id: int, texture: str)
```
Обертки не удаляются автоматически без вызова `unwrap`.
+94
View File
@@ -0,0 +1,94 @@
# Библиотека *network*
Библиотека для работы с сетью.
## HTTP-запросы
```lua
-- Выполняет GET запрос к указанному URL.
-- После получения ответа, передаёт текст в функцию callback.
network.get(url: str, callback: function(str))
-- Пример:
network.get("https://api.github.com/repos/MihailRis/VoxelEngine-Cpp/releases/latest", function (s)
print(json.parse(s).name) -- выведет имя последнего релиза движка
end)
-- Вариант для двоичных файлов, с массивом байт вместо строки в ответе.
network.get_binary(url: str, callback: function(table|ByteArray))
```
## TCP-Соединения
```lua
network.tcp_connect(
-- Адрес
address: str,
-- Порт
port: int,
-- Функция, вызываемая при успешном подключении
-- До подключения отправка работать не будет
-- Как единственный аргумент передаётся сокет
callback: function(Socket)
) --> Socket
```
Инициирует TCP подключение.
Класс Socket имеет следующие методы:
```lua
-- Отправляет массив байт
socket:send(table|ByteArray)
-- Читает полученные данные
socket:recv(
-- Максимальный размер читаемого массива байт
length: int,
-- Использовать таблицу вместо Bytearray
[опционально] usetable: bool=false
) -> nil|table|Bytearray
-- В случае ошибки возвращает nil (сокет закрыт или несуществует).
-- Если данных пока нет, возвращает пустой массив байт.
-- Закрывает соединение
socket:close()
-- Проверяет, что сокет существует и не закрыт.
socket:is_alive() --> bool
-- Проверяет наличие соединения (доступно использование socket:send(...)).
socket:is_connected() --> bool
```
```lua
-- Открывает TCP-сервер.
network.tcp_open(
-- Порт
port: int,
-- Функция, вызываемая при поключениях
-- Как единственный аргумент передаётся сокет подключенного клиента
callback: function(Socket)
) --> ServerSocket
```
Класс SocketServer имеет следующие методы:
```lua
-- Закрывает сервер, разрывая соединения с клиентами.
server:close()
-- Проверяет, существует и открыт ли TCP сервер.
server:is_open() --> bool
```
## Аналитика
```lua
-- Возвращает приблизительный объем отправленных данных (включая соединения с localhost)
-- в байтах.
network.get_total_upload() --> int
-- Возвращает приблизительный объем полученных данных (включая соединения с localhost)
-- в байтах.
network.get_total_download() --> int
```
+1
View File
@@ -99,6 +99,7 @@
Внутренний текст - изначально введенный текст
- `placeholder` - текст подстановки (используется если текстовое поле пусто)
- `hint` - текст, отображаемый, если текстовое поле пусто (не отправляется в consumer, sub-consumer и validator).
- `supplier` - поставщик текста (вызывается каждый кадр)
- `consumer` - lua функция-приемник введенного текста. Вызывается только при завершении ввода
- `sub-consumer` - lua функция-приемник вводимого текста. Вызывается во время ввода или удаления текста.