From 7689f1f0fd6a954ac061e683a332e3555f72c152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:24:00 +0200 Subject: [PATCH] Improve some warning messages (#15990) --- builtin/game/register.lua | 15 ++++++++++----- src/script/lua_api/l_mainmenu.cpp | 3 ++- src/script/lua_api/l_util.cpp | 8 +++++++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/builtin/game/register.lua b/builtin/game/register.lua index dc9dcfb0e..d6ada6920 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -156,7 +156,8 @@ local function preprocess_craft(itemdef) -- BEGIN Legacy stuff if itemdef.inventory_image == nil and itemdef.image ~= nil then core.log("deprecated", "The `image` field in craftitem definitions " .. - "is deprecated. Use `inventory_image` instead.") + "is deprecated. Use `inventory_image` instead. " .. + "Craftitem name: " .. itemdef.name, 3) itemdef.inventory_image = itemdef.image end -- END Legacy stuff @@ -168,7 +169,8 @@ local function preprocess_tool(tooldef) -- BEGIN Legacy stuff if tooldef.inventory_image == nil and tooldef.image ~= nil then core.log("deprecated", "The `image` field in tool definitions " .. - "is deprecated. Use `inventory_image` instead.") + "is deprecated. Use `inventory_image` instead. " .. + "Tool name: " .. tooldef.name, 3) tooldef.inventory_image = tooldef.image end @@ -185,7 +187,8 @@ local function preprocess_tool(tooldef) tooldef.dd_crumbliness ~= nil or tooldef.dd_cuttability ~= nil) then core.log("deprecated", "Specifying tool capabilities directly in the tool " .. - "definition is deprecated. Use the `tool_capabilities` field instead.") + "definition is deprecated. Use the `tool_capabilities` field instead. " .. + "Tool name: " .. tooldef.name, 3) tooldef.tool_capabilities = { full_punch_interval = tooldef.full_punch_interval, basetime = tooldef.basetime, @@ -269,7 +272,8 @@ function core.register_item(name, itemdef) -- BEGIN Legacy stuff if itemdef.cookresult_itemstring ~= nil and itemdef.cookresult_itemstring ~= "" then core.log("deprecated", "The `cookresult_itemstring` item definition " .. - "field is deprecated. Use `core.register_craft` instead.") + "field is deprecated. Use `core.register_craft` instead. " .. + "Item name: " .. itemdef.name, 2) core.register_craft({ type="cooking", output=itemdef.cookresult_itemstring, @@ -279,7 +283,8 @@ function core.register_item(name, itemdef) end if itemdef.furnace_burntime ~= nil and itemdef.furnace_burntime >= 0 then core.log("deprecated", "The `furnace_burntime` item definition " .. - "field is deprecated. Use `core.register_craft` instead.") + "field is deprecated. Use `core.register_craft` instead. " .. + "Item name: " .. itemdef.name, 2) core.register_craft({ type="fuel", recipe=itemdef.name, diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index f6734c788..7070952e6 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -364,7 +364,8 @@ int ModApiMainMenu::l_get_content_info(lua_State *L) // being able to return type "unknown". // TODO inspect call sites and make sure this is handled, then we can // likely remove the warning. - warningstream << "Requested content info has type \"unknown\"" << std::endl; + warningstream << "Requested content info has type \"unknown\" " + << "(at " << path << ")" << std::endl; } lua_newtable(L); diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 86d3de316..5ac290b2e 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -54,7 +54,13 @@ int ModApiUtil::l_log(lua_State *L) auto name = readParam(L, 1); text = readParam(L, 2); if (name == "deprecated") { - log_deprecated(L, text, 2); + // core.log("deprecated", message [, stack_level]) + // Level 1 - immediate caller of core.log (probably engine code); + // Level 2 - caller of the function that called core.log, and so on + int stack_level = readParam(L, 3, 2); + if (stack_level < 1) + throw LuaError("invalid stack level"); + log_deprecated(L, text, stack_level); return 0; } level = Logger::stringToLevel(name);