Use the group "soil" for nodes that saplings grow on
authorShadowNinja <noreply@gmail.com>
Sun, 14 Apr 2013 07:01:27 +0000 (03:01 -0400)
committerPilzAdam <pilzadam@minetest.net>
Mon, 20 May 2013 11:43:13 +0000 (13:43 +0200)
doc/lua_api.txt
games/minimal/mods/default/init.lua
src/content_abm.cpp

index b7be5020653fa2ad286637b4a4405396265125c4..e2abcbfe79d747f5840613ff8d53b9e14cabf9e7 100644 (file)
@@ -510,7 +510,7 @@ Usage:
 - Groups are stored in a table, having the group names with keys and the
   group ratings as values. For example:
     groups = {crumbly=3, soil=1}
-    ^ Default dirt (soil group actually currently not defined; TODO)
+    ^ Default dirt
     groups = {crumbly=2, soil=1, level=2, outerspace=1}
     ^ A more special dirt-kind of thing
 - Groups always have a rating associated with them. If there is no
@@ -583,6 +583,7 @@ Special groups
 - attached_node: if the node under it is not a walkable block the node will be
                   dropped as an item. If the node is wallmounted the
                   wallmounted direction is checked.
+- soil: saplings will grow on nodes in this group
 
 Known damage and digging time defining groups
 ----------------------------------------------
index d8067d211b237b97b90fd15e773e56aa99cac151..b375cda1e66df4c7d599be9cb41eb354764d30e4 100644 (file)
@@ -741,7 +741,7 @@ minetest.register_node("default:dirt_with_grass", {
        description = "Dirt with grass",
        tiles ={"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
        is_ground_content = true,
-       groups = {crumbly=3},
+       groups = {crumbly=3, soil=1},
        drop = 'default:dirt',
        sounds = default.node_sound_dirt_defaults({
                footstep = {name="default_grass_footstep", gain=0.4},
@@ -752,7 +752,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", {
        description = "Dirt with grass and footsteps",
        tiles ={"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
        is_ground_content = true,
-       groups = {crumbly=3},
+       groups = {crumbly=3, soil=1},
        drop = 'default:dirt',
        sounds = default.node_sound_dirt_defaults({
                footstep = {name="default_grass_footstep", gain=0.4},
@@ -763,7 +763,7 @@ minetest.register_node("default:dirt", {
        description = "Dirt",
        tiles ={"default_dirt.png"},
        is_ground_content = true,
-       groups = {crumbly=3},
+       groups = {crumbly=3, soil=1},
        sounds = default.node_sound_dirt_defaults(),
 })
 
index e20201dcf7aa2aa1ea5ccd71724327dc46e4ac85..f19caf74eddd410fd76d107fa64c19e00922e46b 100644 (file)
@@ -99,14 +99,10 @@ class MakeTreesFromSaplingsABM : public ActiveBlockModifier
 {
 private:
        content_t c_junglesapling;
-       content_t c_dirt;
-       content_t c_dirt_with_grass;
        
 public:
        MakeTreesFromSaplingsABM(ServerEnvironment *env, INodeDefManager *nodemgr) {
-               c_junglesapling   = nodemgr->getId("junglesapling");
-               c_dirt            = nodemgr->getId("mapgen_dirt");
-               c_dirt_with_grass = nodemgr->getId("mapgen_dirt_with_grass");
+               c_junglesapling = nodemgr->getId("junglesapling");
        }
 
        virtual std::set<std::string> getTriggerContents()
@@ -127,8 +123,7 @@ public:
                ServerMap *map = &env->getServerMap();
                
                MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0));
-               if (n_below.getContent() != c_dirt &&
-                       n_below.getContent() != c_dirt_with_grass)
+               if (!((ItemGroupList) ndef->get(n_below).groups)["soil"])
                        return;
                        
                bool is_jungle_tree = n.getContent() == c_junglesapling;