diff options
author | Calinou <calinou@opmbx.org> | 2014-03-09 10:38:18 +0100 |
---|---|---|
committer | Calinou <calinou@opmbx.org> | 2014-03-09 10:38:18 +0100 |
commit | 8337a6c192b9961f8947767690c13951696c3c1e (patch) | |
tree | 77908db80dd8f13b494030203be725e03f96bea8 /stairsplus/stairs.lua | |
parent | 396945ed3eaf43404bd117bbf4820ce08584cc4e (diff) |
Merge ShadowNinja's rewrite.
Diffstat (limited to 'stairsplus/stairs.lua')
-rw-r--r-- | stairsplus/stairs.lua | 315 |
1 files changed, 112 insertions, 203 deletions
diff --git a/stairsplus/stairs.lua b/stairsplus/stairs.lua index b11fef9..12b7847 100644 --- a/stairsplus/stairs.lua +++ b/stairsplus/stairs.lua @@ -1,240 +1,149 @@ -- Load translation library if intllib is installed local S -if (minetest.get_modpath("intllib")) then - dofile(minetest.get_modpath("intllib").."/intllib.lua") +if intllib then S = intllib.Getter(minetest.get_current_modname()) - else - S = function ( s ) return s end +else + S = function(s) return s end end -- Node will be called <modname>:stair_<subname> function register_stair(modname, subname, recipeitem, groups, images, description, drop, light) - - minetest.register_node(":" .. modname .. ":stair_" .. subname, { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", + return stairsplus:register_stair(modname, subname, recipeitem, { + groups = groups, tiles = images, + description = description, + drop = drop, light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.5, 0.5}, - }, - }, sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place }) +end - minetest.register_node(":stairs:stair_" .. subname, { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky=3, not_in_creative_inventory=1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.5, 0.5}, +function stairsplus:register_stair(modname, subname, recipeitem, fields) + local defs = { + [""] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_half", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0, 0, 0.5}, - {-0.5, 0, 0, 0, 0.5, 0.5}, + ["_half"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":"..modname .. ":stair_" .. subname .. "_right_half", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {0, -0.5, -0.5, 0.5, 0, 0.5}, - {0, 0, 0, 0.5, 0.5, 0.5}, + ["_right_half" ]= { + node_box = { + type = "fixed", + fixed = { + {0, -0.5, -0.5, 0.5, 0, 0.5}, + {0, 0, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":"..modname .. ":stair_" .. subname .. "_inner", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":stair_" .. drop .. "_inner", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.5, 0.5}, - {-0.5, 0, -0.5, 0, 0.5, 0}, + ["_inner"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":"..modname .. ":stair_" .. subname .. "_outer", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":stair_" .. drop .. "_outer", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0, 0.5, 0.5}, + ["_outer"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0}, - {-0.5, 0, 0, 0.5, 0.5, 0.5}, + ["_alt"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt_1", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.0625, -0.5, 0.5, 0, 0}, - {-0.5, 0.4375, 0, 0.5, 0.5, 0.5}, + ["_alt_1"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.0625, -0.5, 0.5, 0, 0}, + {-0.5, 0.4375, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt_2", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.125, -0.5, 0.5, 0, 0}, - {-0.5, 0.375, 0, 0.5, 0.5, 0.5}, + ["_alt_2"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.125, -0.5, 0.5, 0, 0}, + {-0.5, 0.375, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt_4", { - description = S("%s Stairs"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.25, -0.5, 0.5, 0, 0}, - {-0.5, 0.25, 0, 0.5, 0.5, 0.5}, + ["_alt_4"] = { + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.25, -0.5, 0.5, 0, 0}, + {-0.5, 0.25, 0, 0.5, 0.5, 0.5}, + }, }, }, - sounds = default.node_sound_stone_defaults(), - on_place = stairsplus_rotate_and_place - }) + } - -- Unregister default recipes, optional, see _config.txt + local desc = S("%s Stairs"):format(fields.description) + for alternate, def in pairs(defs) do + def.drawtype = "nodebox" + def.paramtype = "light" + def.paramtype2 = "facedir" + def.on_place = minetest.rotate_node + for k, v in pairs(fields) do + def[k] = v + end + def.description = desc + if fields.drop then + def.drop = modname..":stair_"..fields.drop..alternate + end + minetest.register_node(":"..modname..":stair_"..subname..alternate, def) + end + minetest.register_alias(":stairs:stair_"..subname, modname..":stair_"..subname) -if allow_stair_slab_crafting == false -then - minetest.register_craft({ - output = "moreblocks:nothing 1", - recipe = { - {recipeitem, "", ""}, - {recipeitem, recipeitem, ""}, - {recipeitem, recipeitem, recipeitem}, - }, - }) - minetest.register_craft({ - output = "moreblocks:nothing 1", - recipe = { - {"", "", recipeitem}, - {"", recipeitem, recipeitem}, - {recipeitem, recipeitem, recipeitem}, - }, - }) -end + -- Unregister default recipes, optional, see config.lua + + if not moreblocks.config.allow_stair_slab_crafting then + minetest.register_craft({ + output = "moreblocks:nothing 1", + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "moreblocks:nothing 1", + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + end end |