From 3d7502f66645e785bc6f9a49deceaf74f5f2d008 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 10 Feb 2017 06:01:20 +0100 Subject: [PATCH] Automatically parse solid groups --- API.md | 2 ++ mods/mcl_autogroup/init.lua | 18 ++++++++++++++++++ mods/mcl_autogroup/mod.conf | 1 + 3 files changed, 21 insertions(+) create mode 100644 mods/mcl_autogroup/init.lua create mode 100644 mods/mcl_autogroup/mod.conf diff --git a/API.md b/API.md index 884941df7..e426a5b06 100644 --- a/API.md +++ b/API.md @@ -49,6 +49,8 @@ This section explains all the used groups in this subgame. ### Declarative groups These groups are used mostly for informational purposes +* `solid=1`: Solid block (automatically assigned) +* `not_solid=1`: Block is sold (only assign this group for nodes which are automatically detected as “solid” in error * `water=1`: Water * `lava=1`: Lava * `liquid`: Block is a liquid diff --git a/mods/mcl_autogroup/init.lua b/mods/mcl_autogroup/init.lua new file mode 100644 index 000000000..b0e9b8ad7 --- /dev/null +++ b/mods/mcl_autogroup/init.lua @@ -0,0 +1,18 @@ +-- Automatically assign the “solid” group for solid nodes +local overwrite = function() + for nname, ndef in pairs(minetest.registered_nodes) do + if (ndef.walkable == nil or ndef.walkable == true) + and (ndef.collision_box == nil or ndef.collision_box.type == "regular") + and (ndef.node_box == nil or ndef.node_box.type == "regular") + and (ndef.groups.falling_node == 0 or ndef.groups.falling_node == nil) + and (ndef.groups.not_solid == 0 or ndef.groups.not_solid == nil) then + local groups = table.copy(ndef.groups) + groups.solid = 1 + minetest.override_item(nname, { + groups = groups + }) + end + end +end + +overwrite() diff --git a/mods/mcl_autogroup/mod.conf b/mods/mcl_autogroup/mod.conf new file mode 100644 index 000000000..ec7796657 --- /dev/null +++ b/mods/mcl_autogroup/mod.conf @@ -0,0 +1 @@ +name = mcl_autogroup