mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2025-01-09 16:49:35 +01:00
75 lines
1.8 KiB
Lua
75 lines
1.8 KiB
Lua
local mod = {}
|
|
vl_legacy = mod
|
|
|
|
function mod.deprecated(description, func)
|
|
return function(...)
|
|
minetest.log("warning",description .. debug.traceback())
|
|
return func(...)
|
|
end
|
|
end
|
|
|
|
local item_conversions = {}
|
|
mod.registered_item_conversions = item_conversions
|
|
|
|
function mod.register_item_conversion(old, new, func)
|
|
item_conversions[old] = {new, func}
|
|
end
|
|
function mod.convert_inventory_lists(lists)
|
|
for _,list in pairs(lists) do
|
|
for i = 1,#list do
|
|
local itemstack = list[i]
|
|
local conversion = itemstack and item_conversions[itemstack:get_name()]
|
|
if conversion then
|
|
local new_name,func = conversion[1],conversion[2]
|
|
if func then
|
|
func(itemstack)
|
|
else
|
|
itemstack:set_name(new_name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function mod.convert_inventory(inv)
|
|
local lists = inv:get_lists()
|
|
mod.convert_inventory_lists(lists)
|
|
inv:set_lists(lists)
|
|
end
|
|
function mod.convert_node(pos, node)
|
|
local node = node or minetest.get_node(pos)
|
|
local node_def = minetest.registered_nodes[node.name]
|
|
local convert = node_def._vl_legacy_convert_node
|
|
if type(convert) == "function" then
|
|
convert(pos, node)
|
|
elseif type(convert) == "string" then
|
|
node.name = convert
|
|
minetest.swap_node(pos, node)
|
|
end
|
|
end
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
mod.convert_inventory(player:get_inventory())
|
|
end)
|
|
|
|
minetest.register_lbm({
|
|
name = "vl_legacy:convert_container_inventories",
|
|
nodenames = "group:container",
|
|
run_at_every_load = true,
|
|
action = function(pos, node)
|
|
local meta = minetest.get_meta(pos)
|
|
mod.convert_inventory(meta:get_inventory())
|
|
end
|
|
})
|
|
minetest.register_lbm({
|
|
name = "vl_legacy:convert_nodes",
|
|
nodenames = "group:legacy",
|
|
run_at_every_load = true,
|
|
action = mod.convert_node,
|
|
})
|
|
minetest.register_abm({
|
|
label = "Convert Legacy Nodes",
|
|
nodenames = "group:legacy",
|
|
interval = 5,
|
|
chance = 1,
|
|
action = mod.convert_node,
|
|
})
|