From 2199be51087d0d9661d1b3f80c0bb2a55410458b Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 30 May 2016 12:03:55 -0700 Subject: [PATCH] Stairs: Add mossy cobble slab and stair Allow water to turn cobble slab and stairs to turn into mossy versions. There is no crafting recipe for mossy stairs and mossy slabs, the stair/slab API has been modified to allow for a recipeitem that is `nil`, which will omit adding a crafting recipe for these two items. The API documentation is updated. The slabs and stairs will turn mossy when water is adjacent, just like cobblestone. You can either farm mossy versions by placing them in water for a while, then collecting them, or run water over your craft. --- 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 7e594b31..f3bb97cd 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -466,12 +466,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 7c28fa4f..2195e4d4 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -87,24 +87,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 @@ -218,12 +220,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 @@ -310,6 +314,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"},