mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-15 09:25:37 +02:00
Warn if metatable passed to itemdef registration function
This commit is contained in:
@@ -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
|
||||||
|
Reference in New Issue
Block a user