mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Warn on core.override_item() after server startup
This commit is contained in:
parent
2540667f04
commit
ca047c3e58
1 changed files with 9 additions and 0 deletions
|
@ -412,6 +412,7 @@ core.register_item(":", {
|
||||||
groups = {not_in_creative_inventory=1},
|
groups = {not_in_creative_inventory=1},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local itemdefs_finalized = false
|
||||||
|
|
||||||
function core.override_item(name, redefinition, del_fields)
|
function core.override_item(name, redefinition, del_fields)
|
||||||
if redefinition.name ~= nil then
|
if redefinition.name ~= nil then
|
||||||
|
@ -424,10 +425,16 @@ function core.override_item(name, redefinition, del_fields)
|
||||||
if not item then
|
if not item then
|
||||||
error("Attempt to override non-existent item "..name, 2)
|
error("Attempt to override non-existent item "..name, 2)
|
||||||
end
|
end
|
||||||
|
if itemdefs_finalized then
|
||||||
|
-- TODO: it's not clear if this needs to be allowed at all?
|
||||||
|
core.log("warning", "Overriding item " .. name .. " after server startup. " ..
|
||||||
|
"This is unsupported and can cause problems related to data inconsistency.")
|
||||||
|
end
|
||||||
for k, v in pairs(redefinition) do
|
for k, v in pairs(redefinition) do
|
||||||
rawset(item, k, v)
|
rawset(item, k, v)
|
||||||
end
|
end
|
||||||
for _, field in ipairs(del_fields or {}) do
|
for _, field in ipairs(del_fields or {}) do
|
||||||
|
assert(field ~= "name" and field ~= "type")
|
||||||
rawset(item, field, nil)
|
rawset(item, field, nil)
|
||||||
end
|
end
|
||||||
register_item_raw(item)
|
register_item_raw(item)
|
||||||
|
@ -576,6 +583,8 @@ core.registered_on_mapblocks_changed, core.register_on_mapblocks_changed = make_
|
||||||
|
|
||||||
core.register_on_mods_loaded(function()
|
core.register_on_mods_loaded(function()
|
||||||
core.after(0, function()
|
core.after(0, function()
|
||||||
|
itemdefs_finalized = true
|
||||||
|
|
||||||
setmetatable(core.registered_on_mapblocks_changed, {
|
setmetatable(core.registered_on_mapblocks_changed, {
|
||||||
__newindex = function()
|
__newindex = function()
|
||||||
error("on_mapblocks_changed callbacks must be registered at load time")
|
error("on_mapblocks_changed callbacks must be registered at load time")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue