Use warningstream for deprecated field messages and refactor log_deprecated
parent
659922fd30
commit
7b8d372947
|
@ -76,7 +76,7 @@ ItemDefinition read_item_definition(lua_State* L,int index,
|
||||||
getboolfield(L, index, "liquids_pointable", def.liquids_pointable);
|
getboolfield(L, index, "liquids_pointable", def.liquids_pointable);
|
||||||
|
|
||||||
warn_if_field_exists(L, index, "tool_digging_properties",
|
warn_if_field_exists(L, index, "tool_digging_properties",
|
||||||
"deprecated: use tool_capabilities");
|
"Deprecated; use tool_capabilities");
|
||||||
|
|
||||||
lua_getfield(L, index, "tool_capabilities");
|
lua_getfield(L, index, "tool_capabilities");
|
||||||
if(lua_istable(L, -1)){
|
if(lua_istable(L, -1)){
|
||||||
|
@ -427,17 +427,17 @@ ContentFeatures read_content_features(lua_State *L, int index)
|
||||||
|
|
||||||
// Warn about some deprecated fields
|
// Warn about some deprecated fields
|
||||||
warn_if_field_exists(L, index, "wall_mounted",
|
warn_if_field_exists(L, index, "wall_mounted",
|
||||||
"deprecated: use paramtype2 = 'wallmounted'");
|
"Deprecated; use paramtype2 = 'wallmounted'");
|
||||||
warn_if_field_exists(L, index, "light_propagates",
|
warn_if_field_exists(L, index, "light_propagates",
|
||||||
"deprecated: determined from paramtype");
|
"Deprecated; determined from paramtype");
|
||||||
warn_if_field_exists(L, index, "dug_item",
|
warn_if_field_exists(L, index, "dug_item",
|
||||||
"deprecated: use 'drop' field");
|
"Deprecated; use 'drop' field");
|
||||||
warn_if_field_exists(L, index, "extra_dug_item",
|
warn_if_field_exists(L, index, "extra_dug_item",
|
||||||
"deprecated: use 'drop' field");
|
"Deprecated; use 'drop' field");
|
||||||
warn_if_field_exists(L, index, "extra_dug_item_rarity",
|
warn_if_field_exists(L, index, "extra_dug_item_rarity",
|
||||||
"deprecated: use 'drop' field");
|
"Deprecated; use 'drop' field");
|
||||||
warn_if_field_exists(L, index, "metadata_name",
|
warn_if_field_exists(L, index, "metadata_name",
|
||||||
"deprecated: use on_add and metadata callbacks");
|
"Deprecated; use on_add and metadata callbacks");
|
||||||
|
|
||||||
// True for all ground-like things like stone and mud, false for eg. trees
|
// True for all ground-like things like stone and mud, false for eg. trees
|
||||||
getboolfield(L, index, "is_ground_content", f.is_ground_content);
|
getboolfield(L, index, "is_ground_content", f.is_ground_content);
|
||||||
|
@ -639,14 +639,13 @@ void pushnode(lua_State *L, const MapNode &n, INodeDefManager *ndef)
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
void warn_if_field_exists(lua_State *L, int table,
|
void warn_if_field_exists(lua_State *L, int table,
|
||||||
const char *fieldname, const std::string &message)
|
const char *name, const std::string &message)
|
||||||
{
|
{
|
||||||
lua_getfield(L, table, fieldname);
|
lua_getfield(L, table, name);
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
//TODO find way to access backtrace fct from here
|
warningstream << "Field \"" << name << "\": "
|
||||||
// infostream<<script_get_backtrace(L)<<std::endl;
|
|
||||||
infostream<<"WARNING: field \""<<fieldname<<"\": "
|
|
||||||
<< message << std::endl;
|
<< message << std::endl;
|
||||||
|
infostream << script_get_backtrace(L) << std::endl;
|
||||||
}
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
|
@ -705,7 +704,7 @@ ItemStack read_item(lua_State* L, int index,Server* srv)
|
||||||
}
|
}
|
||||||
catch(SerializationError &e)
|
catch(SerializationError &e)
|
||||||
{
|
{
|
||||||
infostream<<"WARNING: unable to create item from itemstring"
|
warningstream<<"unable to create item from itemstring"
|
||||||
<<": "<<itemstring<<std::endl;
|
<<": "<<itemstring<<std::endl;
|
||||||
return ItemStack();
|
return ItemStack();
|
||||||
}
|
}
|
||||||
|
@ -845,9 +844,9 @@ ToolCapabilities read_tool_capabilities(
|
||||||
groupcap.uses = 1.0/maxwear;
|
groupcap.uses = 1.0/maxwear;
|
||||||
else
|
else
|
||||||
groupcap.uses = 0;
|
groupcap.uses = 0;
|
||||||
|
warningstream << "Field \"maxwear\" is deprecated; "
|
||||||
|
<< "replace with uses=1/maxwear" << std::endl;
|
||||||
infostream << script_get_backtrace(L) << std::endl;
|
infostream << script_get_backtrace(L) << std::endl;
|
||||||
infostream<<"WARNING: field \"maxwear\" is deprecated; "
|
|
||||||
<<"should replace with uses=1/maxwear"<<std::endl;
|
|
||||||
}
|
}
|
||||||
// Read "times" table
|
// Read "times" table
|
||||||
lua_getfield(L, table_groupcap, "times");
|
lua_getfield(L, table_groupcap, "times");
|
||||||
|
|
|
@ -163,35 +163,26 @@ void script_run_callbacks_f(lua_State *L, int nargs,
|
||||||
void log_deprecated(lua_State *L, const std::string &message)
|
void log_deprecated(lua_State *L, const std::string &message)
|
||||||
{
|
{
|
||||||
static bool configured = false;
|
static bool configured = false;
|
||||||
static bool dolog = false;
|
static bool do_log = false;
|
||||||
static bool doerror = false;
|
static bool do_error = false;
|
||||||
|
|
||||||
// performance optimization to not have to read and compare setting for every logline
|
// Only read settings on first call
|
||||||
if (!configured) {
|
if (!configured) {
|
||||||
std::string value = g_settings->get("deprecated_lua_api_handling");
|
std::string value = g_settings->get("deprecated_lua_api_handling");
|
||||||
if (value == "log") {
|
if (value == "log") {
|
||||||
dolog = true;
|
do_log = true;
|
||||||
} else if (value == "error") {
|
} else if (value == "error") {
|
||||||
dolog = true;
|
do_log = true;
|
||||||
doerror = true;
|
do_error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doerror) {
|
if (do_log) {
|
||||||
if (L != NULL) {
|
warningstream << message << std::endl;
|
||||||
|
if (do_error)
|
||||||
script_error(L, LUA_ERRRUN, NULL, NULL);
|
script_error(L, LUA_ERRRUN, NULL, NULL);
|
||||||
} else {
|
else
|
||||||
FATAL_ERROR("Can't do a scripterror for this deprecated message, "
|
infostream << script_get_backtrace(L) << std::endl;
|
||||||
"so exit completely!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dolog) {
|
|
||||||
/* abusing actionstream because of lack of file-only-logged loglevel */
|
|
||||||
actionstream << message << std::endl;
|
|
||||||
if (L != NULL) {
|
|
||||||
actionstream << script_get_backtrace(L) << std::endl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue