street_signs/compat_convert.lua

42 lines
1.6 KiB
Lua

-- Convert old road/streets modpack signs to street_signs versions
local S = street_signs.gettext
if minetest.get_modpath("infrastructure") then
local signs_equiv = {
["infrastructure:road_sign_stop"] = "street_signs:sign_stop",
["infrastructure:road_sign_stop_on_post"] = "street_signs:sign_stop_onpole",
["infrastructure:road_sign_yield"] = "street_signs:sign_yield",
["infrastructure:road_sign_yield_on_post"] = "street_signs:sign_yield_onpole",
["infrastructure:road_sign_crosswalk"] = "street_signs:sign_pedestrian_crossing",
["infrastructure:road_sign_crosswalk_on_post"] = "street_signs:sign_pedestrian_crossing_onpole",
}
local old_signs = {}
for old, new in pairs(signs_equiv) do
minetest.unregister_item(old)
if not string.find(old, "on_post") then
minetest.clear_craft({output = old})
end
old_signs[#old_signs+1] = old
end
minetest.register_alias_force("infrastructure:road_sign_retroreflective_surface", "air")
minetest.register_alias_force("infrastructure:crosswalk_safety_sign_bottom", "street_signs:sign_stop_for_ped")
minetest.register_alias_force("infrastructure:crosswalk_safety_sign_top", "air")
minetest.register_lbm({
nodenames = old_signs,
name = "street_signs:convert_signs",
label = "Convert roads/streets modpack signs",
run_at_every_load = true,
action = function(pos, node)
local newname = signs_equiv[node.name]
local dir = minetest.facedir_to_dir(node.param2)
if not dir then return end
minetest.set_node(pos, {name = newname, param2 = minetest.dir_to_wallmounted(dir)})
end
})
end