From 4c3b8376abdc3349c0287061cc2d9b8fa86a440c Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Mon, 30 May 2016 12:03:55 -0700
Subject: [PATCH] cherry-pick from github.com/minetest/minetest_game> Stairs:
 Add mossy cobble slab and stair

---
 game_api.txt               |  2 +-
 mods/default/functions.lua | 10 +++++--
 mods/stairs/init.lua       | 57 +++++++++++++++++++++++---------------
 3 files changed, 43 insertions(+), 26 deletions(-)

diff --git a/game_api.txt b/game_api.txt
index 634b7f29..93cf0527 100644
--- a/game_api.txt
+++ b/game_api.txt
@@ -343,7 +343,7 @@ delivered with Minetest Game, to keep them compatible with other mods.
 
  * Registers a stair.
  * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
- * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble"
+ * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil`
  * `groups`: see [Known damage and digging time defining groups]
  * `images`: see [Tile definition]
  * `description`: used for the description field in the stair's definition
diff --git a/mods/default/functions.lua b/mods/default/functions.lua
index c3d03a47..fc7c624a 100644
--- a/mods/default/functions.lua
+++ b/mods/default/functions.lua
@@ -455,12 +455,18 @@ minetest.register_abm({
 --
 
 minetest.register_abm({
-	nodenames = {"default:cobble"},
+	nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"},
 	neighbors = {"group:water"},
 	interval = 16,
 	chance = 200,
 	catch_up = false,
 	action = function(pos, node)
-		minetest.set_node(pos, {name = "default:mossycobble"})
+		if node.name == "default:cobble" then
+			minetest.set_node(pos, {name = "default:mossycobble"})
+		elseif node.name == "stairs:slab_cobble" then
+			minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2})
+		elseif node.name == "stairs:stair_cobble" then
+			minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2})
+		end
 	end
 })
diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua
index 53a8088c..5d53b08d 100644
--- a/mods/stairs/init.lua
+++ b/mods/stairs/init.lua
@@ -90,24 +90,26 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
 		})
 	end
 
-	minetest.register_craft({
-		output = 'stairs:stair_' .. subname .. ' 6',
-		recipe = {
-			{recipeitem, "", ""},
-			{recipeitem, recipeitem, ""},
-			{recipeitem, recipeitem, recipeitem},
-		},
-	})
+	if recipeitem then
+		minetest.register_craft({
+			output = 'stairs:stair_' .. subname .. ' 6',
+			recipe = {
+				{recipeitem, "", ""},
+				{recipeitem, recipeitem, ""},
+				{recipeitem, recipeitem, recipeitem},
+			},
+		})
 
-	-- Flipped recipe for the silly minecrafters
-	minetest.register_craft({
-		output = 'stairs:stair_' .. subname .. ' 6',
-		recipe = {
-			{"", "", recipeitem},
-			{"", recipeitem, recipeitem},
-			{recipeitem, recipeitem, recipeitem},
-		},
-	})
+		-- Flipped recipe for the silly minecrafters
+		minetest.register_craft({
+			output = 'stairs:stair_' .. subname .. ' 6',
+			recipe = {
+				{"", "", recipeitem},
+				{"", recipeitem, recipeitem},
+				{recipeitem, recipeitem, recipeitem},
+			},
+		})
+	end
 end
 
 
@@ -221,12 +223,14 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
 		})
 	end
 
-	minetest.register_craft({
-		output = 'stairs:slab_' .. subname .. ' 6',
-		recipe = {
-			{recipeitem, recipeitem, recipeitem},
-		},
-	})
+	if recipeitem then
+		minetest.register_craft({
+			output = 'stairs:slab_' .. subname .. ' 6',
+			recipe = {
+				{recipeitem, recipeitem, recipeitem},
+			},
+		})
+	end
 end
 
 
@@ -313,6 +317,13 @@ stairs.register_stair_and_slab("cobble", "default:cobble",
 		"Cobblestone Slab",
 		default.node_sound_stone_defaults())
 
+stairs.register_stair_and_slab("mossycobble", nil,
+		{cracky = 3},
+		{"default_mossycobble.png"},
+		"Mossy Cobblestone Stair",
+		"Mossy Cobblestone Slab",
+		default.node_sound_stone_defaults())
+
 stairs.register_stair_and_slab("stonebrick", "default:stonebrick",
 		{cracky = 3},
 		{"default_stone_brick.png"},
-- 
GitLab