aboutsummaryrefslogtreecommitdiff
path: root/stairsplus/slabs.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/slabs.lua
parent396945ed3eaf43404bd117bbf4820ce08584cc4e (diff)
downloadmoreblocks-8337a6c192b9961f8947767690c13951696c3c1e.tar.gz
moreblocks-8337a6c192b9961f8947767690c13951696c3c1e.tar.bz2
moreblocks-8337a6c192b9961f8947767690c13951696c3c1e.zip
Merge ShadowNinja's rewrite.
Diffstat (limited to 'stairsplus/slabs.lua')
-rw-r--r--stairsplus/slabs.lua218
1 files changed, 72 insertions, 146 deletions
diff --git a/stairsplus/slabs.lua b/stairsplus/slabs.lua
index 687dbee..a606392 100644
--- a/stairsplus/slabs.lua
+++ b/stairsplus/slabs.lua
@@ -1,170 +1,96 @@
-- 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>slab_<subname>
+-- Node will be called <modname>:slab_<subname>
function register_slab(modname, subname, recipeitem, groups, images, description, drop, light)
-
- minetest.register_node(":" .. modname .. ":slab_" .. subname, {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
+ return stairsplus:register_slab(modname, subname, recipeitem, {
+ groups = groups,
tiles = images,
+ description = description,
+ drop = drop,
light_source = light,
- drop = modname .. ":slab_" .. drop,
- 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},
- },
sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
})
+end
- minetest.register_node(":stairs:slab_" .. subname, {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- drop = modname .. ":slab_" .. drop,
- 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},
+function stairsplus:register_slab(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_quarter", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_quarter",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ ["_quarter"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_three_quarter", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_three_quarter",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5},
+ ["_three_quarter"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_1", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_1",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
+ ["_1"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_2", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_2",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
+ ["_2"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_14", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_14",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, 0.375, 0.5},
+ ["_14"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.375, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
-
- minetest.register_node(":"..modname .. ":slab_" .. subname .. "_15", {
- description = S("%s Slab"):format(S(description)),
- drawtype = "nodebox",
- tiles = images,
- light_source = light,
- drop = modname .. ":slab_" .. drop .. "_15",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- groups = groups,
- node_box = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, 0.4375, 0.5},
+ ["_15"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.4375, 0.5},
+ },
},
- sounds = default.node_sound_stone_defaults(),
- on_place = stairsplus_rotate_and_place
- })
+ }
+ local desc = S("%s Slab"):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..":slab_"..fields.drop..alternate
+ end
+ minetest.register_node(":"..modname..":slab_"..subname..alternate, def)
+ end
+ minetest.register_alias("stairs:slab_"..subname, modname..":slab_"..subname)
- -- Unregister default recipes, optional, see _config.txt
+ -- Unregister default recipes, optional, see config.lua
-if allow_stair_slab_crafting == false
-then
- minetest.register_craft({
- output = "moreblocks:nothing 1",
- recipe = {
- {recipeitem, recipeitem, recipeitem},
- },
- })
-end
+ if not moreblocks.config.allow_stair_slab_crafting then
+ minetest.register_craft({
+ output = "moreblocks:nothing 1",
+ recipe = {
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+ end
end