Skip to content

Commit 574ed6a

Browse files
committed
Add minetest.override_item
1 parent 8966c16 commit 574ed6a

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

builtin/misc_register.lua

+18
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,24 @@ minetest.register_item(":", {
315315
})
316316

317317

318+
function minetest.override_item(name, redefinition)
319+
if redefinition.name ~= nil then
320+
error("Attemt to redefine name of "..name.." to "..dump(redefinition.name), 2)
321+
end
322+
if redefinition.type ~= nil then
323+
error("Attemt to redefine type of "..name.." to "..dump(redefinition.type), 2)
324+
end
325+
local item = minetest.registered_items[name]
326+
if not item then
327+
error("Attemt to override non-existent item "..name, 2)
328+
end
329+
for k, v in pairs(redefinition) do
330+
rawset(item, k, v)
331+
end
332+
register_item_raw(item)
333+
end
334+
335+
318336
function minetest.run_callbacks(callbacks, mode, ...)
319337
assert(type(callbacks) == "table")
320338
local cb_len = #callbacks

doc/lua_api.txt

+4
Original file line numberDiff line numberDiff line change
@@ -1189,6 +1189,10 @@ minetest.register_alias(name, convert_to)
11891189
minetest.register_craft(recipe)
11901190
minetest.register_ore(ore definition)
11911191
minetest.register_decoration(decoration definition)
1192+
minetest.override_item(name, redefinition)
1193+
^ Overrides fields of an item registered with register_node/tool/craftitem.
1194+
^ Note: Item must already be defined, (opt)depend on the mod defining it.
1195+
^ Example: minetest.override_item("default:mese", {light_source=LIGHT_MAX})
11921196

11931197
Global callback registration functions: (Call these only at load time)
11941198
minetest.register_globalstep(func(dtime))

0 commit comments

Comments
 (0)