From 3f57f80d54fa9b2521a922adfb9e24e936fceb04 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 14 May 2017 22:44:34 +0200 Subject: [PATCH] =?UTF-8?q?Grass=20Path+Farmland=E2=86=92Dirt=20if=20below?= =?UTF-8?q?=20solid,=20instantly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GROUPS.md | 1 + mods/ITEMS/mcl_core/functions.lua | 21 ++++++++------------- mods/ITEMS/mcl_core/nodes.lua | 2 +- mods/ITEMS/mcl_farming/soil.lua | 5 +++-- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/GROUPS.md b/GROUPS.md index dcfdbd0f1..7787ff498 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -35,6 +35,7 @@ Please read to learn how digging times * `cultivatable=1`: Block will be turned into Dirt by using a hoe on it * `flammable`: Block helps spreading fire and gets destroyed by nearby fire (rating doesn't matter) * `spreading_dirt_type=1`: A dirt-type block with a cover (e.g. grass) which may spread to neighbor dirt blocks +* `dirtifies_below_solid=1`: This node turns into dirt immediately when a solid node is placed on top * `non_mycelium_plant=1`: A plant which can't grow on mycelium. Placing it on mycelium fails and if mycelium spreads below it, it uproots * `soil=1`: Saplings and other small plants can grow on it * `soil_sapling=2`: Soil for saplings. Intended to be natural soil. All saplings will grow on this diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 6b4796295..29b70e096 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -445,21 +445,16 @@ minetest.register_abm({ end }) -minetest.register_abm({ - label = "Turn Grass Path below solid block into Dirt", - nodenames = {"mcl_core:grass_path"}, - neighbors = {"group:solid"}, - interval = 8, - chance = 50, - action = function(pos, node) - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local name = minetest.get_node(above).name - local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef and (nodedef.groups and nodedef.groups.solid) then - minetest.set_node(pos, {name = "mcl_core:dirt"}) +-- Turn Grass Path and similar nodes to Dirt if a solid node is placed above it +minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) + if minetest.get_item_group(newnode.name, "solid") ~= 0 then + local below = {x=pos.x, y=pos.y-1, z=pos.z} + local belownode = minetest.get_node(below) + if minetest.get_item_group(belownode.name, "dirtifies_below_solid") == 1 then + minetest.set_node(below, {name="mcl_core:dirt"}) end end -}) +end) -------------------------- -- Try generate tree --- diff --git a/mods/ITEMS/mcl_core/nodes.lua b/mods/ITEMS/mcl_core/nodes.lua index 2aa5079c7..03bdd886e 100644 --- a/mods/ITEMS/mcl_core/nodes.lua +++ b/mods/ITEMS/mcl_core/nodes.lua @@ -407,7 +407,7 @@ minetest.register_node("mcl_core:grass_path", { {-0.5, -0.5, -0.5, 0.5, 0.4375, 0.5}, } }, - groups = {handy=1,shovely=1, cultivatable=2, not_in_creative_inventory=1, }, + groups = {handy=1,shovely=1, cultivatable=2, dirtifies_below_solid=1, not_in_creative_inventory=1, }, sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index edb1db7be..15a78b996 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -16,7 +16,7 @@ minetest.register_node("mcl_farming:soil", { local meta = minetest.get_meta(pos) meta:set_int("wet", 0) end, - groups = {handy=1,shovely=1, not_in_creative_inventory=1, soil=2, soil_sapling=1 }, + groups = {handy=1,shovely=1, not_in_creative_inventory=1, dirtifies_below_solid=1, soil=2, soil_sapling=1 }, sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 0.6, @@ -39,7 +39,7 @@ minetest.register_node("mcl_farming:soil_wet", { local meta = minetest.get_meta(pos) meta:set_int("wet", 7) end, - groups = {handy=1,shovely=1, not_in_creative_inventory=1, soil=3, soil_sapling=1 }, + groups = {handy=1,shovely=1, not_in_creative_inventory=1, dirtifies_below_solid=1, soil=3, soil_sapling=1 }, sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 0.6, @@ -120,3 +120,4 @@ minetest.register_abm({ end end, }) +