From 6d6a085aa17d403f585b194d1488a5daab2853cb Mon Sep 17 00:00:00 2001
From: Peter Nerlich <peter.nerlich+dev@googlemail.com>
Date: Mon, 16 Nov 2020 14:42:36 +0100
Subject: [PATCH] add moreblocks variants to be ignored by trains (only the
 sensible ones)

---
 depends.txt |  1 +
 init.lua    | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/depends.txt b/depends.txt
index 47379c3..ba37940 100644
--- a/depends.txt
+++ b/depends.txt
@@ -3,3 +3,4 @@ digilines
 xpanes
 basic_materials
 mesecons_luacontroller
+moreblocks
diff --git a/init.lua b/init.lua
index fa4f1a1..e6fec17 100644
--- a/init.lua
+++ b/init.lua
@@ -45,6 +45,44 @@ local additional_nonblocknodes={
     "mesecons_pressureplates:pressure_plate_stone",
 }
 minetest.after(0, function()
+    local mods = {"moreblocks", "bakedclay", "building_blocks", "my_door_wood", "my_sliding_doors"}
+    local variants = {
+        micro_ = nil,
+        slope = nil,
+        slab_ = {"_1", "_2", "_quarter", "_two_sides", "_three_sides"},
+        stair_ = {"_alt", "_alt_1", "_alt_2", "_alt_4", "_outer"},
+        panel_ = {"_1", "_2", "_4"},
+    }
+    local to_add = {}
+    for i, mod in ipairs(mods) do
+        for variant, data in pairs(variants) do
+            if to_add[mod] == nil then
+                to_add[mod] = {}
+            end
+            to_add[mod][variant] = data
+        end
+    end
+    for name, def in pairs(minetest.registered_nodes) do
+        for mod, variants in pairs(to_add) do
+            if string.sub(name, 1, #mod+1) == mod .. ":" then
+                for variant, endings in pairs(variants) do
+                    local prefix = mod .. ":" .. variant
+                    if string.sub(name, 1, #prefix) == prefix then
+                        if endings then
+                            for _, ending in ipairs(endings) do
+                                if string.sub(name, #name - #ending + 1, #name) == ending then
+                                    table.insert(additional_nonblocknodes, name)
+                                end
+                            end
+                        else
+                            table.insert(additional_nonblocknodes, name)
+                        end
+                    end
+                end
+            end
+        end
+    end
+
     for _,name in ipairs(additional_nonblocknodes) do
         if minetest.registered_nodes[name] then
             minetest.registered_nodes[name].groups.not_blocking_trains=1
-- 
GitLab