From 8337a6c192b9961f8947767690c13951696c3c1e Mon Sep 17 00:00:00 2001 From: Calinou Date: Sun, 9 Mar 2014 10:38:18 +0100 Subject: Merge ShadowNinja's rewrite. --- stairsplus/slabs.lua | 218 +++++++++++++++++---------------------------------- 1 file changed, 72 insertions(+), 146 deletions(-) (limited to 'stairsplus/slabs.lua') 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 slab_ +-- Node will be called :slab_ 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 -- cgit v1.2.3