mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Warn if metatable passed to itemdef registration function
This commit is contained in:
parent
4125ce877d
commit
2540667f04
3 changed files with 12 additions and 6 deletions
|
@ -32,8 +32,8 @@ do
|
||||||
all.registered_craftitems = {}
|
all.registered_craftitems = {}
|
||||||
all.registered_tools = {}
|
all.registered_tools = {}
|
||||||
for k, v in pairs(all.registered_items) do
|
for k, v in pairs(all.registered_items) do
|
||||||
-- Disable further modification
|
-- Ignore new keys
|
||||||
setmetatable(v, {__newindex = {}})
|
setmetatable(v, {__newindex = function() end})
|
||||||
-- Reassemble the other tables
|
-- Reassemble the other tables
|
||||||
if v.type == "node" then
|
if v.type == "node" then
|
||||||
getmetatable(v).__index = all.nodedef_default
|
getmetatable(v).__index = all.nodedef_default
|
||||||
|
|
|
@ -9,8 +9,8 @@ do
|
||||||
all.registered_craftitems = {}
|
all.registered_craftitems = {}
|
||||||
all.registered_tools = {}
|
all.registered_tools = {}
|
||||||
for k, v in pairs(all.registered_items) do
|
for k, v in pairs(all.registered_items) do
|
||||||
-- Disable further modification
|
-- Ignore new keys
|
||||||
setmetatable(v, {__newindex = {}})
|
setmetatable(v, {__newindex = function() end})
|
||||||
-- Reassemble the other tables
|
-- Reassemble the other tables
|
||||||
if v.type == "node" then
|
if v.type == "node" then
|
||||||
getmetatable(v).__index = all.nodedef_default
|
getmetatable(v).__index = all.nodedef_default
|
||||||
|
|
|
@ -139,6 +139,12 @@ function core.register_item(name, itemdef)
|
||||||
end
|
end
|
||||||
itemdef.name = name
|
itemdef.name = name
|
||||||
|
|
||||||
|
local mt = getmetatable(itemdef)
|
||||||
|
if mt ~= nil and next(mt) ~= nil then
|
||||||
|
core.log("warning", "Item definition has a metatable, this is "..
|
||||||
|
"unsupported and it will be overwritten: " .. name)
|
||||||
|
end
|
||||||
|
|
||||||
-- Apply defaults and add to registered_* table
|
-- Apply defaults and add to registered_* table
|
||||||
if itemdef.type == "node" then
|
if itemdef.type == "node" then
|
||||||
-- Use the nodebox as selection box if it's not set manually
|
-- Use the nodebox as selection box if it's not set manually
|
||||||
|
@ -194,8 +200,8 @@ function core.register_item(name, itemdef)
|
||||||
|
|
||||||
itemdef.mod_origin = core.get_current_modname() or "??"
|
itemdef.mod_origin = core.get_current_modname() or "??"
|
||||||
|
|
||||||
-- Disable all further modifications
|
-- Ignore new keys as a failsafe to prevent mistakes
|
||||||
getmetatable(itemdef).__newindex = {}
|
getmetatable(itemdef).__newindex = function() end
|
||||||
|
|
||||||
--core.log("Registering item: " .. itemdef.name)
|
--core.log("Registering item: " .. itemdef.name)
|
||||||
core.registered_items[itemdef.name] = itemdef
|
core.registered_items[itemdef.name] = itemdef
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue