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/panels.lua | |
parent | 396945ed3eaf43404bd117bbf4820ce08584cc4e (diff) |
Merge ShadowNinja's rewrite.
Diffstat (limited to 'stairsplus/panels.lua')
-rw-r--r-- | stairsplus/panels.lua | 182 |
1 files changed, 67 insertions, 115 deletions
diff --git a/stairsplus/panels.lua b/stairsplus/panels.lua index f074d54..efabd46 100644 --- a/stairsplus/panels.lua +++ b/stairsplus/panels.lua @@ -1,135 +1,87 @@ -- 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>panel_<subname> +-- Node will be called <modname>:panel_<subname> function register_panel(modname, subname, recipeitem, groups, images, description, drop, light) - - minetest.register_node(":" .. modname .. ":panel_" .. subname, { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, + return stairsplus:register_panel(modname, subname, recipeitem, { groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, - }, - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_1", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", tiles = images, + description = description, + drop = drop, light_source = light, - drop = modname .. ":panel_" .. drop .. "_1", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, -0.4375, 0.5}, - }, - on_place = stairsplus_rotate_and_place + sounds = default.node_sound_stone_defaults(), }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_2", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop .. "_2", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, -0.375, 0.5}, +end + + +function stairsplus:register_panel(modname, subname, recipeitem, fields) + local defs = { + [""] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, }, - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_4", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop .. "_4", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, -0.25, 0.5}, + ["_1"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, -0.4375, 0.5}, + }, }, - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_12", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop .. "_12", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5}, + ["_2"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, -0.375, 0.5}, + }, }, - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_14", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop .. "_14", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, 0.375, 0.5}, + ["_4"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, -0.25, 0.5}, + }, }, - on_place = stairsplus_rotate_and_place - }) - - minetest.register_node(":" .. modname .. ":panel_" .. subname .. "_15", { - description = S("%s Panel"):format(S(description)), - drawtype = "nodebox", - tiles = images, - light_source = light, - drop = modname .. ":panel_" .. drop .. "_15", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5}, + ["_12"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5}, + }, }, - on_place = stairsplus_rotate_and_place - }) + ["_14"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.375, 0.5}, + }, + }, + ["_15"] = { + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5}, + }, + } + } + + local desc = S("%s Panel"):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..":panel_"..fields.drop..alternate + end + minetest.register_node(":"..modname..":panel_"..subname..alternate, def) + end minetest.register_alias(modname..":panel_"..subname.."_bottom", modname..":panel_"..subname) end |