aboutsummaryrefslogtreecommitdiff
path: root/stairsplus/stairs.lua
diff options
context:
space:
mode:
authorCalinou <calinou@opmbx.org>2014-03-09 10:38:18 +0100
committerCalinou <calinou@opmbx.org>2014-03-09 10:38:18 +0100
commit8337a6c192b9961f8947767690c13951696c3c1e (patch)
tree77908db80dd8f13b494030203be725e03f96bea8 /stairsplus/stairs.lua
parent396945ed3eaf43404bd117bbf4820ce08584cc4e (diff)
downloadmoreblocks-8337a6c192b9961f8947767690c13951696c3c1e.tar.gz
moreblocks-8337a6c192b9961f8947767690c13951696c3c1e.tar.bz2
moreblocks-8337a6c192b9961f8947767690c13951696c3c1e.zip
Merge ShadowNinja's rewrite.
Diffstat (limited to 'stairsplus/stairs.lua')
-rw-r--r--stairsplus/stairs.lua315
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