advtrains compat
This commit is contained in:
parent
226195a47e
commit
0637fcc5e1
@ -5,5 +5,10 @@ globals = {
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
"mapsync", "mtt", "blockexchange", "travelnet", "display_api"
|
||||
"mapsync",
|
||||
"mtt",
|
||||
"blockexchange",
|
||||
"travelnet",
|
||||
"display_api",
|
||||
"advtrains"
|
||||
}
|
||||
|
57
compat/advtrains.lua
Normal file
57
compat/advtrains.lua
Normal file
@ -0,0 +1,57 @@
|
||||
assert(type(advtrains.ndb.update) == "function")
|
||||
|
||||
local advtrains_nodeids = {}
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for nodename, nodedef in pairs(minetest.registered_nodes) do
|
||||
if nodedef.groups and nodedef.groups.save_in_at_nodedb then
|
||||
advtrains_nodeids[minetest.get_content_id(nodename)] = true
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- area-key -> table[pos]
|
||||
local removed_nodes = {}
|
||||
|
||||
local function get_area_key(pos1, pos2)
|
||||
return minetest.pos_to_string(pos1) .. "-" .. minetest.pos_to_string(pos2)
|
||||
end
|
||||
|
||||
-- register to be removed nodedb positions
|
||||
pick_and_place.register_on_before_remove(function(pos1, pos2, node_ids)
|
||||
if not advtrains_nodeids[node_ids] then
|
||||
-- nothing to do
|
||||
return
|
||||
end
|
||||
|
||||
local poslist = minetest.find_nodes_in_area(pos1, pos2, {"group:save_in_at_nodedb"})
|
||||
local areakey = get_area_key(pos1, pos2)
|
||||
removed_nodes[areakey] = poslist
|
||||
end)
|
||||
|
||||
-- update removed nodedb positions
|
||||
pick_and_place.register_on_remove(function(pos1, pos2)
|
||||
local areakey = get_area_key(pos1, pos2)
|
||||
local poslist = removed_nodes[areakey]
|
||||
if not poslist then
|
||||
return
|
||||
end
|
||||
removed_nodes[areakey] = nil
|
||||
|
||||
for _, pos in ipairs(poslist) do
|
||||
advtrains.ndb.update(pos)
|
||||
end
|
||||
end)
|
||||
|
||||
-- update all nodedb positions
|
||||
pick_and_place.register_on_place(function(pos1, pos2, node_ids)
|
||||
if not advtrains_nodeids[node_ids] then
|
||||
-- nothing to do
|
||||
return
|
||||
end
|
||||
|
||||
local poslist = minetest.find_nodes_in_area(pos1, pos2, {"group:save_in_at_nodedb"})
|
||||
for _, pos in ipairs(poslist) do
|
||||
advtrains.ndb.update(pos)
|
||||
end
|
||||
end)
|
4
init.lua
4
init.lua
@ -36,6 +36,10 @@ if minetest.get_modpath("display_api") then
|
||||
dofile(MP.."/compat/display_api.lua")
|
||||
end
|
||||
|
||||
if minetest.get_modpath("advtrains") then
|
||||
dofile(MP.."/compat/advtrains.lua")
|
||||
end
|
||||
|
||||
if minetest.get_modpath("mtt") and mtt.enabled then
|
||||
dofile(MP .. "/configure.spec.lua")
|
||||
dofile(MP .. "/create_tool.spec.lua")
|
||||
|
Loading…
x
Reference in New Issue
Block a user