From 67ddad987d6508d87dacc4149896ee12abb5c5e3 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Mon, 6 Mar 2023 17:45:38 +0000 Subject: [PATCH] Fix grass not growing issue --- mods/ITEMS/mcl_core/functions.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index ac03c1113..b7623bf11 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -803,8 +803,10 @@ end local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) -- Return appropriate grass block node for pos -function mcl_core.get_grass_block_type(pos) - return {name = minetest.get_node(pos).name, param2 = mcl_util.get_palette_indexes_from_pos(pos).grass_palette_index} +function mcl_core.get_grass_block_type(pos, requested_grass_block_name) + local grass_palette_index = mcl_util.get_palette_indexes_from_pos(pos).grass_palette_index + local grass_block_name = requested_grass_block_name or minetest.get_node(pos).name + return {name = grass_block_name, param2 = grass_palette_index} end -- Return appropriate foliage block node for pos @@ -828,17 +830,18 @@ minetest.register_abm({ chance = 20, catch_up = false, action = function(pos) - if pos == nil then - return - end + if pos == nil then return end + local above = {x=pos.x, y=pos.y+1, z=pos.z} local abovenode = minetest.get_node(above) if minetest.get_item_group(abovenode.name, "liquid") ~= 0 or minetest.get_item_group(abovenode.name, "opaque") == 1 then -- Never grow directly below liquids or opaque blocks return end + local light_self = minetest.get_node_light(above) if not light_self then return end + --[[ Try to find a spreading dirt-type block (e.g. grass block or mycelium) within a 3×5×3 area, with the source block being on the 2nd-topmost layer. ]] local nodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+3, z=pos.z+1}, "group:spreading_dirt_type") @@ -857,9 +860,10 @@ minetest.register_abm({ if light_self >= 4 and light_source >= 9 then -- All checks passed! Let's spread the grass/mycelium! + local n2 = minetest.get_node(p2) if minetest.get_item_group(n2.name, "grass_block") ~= 0 then - n2 = mcl_core.get_grass_block_type(pos) + n2 = mcl_core.get_grass_block_type(pos, "mcl_core:dirt_with_grass") end minetest.set_node(pos, {name=n2.name})