Stairs: Add straw and metal blocks
authorparamat <mat.gregory@virginmedia.com>
Fri, 14 Aug 2015 02:00:32 +0000 (03:00 +0100)
committerparamat <mat.gregory@virginmedia.com>
Fri, 14 Aug 2015 22:23:41 +0000 (23:23 +0100)
Make replace ABM optional, disabled by default

minetest.conf.example
mods/stairs/depends.txt
mods/stairs/init.lua

index b908ad24e42447bde4266188fadced39b2469b8d..47d03b00db68c1ca6673c05cddc6f62f83f32066 100644 (file)
@@ -22,3 +22,7 @@
 
 # The radius of a TNT explosion
 #tnt_radius = 3
+
+# Enable the stairs mod ABM that replaces the old 'upside down'
+# stair and slab nodes in old maps with the new param2 versions.
+#enable_stairs_replace_abm = false
index 4ad96d51599fb734101f6229f6c1a8a509bd6255..d77ba253124050e2b6e1baea793e53dda4858bd5 100644 (file)
@@ -1 +1,2 @@
 default
+farming
index 7e752d138f0a16551e54d8ff4386a95fab6ac786..c2547935e2cf35abe45c53d653a9d46539ca8c31 100644 (file)
@@ -1,9 +1,20 @@
 -- Minetest 0.4 mod: stairs
 -- See README.txt for licensing and other information.
 
+
+-- Global namespace for functions
+
 stairs = {}
 
+
+-- Get setting for replace ABM
+
+local replace = minetest.setting_getbool("enable_stairs_replace_abm")
+
+
+-- Register stairs.
 -- Node will be called stairs:stair_<subname>
+
 function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
        minetest.register_node(":stairs:stair_" .. subname, {
                description = description,
@@ -48,7 +59,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
                                param2 = minetest.dir_to_facedir(dir)
                        end
 
-                       if p0.y-1 == p1.y then
+                       if p0.y - 1 == p1.y then
                                param2 = param2 + 20
                                if param2 == 21 then
                                        param2 = 23
@@ -62,10 +73,12 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
        })
 
        -- for replace ABM
-       minetest.register_node(":stairs:stair_" .. subname.."upside_down", {
-               replace_name = "stairs:stair_" .. subname,
-               groups = {slabs_replace=1},
-       })
+       if replace then
+               minetest.register_node(":stairs:stair_" .. subname .. "upside_down", {
+                       replace_name = "stairs:stair_" .. subname,
+                       groups = {slabs_replace = 1},
+               })
+       end
 
        minetest.register_craft({
                output = 'stairs:stair_' .. subname .. ' 6',
@@ -87,7 +100,10 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
        })
 end
 
+
+-- Register slabs.
 -- Node will be called stairs:slab_<subname>
+
 function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
        minetest.register_node(":stairs:slab_" .. subname, {
                description = description,
@@ -120,7 +136,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
                        local n0_is_upside_down = (n0.name == "stairs:slab_" .. subname and
                                        n0.param2 >= 20)
 
-                       if n0.name == "stairs:slab_" .. subname and not n0_is_upside_down and p0.y+1 == p1.y then
+                       if n0.name == "stairs:slab_" .. subname and not n0_is_upside_down and
+                                       p0.y + 1 == p1.y then
                                slabpos = p0
                                slabnode = n0
                        elseif n1.name == "stairs:slab_" .. subname then
@@ -136,7 +153,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
 
                                pointed_thing.above = slabpos
                                local success
-                               fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
+                               fakestack, success = minetest.item_place(fakestack, placer,
+                                       pointed_thing)
                                -- If the item was taken from the fake stack, decrement original
                                if success then
                                        itemstack:set_count(fakestack:get_count())
@@ -148,7 +166,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
                        end
                        
                        -- Upside down slabs
-                       if p0.y-1 == p1.y then
+                       if p0.y - 1 == p1.y then
                                -- Turn into full block if pointing at a existing slab
                                if n0_is_upside_down  then
                                        -- Remove the slab at the position of the slab
@@ -159,7 +177,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
 
                                        pointed_thing.above = p0
                                        local success
-                                       fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
+                                       fakestack, success = minetest.item_place(fakestack, placer,
+                                               pointed_thing)
                                        -- If the item was taken from the fake stack, decrement original
                                        if success then
                                                itemstack:set_count(fakestack:get_count())
@@ -175,7 +194,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
                        end
 
                        -- If pointing at the side of a upside down slab
-                       if n0_is_upside_down and p0.y+1 ~= p1.y then
+                       if n0_is_upside_down and p0.y + 1 ~= p1.y then
                                param2 = 20
                        end
 
@@ -184,10 +203,12 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
        })
 
        -- for replace ABM
