local function check_modname_prefix(name)
if name:sub(1,1) == ":" then
- -- Escape the modname prefix enforcement mechanism
+ -- If the name starts with a colon, we can skip the modname prefix
+ -- mechanism.
return name:sub(2)
else
- -- Modname prefix enforcement
+ -- Enforce that the name starts with the correct mod name.
local expected_prefix = core.get_current_modname() .. ":"
if name:sub(1, #expected_prefix) ~= expected_prefix then
error("Name " .. name .. " does not follow naming conventions: " ..
- "\"modname:\" or \":\" prefix required")
+ "\"" .. expected_prefix .. "\" or \":\" prefix required")
end
+
+ -- Enforce that the name only contains letters, numbers and underscores.
local subname = name:sub(#expected_prefix+1)
- if subname:find("[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]") then
+ if subname:find("[^%w_]") then
error("Name " .. name .. " does not follow naming conventions: " ..
"contains unallowed characters")
end
+
return name
end
end
error("Unable to register alias: Name is forbidden: " .. name)
end
if core.registered_items[name] ~= nil then
- core.log("WARNING: Not registering alias, item with same name" ..
+ core.log("warning", "Not registering alias, item with same name" ..
" is already defined: " .. name .. " -> " .. convert_to)
else
--core.log("Registering alias: " .. name .. " -> " .. convert_to)
description = "Unknown Item",
inventory_image = "unknown_item.png",
on_place = core.item_place,
+ on_secondary_use = core.item_secondary_use,
on_drop = core.item_drop,
groups = {not_in_creative_inventory=1},
diggable = true,
pointable = false,
diggable = false,
buildable_to = true,
+ floodable = true,
air_equivalent = true,
drop = "",
groups = {not_in_creative_inventory=1},