From 76fc7b5fb4e0062b2493a6b4398cb475039dc652 Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Tue, 29 Oct 2024 18:52:31 +0300 Subject: [PATCH 1/6] libitem: exposed placing_block and emission to lua --- doc/en/scripting/builtins/libitem.md | 3 +++ doc/ru/scripting/builtins/libitem.md | 3 +++ src/logic/scripting/lua/libs/libitem.cpp | 17 +++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/en/scripting/builtins/libitem.md b/doc/en/scripting/builtins/libitem.md index 58dd7ba9..491fd620 100644 --- a/doc/en/scripting/builtins/libitem.md +++ b/doc/en/scripting/builtins/libitem.md @@ -24,4 +24,7 @@ item.placing_block(itemid: int) -> int -- Returns the value of the `model-name` property item.model_name(itemid: int) -> str + +-- Returns item emission property value +item.emission(itemid: int) -> str ``` diff --git a/doc/ru/scripting/builtins/libitem.md b/doc/ru/scripting/builtins/libitem.md index 4d0b9a62..542247b8 100644 --- a/doc/ru/scripting/builtins/libitem.md +++ b/doc/ru/scripting/builtins/libitem.md @@ -24,6 +24,9 @@ item.placing_block(itemid: int) -> int -- Возвращает значение свойства `model-name` item.model_name(itemid: int) -> str + +-- Возвращает emission параметр у предмета +item.emission(itemid: int) -> str ``` diff --git a/src/logic/scripting/lua/libs/libitem.cpp b/src/logic/scripting/lua/libs/libitem.cpp index a5ba27e5..533d3314 100644 --- a/src/logic/scripting/lua/libs/libitem.cpp +++ b/src/logic/scripting/lua/libs/libitem.cpp @@ -68,6 +68,22 @@ static int l_model_name(lua::State* L) { return 0; } +static int l_emission(lua::State* L) { + if (auto def = get_item_def(L, 1)) { + lua::createtable(L, 4, 0); + lua::pushinteger(L, def->emission[0]); + lua::rawseti(L, 1); + lua::pushinteger(L, def->emission[1]); + lua::rawseti(L, 2); + lua::pushinteger(L, def->emission[2]); + lua::rawseti(L, 3); + lua::pushinteger(L, def->emission[3]); + lua::rawseti(L, 4); + return 1; + } + return 0; +} + const luaL_Reg itemlib[] = { {"index", lua::wrap}, {"name", lua::wrap}, @@ -77,4 +93,5 @@ const luaL_Reg itemlib[] = { {"caption", lua::wrap}, {"placing_block", lua::wrap}, {"model_name", lua::wrap}, + {"emission", lua::wrap}, {NULL, NULL}}; From 803981e2a8c0a64b9bf34a98aac34ba91c939f0b Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Tue, 29 Oct 2024 18:53:22 +0300 Subject: [PATCH 2/6] libworld: expose WorldInfo::fog value to lua --- doc/en/scripting/builtins/libworld.md | 6 ++++++ doc/ru/scripting/builtins/libworld.md | 6 ++++++ src/logic/scripting/lua/libs/libworld.cpp | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/en/scripting/builtins/libworld.md b/doc/en/scripting/builtins/libworld.md index afd8c240..c0b8d457 100644 --- a/doc/en/scripting/builtins/libworld.md +++ b/doc/en/scripting/builtins/libworld.md @@ -16,6 +16,12 @@ world.get_day_time() -> number -- Set day time value. world.set_day_time(time: number) +-- Returns current fog value. +world.get_fog() -> number + +-- Set fog value. +world.set_fog(value: number) + -- Sets the specified day time cycle speed. world.set_day_time_speed(value: number) diff --git a/doc/ru/scripting/builtins/libworld.md b/doc/ru/scripting/builtins/libworld.md index 31806de4..c6818bc5 100644 --- a/doc/ru/scripting/builtins/libworld.md +++ b/doc/ru/scripting/builtins/libworld.md @@ -15,6 +15,12 @@ world.get_day_time() -> number -- Устанавливает указанное игровое время. world.set_day_time(time: number) +-- Возвращает текущее значение тумана. +world.get_fog() -> number + +-- Устанавливает указанное значение тумана. +world.set_fog(value: number) + -- Устанавливает указанную скорость смены времени суток. world.set_day_time_speed(value: number) diff --git a/src/logic/scripting/lua/libs/libworld.cpp b/src/logic/scripting/lua/libs/libworld.cpp index 04249299..8330a871 100644 --- a/src/logic/scripting/lua/libs/libworld.cpp +++ b/src/logic/scripting/lua/libs/libworld.cpp @@ -62,6 +62,15 @@ static int l_set_day_time(lua::State* L) { require_world_info().daytime = std::fmod(value, 1.0); return 0; } +static int l_get_fog(lua::State* L) { + return lua::pushnumber(L, require_world_info().fog); +} + +static int l_set_fog(lua::State* L) { + auto value = lua::tonumber(L, 1); + require_world_info().fog = std::fmod(value, 1.0); + return 0; +} static int l_set_day_time_speed(lua::State* L) { auto value = lua::tonumber(L, 1); @@ -102,6 +111,8 @@ const luaL_Reg worldlib[] = { {"get_total_time", lua::wrap}, {"get_day_time", lua::wrap}, {"set_day_time", lua::wrap}, + {"get_fog", lua::wrap}, + {"set_fog", lua::wrap}, {"set_day_time_speed", lua::wrap}, {"get_day_time_speed", lua::wrap}, {"get_seed", lua::wrap}, From 7f5bc41835271c02e00f035972ef24d5de0d07e5 Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Tue, 29 Oct 2024 19:38:18 +0300 Subject: [PATCH 3/6] libentities: add get_hitbox that returns a hitbox from entity definition --- doc/en/scripting/builtins/libentities.md | 5 +++++ doc/ru/scripting/builtins/libentities.md | 3 +++ src/logic/scripting/lua/libs/libentity.cpp | 15 +++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/en/scripting/builtins/libentities.md b/doc/en/scripting/builtins/libentities.md index cb46a3a5..6a024aee 100644 --- a/doc/en/scripting/builtins/libentities.md +++ b/doc/en/scripting/builtins/libentities.md @@ -50,6 +50,11 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - center of the area -- radius - radius of the area entities.get_all_in_radius(center: vec3, radius: number) -> array + + +-- Returns a float array representing hitbox size from entity definition +entities.get_hitbox(uid: int)->array + ``` ```lua diff --git a/doc/ru/scripting/builtins/libentities.md b/doc/ru/scripting/builtins/libentities.md index 1e0cc6c0..b1e30338 100644 --- a/doc/ru/scripting/builtins/libentities.md +++ b/doc/ru/scripting/builtins/libentities.md @@ -50,6 +50,9 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - центр области -- radius - радиус области entities.get_all_in_radius(center: vec3, radius: number) -> array + +-- Возвращает массив флотов хитбокса из определения сущности +entities.get_hitbox(uid: int)->array ``` ```lua diff --git a/src/logic/scripting/lua/libs/libentity.cpp b/src/logic/scripting/lua/libs/libentity.cpp index b6fef820..225dd918 100644 --- a/src/logic/scripting/lua/libs/libentity.cpp +++ b/src/logic/scripting/lua/libs/libentity.cpp @@ -53,6 +53,20 @@ static int l_get_def(lua::State* L) { return 0; } +static int l_get_hitbox(lua::State* L){ + if (auto def = require_entity_def(L)) { + lua::createtable(L, 3, 0); + lua::pushnumber(L, def->hitbox.x); + lua::rawseti(L, 1); + lua::pushnumber(L, def->hitbox.y); + lua::rawseti(L, 2); + lua::pushnumber(L, def->hitbox.z); + lua::rawseti(L, 3); + return 1; + } + return 0; +} + static int l_spawn(lua::State* L) { auto level = controller->getLevel(); auto defname = lua::tostring(L, 1); @@ -214,6 +228,7 @@ const luaL_Reg entitylib[] = { {"get_def", lua::wrap}, {"defs_count", lua::wrap}, {"spawn", lua::wrap}, + {"get_hitbox", lua::wrap}, {"despawn", lua::wrap}, {"get_skeleton", lua::wrap}, {"set_skeleton", lua::wrap}, From a4b1b2100b9d507a50fbf8a93d6f4ec76f2b3abf Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Tue, 29 Oct 2024 22:14:21 +0300 Subject: [PATCH 4/6] libentities: deprecate in favour of official implementation --- doc/en/scripting/builtins/libentities.md | 5 ----- doc/ru/scripting/builtins/libentities.md | 3 --- src/logic/scripting/lua/libs/libentity.cpp | 15 --------------- 3 files changed, 23 deletions(-) diff --git a/doc/en/scripting/builtins/libentities.md b/doc/en/scripting/builtins/libentities.md index 6a024aee..cb46a3a5 100644 --- a/doc/en/scripting/builtins/libentities.md +++ b/doc/en/scripting/builtins/libentities.md @@ -50,11 +50,6 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - center of the area -- radius - radius of the area entities.get_all_in_radius(center: vec3, radius: number) -> array - - --- Returns a float array representing hitbox size from entity definition -entities.get_hitbox(uid: int)->array - ``` ```lua diff --git a/doc/ru/scripting/builtins/libentities.md b/doc/ru/scripting/builtins/libentities.md index b1e30338..1e0cc6c0 100644 --- a/doc/ru/scripting/builtins/libentities.md +++ b/doc/ru/scripting/builtins/libentities.md @@ -50,9 +50,6 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - центр области -- radius - радиус области entities.get_all_in_radius(center: vec3, radius: number) -> array - --- Возвращает массив флотов хитбокса из определения сущности -entities.get_hitbox(uid: int)->array ``` ```lua diff --git a/src/logic/scripting/lua/libs/libentity.cpp b/src/logic/scripting/lua/libs/libentity.cpp index 225dd918..b6fef820 100644 --- a/src/logic/scripting/lua/libs/libentity.cpp +++ b/src/logic/scripting/lua/libs/libentity.cpp @@ -53,20 +53,6 @@ static int l_get_def(lua::State* L) { return 0; } -static int l_get_hitbox(lua::State* L){ - if (auto def = require_entity_def(L)) { - lua::createtable(L, 3, 0); - lua::pushnumber(L, def->hitbox.x); - lua::rawseti(L, 1); - lua::pushnumber(L, def->hitbox.y); - lua::rawseti(L, 2); - lua::pushnumber(L, def->hitbox.z); - lua::rawseti(L, 3); - return 1; - } - return 0; -} - static int l_spawn(lua::State* L) { auto level = controller->getLevel(); auto defname = lua::tostring(L, 1); @@ -228,7 +214,6 @@ const luaL_Reg entitylib[] = { {"get_def", lua::wrap}, {"defs_count", lua::wrap}, {"spawn", lua::wrap}, - {"get_hitbox", lua::wrap}, {"despawn", lua::wrap}, {"get_skeleton", lua::wrap}, {"set_skeleton", lua::wrap}, From 3383566e6ac6f41a88c55d13d9e6a86ef55b6306 Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Wed, 30 Oct 2024 13:45:59 +0300 Subject: [PATCH 5/6] libitem: Minor cleanup --- src/logic/scripting/lua/libs/libitem.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/logic/scripting/lua/libs/libitem.cpp b/src/logic/scripting/lua/libs/libitem.cpp index 533d3314..c4ac49ec 100644 --- a/src/logic/scripting/lua/libs/libitem.cpp +++ b/src/logic/scripting/lua/libs/libitem.cpp @@ -71,14 +71,10 @@ static int l_model_name(lua::State* L) { static int l_emission(lua::State* L) { if (auto def = get_item_def(L, 1)) { lua::createtable(L, 4, 0); - lua::pushinteger(L, def->emission[0]); - lua::rawseti(L, 1); - lua::pushinteger(L, def->emission[1]); - lua::rawseti(L, 2); - lua::pushinteger(L, def->emission[2]); - lua::rawseti(L, 3); - lua::pushinteger(L, def->emission[3]); - lua::rawseti(L, 4); + for (int i = 0; i < 4; ++i) { + lua::pushinteger(L, def->emission[i]); + lua::rawseti(L, i+1); + } return 1; } return 0; From 5ba96945e64565a75e5dae55d440e5afe2b76489 Mon Sep 17 00:00:00 2001 From: REDxEYE Date: Sun, 3 Nov 2024 20:39:03 +0300 Subject: [PATCH 6/6] Remove fog api as it soon to be deprecated --- doc/en/scripting/builtins/libworld.md | 6 ------ doc/ru/scripting/builtins/libworld.md | 6 ------ src/logic/scripting/lua/libs/libworld.cpp | 11 ----------- 3 files changed, 23 deletions(-) diff --git a/doc/en/scripting/builtins/libworld.md b/doc/en/scripting/builtins/libworld.md index c0b8d457..afd8c240 100644 --- a/doc/en/scripting/builtins/libworld.md +++ b/doc/en/scripting/builtins/libworld.md @@ -16,12 +16,6 @@ world.get_day_time() -> number -- Set day time value. world.set_day_time(time: number) --- Returns current fog value. -world.get_fog() -> number - --- Set fog value. -world.set_fog(value: number) - -- Sets the specified day time cycle speed. world.set_day_time_speed(value: number) diff --git a/doc/ru/scripting/builtins/libworld.md b/doc/ru/scripting/builtins/libworld.md index c6818bc5..31806de4 100644 --- a/doc/ru/scripting/builtins/libworld.md +++ b/doc/ru/scripting/builtins/libworld.md @@ -15,12 +15,6 @@ world.get_day_time() -> number -- Устанавливает указанное игровое время. world.set_day_time(time: number) --- Возвращает текущее значение тумана. -world.get_fog() -> number - --- Устанавливает указанное значение тумана. -world.set_fog(value: number) - -- Устанавливает указанную скорость смены времени суток. world.set_day_time_speed(value: number) diff --git a/src/logic/scripting/lua/libs/libworld.cpp b/src/logic/scripting/lua/libs/libworld.cpp index 8330a871..04249299 100644 --- a/src/logic/scripting/lua/libs/libworld.cpp +++ b/src/logic/scripting/lua/libs/libworld.cpp @@ -62,15 +62,6 @@ static int l_set_day_time(lua::State* L) { require_world_info().daytime = std::fmod(value, 1.0); return 0; } -static int l_get_fog(lua::State* L) { - return lua::pushnumber(L, require_world_info().fog); -} - -static int l_set_fog(lua::State* L) { - auto value = lua::tonumber(L, 1); - require_world_info().fog = std::fmod(value, 1.0); - return 0; -} static int l_set_day_time_speed(lua::State* L) { auto value = lua::tonumber(L, 1); @@ -111,8 +102,6 @@ const luaL_Reg worldlib[] = { {"get_total_time", lua::wrap}, {"get_day_time", lua::wrap}, {"set_day_time", lua::wrap}, - {"get_fog", lua::wrap}, - {"set_fog", lua::wrap}, {"set_day_time_speed", lua::wrap}, {"get_day_time_speed", lua::wrap}, {"get_seed", lua::wrap},