From 5fc6cc7f5b7125e470e0e24e4da639f868476dc3 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Wed, 22 Nov 2017 23:13:42 +0100 Subject: Fix multiple track types not working simultaneously Bug was caused by the drives_on table of every train and advtrains.all_tracktypes sharing the same reference, which caused advtrains.all_tracktypes to become the intersection of all train drives_on's in the world. However, this did become empty, causing nothing to work anymore. --- advtrains/tracks.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'advtrains/tracks.lua') diff --git a/advtrains/tracks.lua b/advtrains/tracks.lua index bfa95fe..1cbbc0b 100644 --- a/advtrains/tracks.lua +++ b/advtrains/tracks.lua @@ -408,11 +408,19 @@ end function advtrains.is_track_and_drives_on(nodename, drives_on_p) + local drives_on = drives_on_p + if not drives_on then drives_on = advtrains.all_tracktypes end + local hasentry = false + for _,_ in pairs(drives_on) do + hasentry=true + end + if not hasentry then drives_on = advtrains.all_tracktypes end + if not minetest.registered_nodes[nodename] then return false end local nodedef=minetest.registered_nodes[nodename] - for k,v in pairs(drives_on_p) do + for k,v in pairs(drives_on) do if nodedef.groups["advtrains_track_"..k] then return true end -- cgit v1.2.3