From: ShadowNinja Date: Tue, 14 Jan 2014 00:28:55 +0000 (-0500) Subject: Add minetest.override_item X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=574ed6a363328dcfa477b1779f3d9491322d96b7;p=zefram%2Fminetest%2Fminetest_engine.git Add minetest.override_item --- diff --git a/builtin/misc_register.lua b/builtin/misc_register.lua index 6c50ff02..d00945db 100644 --- a/builtin/misc_register.lua +++ b/builtin/misc_register.lua @@ -315,6 +315,24 @@ minetest.register_item(":", { }) +function minetest.override_item(name, redefinition) + if redefinition.name ~= nil then + error("Attemt to redefine name of "..name.." to "..dump(redefinition.name), 2) + end + if redefinition.type ~= nil then + error("Attemt to redefine type of "..name.." to "..dump(redefinition.type), 2) + end + local item = minetest.registered_items[name] + if not item then + error("Attemt to override non-existent item "..name, 2) + end + for k, v in pairs(redefinition) do + rawset(item, k, v) + end + register_item_raw(item) +end + + function minetest.run_callbacks(callbacks, mode, ...) assert(type(callbacks) == "table") local cb_len = #callbacks diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 8bd83995..40dace9d 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1189,6 +1189,10 @@ minetest.register_alias(name, convert_to) minetest.register_craft(recipe) minetest.register_ore(ore definition) minetest.register_decoration(decoration definition) +minetest.override_item(name, redefinition) +^ Overrides fields of an item registered with register_node/tool/craftitem. +^ Note: Item must already be defined, (opt)depend on the mod defining it. +^ Example: minetest.override_item("default:mese", {light_source=LIGHT_MAX}) Global callback registration functions: (Call these only at load time) minetest.register_globalstep(func(dtime))