-       minetest.register_node(":stairs:slab_" .. subname.."upside_down", {
-               replace_name = "stairs:slab_"..subname,
-               groups = {slabs_replace=1},
-       })
+       if replace then
+               minetest.register_node(":stairs:slab_" .. subname .. "upside_down", {
+                       replace_name = "stairs:slab_".. subname,
+                       groups = {slabs_replace = 1},
+               })
+       end
 
        minetest.register_craft({
                output = 'stairs:slab_' .. subname .. ' 6',
@@ -197,29 +218,41 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
        })
 end
 
--- Replace old "upside_down" nodes with new param2 versions
-minetest.register_abm({
-       nodenames = {"group:slabs_replace"},
-       interval = 8,
-       chance = 1,
-       action = function(pos, node)
-               node.name = minetest.registered_nodes[node.name].replace_name
-               node.param2 = node.param2 + 20
-               if node.param2 == 21 then
-                       node.param2 = 23
-               elseif node.param2 == 23 then
-                       node.param2 = 21
-               end
-               minetest.set_node(pos, node)
-       end,
-})
 
+-- Optionally replace old "upside_down" nodes with new param2 versions.
+-- Disabled by default.
+
+if replace then
+       minetest.register_abm({
+               nodenames = {"group:slabs_replace"},
+               interval = 8,
+               chance = 1,
+               action = function(pos, node)
+                       node.name = minetest.registered_nodes[node.name].replace_name
+                       node.param2 = node.param2 + 20
+                       if node.param2 == 21 then
+                               node.param2 = 23
+                       elseif node.param2 == 23 then
+                               node.param2 = 21
+                       end
+                       minetest.set_node(pos, node)
+               end,
+       })
+end
+
+
+-- Stair/slab registration function.
 -- Nodes will be called stairs:{stair,slab}_<subname>
-function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
+
+function stairs.register_stair_and_slab(subname, recipeitem, groups, images,
+               desc_stair, desc_slab, sounds)
        stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds)
        stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds)
 end
 
+
+-- Register default stairs and slabs
+
 stairs.register_stair_and_slab("wood", "default:wood",
                {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
                {"default_wood.png"},
@@ -290,13 +323,6 @@ stairs.register_stair_and_slab("desert_stonebrick", "default:desert_stonebrick",
                "Desert Stone Brick Slab",
                default.node_sound_stone_defaults())
 
-stairs.register_stair_and_slab("brick", "default:brick",
-               {cracky = 3},
-               {"default_brick.png"},
-               "Brick Stair",
-               "Brick Slab",
-               default.node_sound_stone_defaults())
-
 stairs.register_stair_and_slab("sandstone", "default:sandstone",
                {crumbly = 2, cracky = 2},
                {"default_sandstone.png"},
@@ -324,3 +350,45 @@ stairs.register_stair_and_slab("obsidianbrick", "default:obsidianbrick",
                "Obsidian Brick Stair",
                "Obsidian Brick Slab",
                default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("brick", "default:brick",
+               {cracky = 3},
+               {"default_brick.png"},
+               "Brick Stair",
+               "Brick Slab",
+               default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("straw", "farming:straw",
+               {snappy = 3, flammable = 4},
+               {"farming_straw.png"},
+               "Straw Stair",
+               "Straw Slab",
+               default.node_sound_leaves_defaults())
+
+stairs.register_stair_and_slab("steelblock", "default:steelblock",
+               {cracky = 1, level = 2},
+               {"default_steel_block.png"},
+               "Steel Block Stair",
+               "Steel Block Slab",
+               default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("copperblock", "default:copperblock",
+               {cracky = 1, level = 2},
+               {"default_copper_block.png"},
+               "Copper Block Stair",
+               "Copper Block Slab",
+               default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("bronzeblock", "default:bronzeblock",
+               {cracky = 1, level = 2},
+               {"default_bronze_block.png"},
+               "Bronze Block Stair",
+               "Bronze Block Slab",
+               default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("goldblock", "default:goldblock",
+               {cracky = 1},
+               {"default_gold_block.png"},
+               "Gold Block Stair",
+               "Gold Block Slab",
+               default.node_sound_stone_defaults())