diff options
author | Calinou <calinou@opmbx.org> | 2014-10-28 22:12:40 +0100 |
---|---|---|
committer | Calinou <calinou@opmbx.org> | 2014-10-28 22:12:40 +0100 |
commit | 851a6db870f9ee4a2e644c3cc1ee9cf7d5f63776 (patch) | |
tree | 05408cad632f8fe0eefef6425e4cd558486c5811 /stairsplus/slopes.lua | |
parent | 84ee1ffae8e17c00cc20c166556b2fe39fa54c7c (diff) |
Add slopes and their crafting.
Diffstat (limited to 'stairsplus/slopes.lua')
-rw-r--r-- | stairsplus/slopes.lua | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/stairsplus/slopes.lua b/stairsplus/slopes.lua new file mode 100644 index 0000000..f38a7ad --- /dev/null +++ b/stairsplus/slopes.lua @@ -0,0 +1,106 @@ +local S -- Load translation library if intllib is installed: +if intllib then + S = intllib.Getter(minetest.get_current_modname()) +else + S = function(s) return s end +end + +local box_slope = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} + } +} + +local box_slope_half = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, -- NodeBox1 + {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5}, -- NodeBox2 + {-0.5, -0.25, 0, 0.5, -0.125, 0.5}, -- NodeBox3 + {-0.5, -0.125, 0.25, 0.5, 0, 0.5}, -- NodeBox4 + } +} + +local box_slope_half_raised = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5}, -- NodeBox1 + {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5}, -- NodeBox2 + {-0.5, 0.25, 0, 0.5, 0.375, 0.5}, -- NodeBox3 + {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5}, -- NodeBox4 + } +} + +-- Node will be called <modname>:slope_<subname> + +function register_slope(modname, subname, recipeitem, groups, images, description, drop, light) + return stairsplus:register_slope(modname, subname, recipeitem, { + groups = groups, + tiles = images, + description = description, + drop = drop, + light_source = light, + sounds = default.node_sound_stone_defaults(), + }) +end + +function stairsplus:register_slope(modname, subname, recipeitem, fields) + local defs = { + [""] = { + mesh = "moreblocks_slope.obj", + collision_box = box_slope, + selection_box = box_slope, + + }, + ["_half"] = { + mesh = "moreblocks_slope_half.obj", + collision_box = box_slope_half, + selection_box = box_slope_half, + }, + ["_half_raised"] = { + mesh = "moreblocks_slope_half_raised.obj", + collision_box = box_slope_half_raised, + selection_box = box_slope_half_raised, + }, + } + + local desc = S("%s Slope"):format(fields.description) + for alternate, def in pairs(defs) do + def.drawtype = "mesh" + 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.. ":slope_" ..fields.drop..alternate + end + minetest.register_node(":" ..modname.. ":slope_" ..subname..alternate, def) + end + + -- Some saw-less recipes: + + minetest.register_craft({ + output = modname .. ":slope_" .. subname .. " 10", + recipe = { + {modname .. ":stair_" .. subname, "", ""}, + {recipeitem, modname .. ":stair_" .. subname, ""}, + {recipeitem, recipeitem, modname .. ":stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = modname .. ":slope_" .. subname .. " 10", + recipe = { + {"", "", modname .. ":stair_" .. subname}, + {"", modname .. ":stair_" .. subname, recipeitem}, + {modname .. ":stair_" .. subname, recipeitem, recipeitem}, + }, + }) +end |