From 751f8a754421ab009cee0e9929750a4b026ddcef Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 28 Oct 2024 13:07:10 +0300 Subject: [PATCH] add item.get_placing_block --- doc/en/scripting/builtins/libitem.md | 3 +++ doc/ru/scripting/builtins/libitem.md | 5 +++- src/logic/scripting/lua/libs/libitem.cpp | 32 +++++++++++++++--------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/doc/en/scripting/builtins/libitem.md b/doc/en/scripting/builtins/libitem.md index 2b695202..46c144f0 100644 --- a/doc/en/scripting/builtins/libitem.md +++ b/doc/en/scripting/builtins/libitem.md @@ -18,4 +18,7 @@ item.defs_count() -> int -- Returns item icon name to use in 'src' property of an image element item.icon(itemid: int) -> str + +-- Returns the integer id 'placing-block' or 0 +item.get_placing_block(itemid: int) -> int ``` diff --git a/doc/ru/scripting/builtins/libitem.md b/doc/ru/scripting/builtins/libitem.md index 0bbfcd2a..5b26811c 100644 --- a/doc/ru/scripting/builtins/libitem.md +++ b/doc/ru/scripting/builtins/libitem.md @@ -8,7 +8,7 @@ item.name(itemid: int) -> str item.index(name: str) -> int -- Возвращает название предмета, отображаемое в интерфейсе. -item.caption(blockid: int) -> str +item.caption(itemid: int) -> str -- Возвращает максимальный размер стопки для предмета. item.stack_size(itemid: int) -> int @@ -18,6 +18,9 @@ item.defs_count() -> int -- Возвращает имя иконки предмета для использования в свойстве 'src' элемента image item.icon(itemid: int) -> str + +-- Возвращает числовой id блока, назначенного как 'placing-block' или 0 +item.get_placing_block(itemid: int) -> int ``` diff --git a/src/logic/scripting/lua/libs/libitem.cpp b/src/logic/scripting/lua/libs/libitem.cpp index 52b15c69..5088d7bc 100644 --- a/src/logic/scripting/lua/libs/libitem.cpp +++ b/src/logic/scripting/lua/libs/libitem.cpp @@ -10,30 +10,30 @@ static const ItemDef* get_item_def(lua::State* L, int idx) { return indices->items.get(id); } -static int l_item_name(lua::State* L) { +static int l_name(lua::State* L) { if (auto def = get_item_def(L, 1)) { return lua::pushstring(L, def->name); } return 0; } -static int l_item_index(lua::State* L) { +static int l_index(lua::State* L) { auto name = lua::require_string(L, 1); return lua::pushinteger(L, content->items.require(name).rt.id); } -static int l_item_stack_size(lua::State* L) { +static int l_stack_size(lua::State* L) { if (auto def = get_item_def(L, 1)) { return lua::pushinteger(L, def->stackSize); } return 0; } -static int l_item_defs_count(lua::State* L) { +static int l_defs_count(lua::State* L) { return lua::pushinteger(L, indices->items.count()); } -static int l_item_get_icon(lua::State* L) { +static int l_get_icon(lua::State* L) { if (auto def = get_item_def(L, 1)) { switch (def->iconType) { case ItemIconType::NONE: @@ -47,18 +47,26 @@ static int l_item_get_icon(lua::State* L) { return 0; } -static int l_item_caption(lua::State* L) { +static int l_caption(lua::State* L) { if (auto def = get_item_def(L, 1)) { return lua::pushstring(L, def->caption); } return 0; } +static int l_get_placing_block(lua::State* L) { + if (auto def = get_item_def(L, 1)) { + return lua::pushinteger(L, def->rt.placingBlock); + } + return 0; +} + const luaL_Reg itemlib[] = { - {"index", lua::wrap}, - {"name", lua::wrap}, - {"stack_size", lua::wrap}, - {"defs_count", lua::wrap}, - {"icon", lua::wrap}, - {"caption", lua::wrap}, + {"index", lua::wrap}, + {"name", lua::wrap}, + {"stack_size", lua::wrap}, + {"defs_count", lua::wrap}, + {"icon", lua::wrap}, + {"caption", lua::wrap}, + {"get_placing_block", lua::wrap}, {NULL, NULL}};