diff --git a/builtin/game/features.lua b/builtin/game/features.lua index 051d2aa2a..22bf1859d 100644 --- a/builtin/game/features.lua +++ b/builtin/game/features.lua @@ -41,6 +41,7 @@ core.features = { item_meta_range = true, node_interaction_actor = true, moveresult_new_pos = true, + override_item_remove_fields = true, } function core.has_feature(arg) diff --git a/doc/lua_api.md b/doc/lua_api.md index dca31e4b6..4eea2f7f3 100644 --- a/doc/lua_api.md +++ b/doc/lua_api.md @@ -5444,6 +5444,8 @@ Utilities node_interaction_actor = true, -- "new_pos" field in entity moveresult (5.9.0) moveresult_new_pos = true, + -- Allow removing definition fields in `minetest.override_item` + override_item_remove_fields = true, } ``` diff --git a/games/devtest/mods/unittests/misc.lua b/games/devtest/mods/unittests/misc.lua index 6ff5c7e84..4bd8002b9 100644 --- a/games/devtest/mods/unittests/misc.lua +++ b/games/devtest/mods/unittests/misc.lua @@ -254,3 +254,15 @@ local function test_gennotify_api() assert(#custom == 0, "custom ids not empty") end unittests.register("test_gennotify_api", test_gennotify_api) + +unittests.register("test_item_registration", function() + local itemname = "unittests:test_override_item" + minetest.register_item(itemname, {description = "foo"}) + assert(assert(minetest.registered_items[itemname]).description == "foo") + minetest.override_item(itemname, {description = "bar"}) + assert(assert(minetest.registered_items[itemname]).description == "bar") + minetest.override_item(itemname, {}, {"description"}) + assert(assert(minetest.registered_items[itemname]).description == nil) + minetest.unregister_item("unittests:test_override_item") + assert(minetest.registered_items["unittests:test_override_item"] == nil) +end)