Remove spores from mushrooms.
authorAuke Kok <sofar@foo-projects.org>
Tue, 15 Dec 2015 07:53:27 +0000 (23:53 -0800)
committerparamat <mat.gregory@virginmedia.com>
Fri, 25 Dec 2015 15:37:40 +0000 (15:37 +0000)
These have almost no value gameplay wise. Mushrooms spread
by their very nature into appropriate soil nearby, and
harvesting spores is something only scientists do. Actual
mushroom farmers leave a few mushrooms and put on more
manure, and keep the light off.

Modify the growth ABM to test for light levels and attempt
to plant a similar mushroom nearby (+/- 2 x,z, +/- y). Light
at both source and destination needs to be low enough. I've
tuned it to be 3-4 spaces from a torch.

Mushrooms will die in full sunlight, but they can survive under
trees and may grow out at night anywhere.

Removed obsolete textures.

Remove unused nodes and provide aliases for them.

Aliased obsolete nodes so no unknown item nodes appear.

Mushrooms die only in full sunlight (light level 15).

mods/flowers/init.lua
mods/flowers/textures/flowers_mushroom_spores_brown.png [deleted file]
mods/flowers/textures/flowers_mushroom_spores_red.png [deleted file]

index e8899efd589ae35595f07956a96ed45b4db75453..dd8e031d03c5f6b716ee4cb490249f3fe1ecde00 100644 (file)
@@ -124,120 +124,84 @@ minetest.register_abm({
 -- Mushrooms
 --
 
-local mushrooms_datas = {
-       {"brown", 2},
-       {"red", -6}
-}
-
-for _, m in pairs(mushrooms_datas) do
-       local name, nut = m[1], m[2]
-
-       -- Register fertile mushrooms
-
-       -- These are placed by mapgen and the growing ABM.
-       -- These drop an infertile mushroom, and 0 to 3 spore
-       -- nodes with an average of 1.25 per mushroom, for
-       -- a slow multiplication of mushrooms when farming.
-
-       minetest.register_node("flowers:mushroom_fertile_" .. name, {
-               description = string.sub(string.upper(name), 0, 1) ..
-                       string.sub(name, 2) .. " Fertile Mushroom",
-               tiles = {"flowers_mushroom_" .. name .. ".png"},
-               inventory_image = "flowers_mushroom_" .. name .. ".png",
-               wield_image = "flowers_mushroom_" .. name .. ".png",
-               drawtype = "plantlike",
-               paramtype = "light",
-               sunlight_propagates = true,
-               walkable = false,
-               buildable_to = true,
-               groups = {snappy = 3, flammable = 3, attached_node = 1,
-                       not_in_creative_inventory = 1},
-               drop = {
-                       items = {
-                               {items = {"flowers:mushroom_" .. name}},
-                               {items = {"flowers:mushroom_spores_" .. name}, rarity = 4},
-                               {items = {"flowers:mushroom_spores_" .. name}, rarity = 2},
-                               {items = {"flowers:mushroom_spores_" .. name}, rarity = 2}
-                       }
-               },
-               sounds = default.node_sound_leaves_defaults(),
-               on_use = minetest.item_eat(nut),
-               selection_box = {
-                       type = "fixed",
-                       fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
-               }
-       })
-
-       -- Register infertile mushrooms
-
-       -- These do not drop spores, to avoid the use of repeated digging
-       -- and placing of a single mushroom to generate unlimited spores.
-
-       minetest.register_node("flowers:mushroom_" .. name, {
-               description = string.sub(string.upper(name), 0, 1) ..
-                       string.sub(name, 2) .. " Mushroom",
-               tiles = {"flowers_mushroom_" .. name .. ".png"},
-               inventory_image = "flowers_mushroom_" .. name .. ".png",
-               wield_image = "flowers_mushroom_" .. name .. ".png",
-               drawtype = "plantlike",
-               paramtype = "light",
-               sunlight_propagates = true,
-               walkable = false,
-               buildable_to = true,
-               groups = {snappy = 3, flammable = 3, attached_node = 1},
-               sounds = default.node_sound_leaves_defaults(),
-               on_use = minetest.item_eat(nut),
-               selection_box = {
-                       type = "fixed",
-                       fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
-               }
-       })
-
-       -- Register mushroom spores
-
-       minetest.register_node("flowers:mushroom_spores_" .. name, {
-               description = string.sub(string.upper(name), 0, 1) ..
-                       string.sub(name, 2) .. " Mushroom Spores",
-               drawtype = "signlike",
-               tiles = {"flowers_mushroom_spores_" .. name .. ".png"},
-               inventory_image = "flowers_mushroom_spores_" .. name .. ".png",
-               wield_image = "flowers_mushroom_spores_" .. name .. ".png",
-               paramtype = "light",
-               paramtype2 = "wallmounted",
-               sunlight_propagates = true,
-               walkable = false,
-               buildable_to = true,
-               selection_box = {
-                       type = "wallmounted",
-               },
-               groups = {dig_immediate = 3, attached_node = 1},
-       })
-end
-
+minetest.register_node("flowers:mushroom_red", {
+       description = "Red Mushroom",
+       tiles = {"flowers_mushroom_red.png"},
+       inventory_image = "flowers_mushroom_red.png",
+       wield_image = "flowers_mushroom_red.png",
+       drawtype = "plantlike",
+       paramtype = "light",
+       sunlight_propagates = true,
+       walkable = false,
+       buildable_to = true,
+       groups = {snappy = 3, flammable = 3, attached_node = 1},
+       sounds = default.node_sound_leaves_defaults(),
+       on_use = minetest.item_eat(-5),
+       selection_box = {
+               type = "fixed",
+               fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+       }
+})
 
--- Register growing ABM
+minetest.register_node("flowers:mushroom_brown", {
+       description = "Brown Mushroom",
+       tiles = {"flowers_mushroom_brown.png"},
+       inventory_image = "flowers_mushroom_brown.png",
+       wield_image = "flowers_mushroom_brown.png",
+       drawtype = "plantlike",
+       paramtype = "light",
+       sunlight_propagates = true,
+       walkable = false,
+       buildable_to = true,
+       groups = {snappy = 3, flammable = 3, attached_node = 1},
+       sounds = default.node_sound_leaves_defaults(),
+       on_use = minetest.item_eat(1),
+       selection_box = {
+               type = "fixed",
+               fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+       }
+})
 
+-- mushroom spread and death
 minetest.register_abm({
-       nodenames = {"flowers:mushroom_spores_brown", "flowers:mushroom_spores_red"},
+       nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"},
        interval = 11,
        chance = 50,
        action = function(pos, node)
-               local node_under = minetest.get_node_or_nil({x = pos.x,
-                       y = pos.y - 1, z = pos.z})
+               if minetest.get_node_light(pos, nil) == 15 then
+                       minetest.remove_node(pos)
+               end
+               local random = {
+                       x = pos.x + math.random(-2,2),
+                       y = pos.y + math.random(-1,1),
+                       z = pos.z + math.random(-2,2)
+               }
+               local random_node = minetest.get_node_or_nil(random)
+               if not random_node then
+                       return
+               end
+               if random_node.name ~= "air" then
+                       return
+               end
+               local node_under = minetest.get_node_or_nil({x = random.x,
+                       y = random.y - 1, z = random.z})
                if not node_under then
                        return
                end
                if minetest.get_item_group(node_under.name, "soil") ~= 0 and
-                               minetest.get_node_light(pos, nil) <= 13 then
-                       if node.name == "flowers:mushroom_spores_brown" then
-                               minetest.set_node(pos, {name = "flowers:mushroom_fertile_brown"})
-                       elseif node.name == "flowers:mushroom_spores_red" then
-                               minetest.set_node(pos, {name = "flowers:mushroom_fertile_red"})
-                       end
+                               minetest.get_node_light(pos, nil) <= 9 and
+                               minetest.get_node_light(random, nil) <= 9 then
+                       minetest.set_node(random, {name = node.name})
                end
        end
 })
 
+-- these old mushroom related nodes can be simplified now
+minetest.register_alias("flowers:mushroom_spores_brown", "flowers:mushroom_brown")
+minetest.register_alias("flowers:mushroom_spores_red", "flowers:mushroom_red")
+minetest.register_alias("flowers:mushroom_fertile_brown", "flowers:mushroom_brown")
+minetest.register_alias("flowers:mushroom_fertile_red", "flowers:mushroom_red")
+
 
 --
 -- Waterlily
diff --git a/mods/flowers/textures/flowers_mushroom_spores_brown.png b/mods/flowers/textures/flowers_mushroom_spores_brown.png
deleted file mode 100644 (file)
index a0818d2..0000000
Binary files a/mods/flowers/textures/flowers_mushroom_spores_brown.png and /dev/null differ
diff --git a/mods/flowers/textures/flowers_mushroom_spores_red.png b/mods/flowers/textures/flowers_mushroom_spores_red.png
deleted file mode 100644 (file)
index 1f1d3a4..0000000
Binary files a/mods/flowers/textures/flowers_mushroom_spores_red.png and /dev/null differ