From 7810a7ed826363a0ab61ffc2bd2af6ba33bcc6d1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 4 Sep 2019 14:18:57 +0200 Subject: [PATCH] Turn grass to dirt below slabs and stairs --- mods/default/functions.lua | 6 ++++-- mods/default/nodes.lua | 2 +- mods/partialblocks/init.lua | 8 +++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 2fab400..21800df 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -246,8 +246,9 @@ minetest.register_abm( -- dirt and grass footsteps becomes dirt with grass if un action = function(pos, node) local above = {x=pos.x, y=pos.y+1, z=pos.z} local name = minetest.get_node(above).name + local partialblock = minetest.get_item_group(name, "slab") ~= 0 or minetest.get_item_group(name, "stair") ~= 0 local nodedef = minetest.registered_nodes[name] - if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none" and (minetest.get_node_light(above) or 0) >= 8 then + if nodedef and (not partialblock) and (nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none" and (minetest.get_node_light(above) or 0) >= 8 then minetest.set_node(pos, {name = "default:dirt_with_grass"}) end end @@ -262,8 +263,9 @@ minetest.register_abm( -- dirt with grass becomes dirt if covered action = function(pos, node) local above = {x=pos.x, y=pos.y+1, z=pos.z} local name = minetest.get_node(above).name + local partialblock = minetest.get_item_group(name, "slab") ~= 0 or minetest.get_item_group(name, "stair") ~= 0 local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then + if name ~= "ignore" and nodedef and (partialblock) or (not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none")) then minetest.set_node(pos, {name = "default:dirt"}) end end diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 787ac1d..dfc507a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -325,7 +325,7 @@ minetest.register_node( fixed = {-0.5, -0.5, -0.5, 0.5, -2/16, 0.5} }, tiles = {"default_dirt.png"}, - groups = {crumbly = 3, fall_damage_add_percent = -10}, + groups = {crumbly = 3, slab = 2, fall_damage_add_percent = -10}, is_ground_content = false, sounds = default.node_sound_dirt_defaults(), }) diff --git a/mods/partialblocks/init.lua b/mods/partialblocks/init.lua index ccdfcc4..e75c062 100644 --- a/mods/partialblocks/init.lua +++ b/mods/partialblocks/init.lua @@ -24,8 +24,11 @@ function partialblocks.register_material(name, desc_slab, desc_stair, node, grou tiles = nodedef.tiles end if not groups then - groups = nodedef.groups + groups = table.copy(nodedef.groups) + else + groups = {} end + groups.slab = 1 minetest.register_node( "partialblocks:slab_" .. name, @@ -85,6 +88,9 @@ function partialblocks.register_material(name, desc_slab, desc_stair, node, grou tiles = nodedef.tiles end + groups.slab = nil + groups.stair = 1 + minetest.register_node( "partialblocks:stair_" .. name, {