123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- --[[
- This function registers the nodes and craft rezieps for the reinforce stuff
- * name: String which is used in description and as technical name (lower letters)
- * craftItem: the Item where the reinforce is crafted out of
- * nodedef: Nodedefinition table as used as in minetest.register_node()
- The Nodes are caled
- <modname>:reinforced_<name>
- <modname>:reinforced_<name>_slope
- <modname>:reinforced_<name>_arrow
- <modname>:reinforced_<name>_bars
- The modname is automatically the mod that currently calls this function.
- e.g. if you call darkage.register_reinforce from the mod medieval modname will be medieval
- ]]
- function darkage.register_reinforce(name, craftItem, nodedef)
- assert(type(nodedef.tiles)=="table","ERRROR: nodedef.tiles have to be a table")
- assert(nodedef.tiles[1], "ERROR: "..dump(nodedef.tiles).." requires at least 1 entry")
- if nodedef.groups then
- nodedef.groups["not_cuttable"] = 1;
- else
- nodedef.groups = {};
- nodedef.groups["not_cuttable"] = 1;
- end
- local modname = minetest.get_current_modname();
- local tname = string.gsub(name:lower()," ", "_"); -- Technical name
- -- Reinforced X
- local reinforced = table.copy(nodedef);
- local reinforced_tname = modname..":reinforced_"..tname
- reinforced.description = "Reinforced "..name
- for i,tile in ipairs(reinforced.tiles) do
- reinforced.tiles[i] = tile .."^darkage_reinforce.png"
- end
- minetest.register_node(reinforced_tname, reinforced)
- minetest.register_craft({
- output = reinforced_tname,
- recipe = {
- {"group:stick", craftItem, "group:stick"},
- {craftItem, "group:stick", craftItem},
- {"group:stick", craftItem, "group:stick"},
- }
- })
- -- Recycling
- minetest.register_craft({
- output = craftItem,
- recipe = {
- { reinforced_tname },
- }
- })
- -- Reinforced Slope
- local slope = table.copy(nodedef);
- local slope_tname = modname..":reinforced_"..tname.."_slope"
- slope.description = "Reinforced "..name.." Slope\nHint: use the screwdriver to rotate."
- slope.paramtype2 = "facedir";
- local slope_tile_extend = {"^darkage_reinforce_right.png" , "^darkage_reinforce_right.png" , --top ,down
- "^darkage_reinforce_right.png" , "^darkage_reinforce_right.png" , --right, left
- "^darkage_reinforce_left.png" , "^darkage_reinforce_left.png"} -- front, back
- for i=1,6 do
- local tile = slope.tiles[i] or nodedef.tiles[1]; -- There have to be at least one tile.
- slope.tiles[i] = tile ..slope_tile_extend[i]
- end
- minetest.register_node(slope_tname, slope)
- minetest.register_craft({
- output = slope_tname,
- recipe = {
- {craftItem, craftItem, "group:stick"},
- {craftItem, "group:stick", craftItem},
- {"group:stick", craftItem, craftItem},
- }
- })
- -- Flipped recipe
- minetest.register_craft({
- output = slope_tname,
- recipe = {
- {"group:stick", craftItem, craftItem},
- {craftItem, "group:stick", craftItem},
- {craftItem, craftItem, "group:stick"},
- }
- })
- -- Recycling
- minetest.register_craft({
- output = craftItem,
- recipe = {
- { slope_tname }
- }
- })
- -- Alias to convert old nodes
- minetest.register_alias(modname..":reinforced_"..tname.."_right", slope_tname)
- minetest.register_alias(modname..":reinforced_"..tname.."_left", slope_tname)
- -- Arrow bar
- local arrow = table.copy(nodedef)
- local arrow_tname = modname..":reinforced_"..tname.."_arrow"
- arrow.paramtype2 = "facedir";
- arrow.description = "Reinforced "..name.." Arrow \nHint: use the screwdriver to rotate."
- local arrow_tile_extend = {"" , "" , --top ,down
- "^(darkage_reinforce_arrow.png^[transformR90)" , "^(darkage_reinforce_arrow.png^[transformR270)" , --right, left
- "^(darkage_reinforce_arrow.png^[transformR180)" , "^darkage_reinforce_arrow.png"} -- front, back
- for i=1,6 do
- local tile = arrow.tiles[i] or arrow.tiles[1]; -- There have to be at least one tile.
- arrow.tiles[i] = tile .. arrow_tile_extend[i]
- end
- minetest.register_node(arrow_tname, arrow)
- minetest.register_craft({
- output = arrow_tname,
- recipe = {
- {craftItem, "group:stick", craftItem},
- {"group:stick", craftItem, "group:stick"},
- {"group:stick", craftItem, "group:stick"},
- }
- })
- -- Recycling
- minetest.register_craft({
- output = craftItem,
- recipe = {
- { arrow_tname }
- }
- })
- -- Reinforced Bars
- local bars = table.copy(nodedef)
- local bars_tname = modname..":reinforced_"..tname.."_bars"
- bars.description = name.." Bars"
- for i,tile in ipairs(bars.tiles) do
- bars.tiles[i] = tile .."^darkage_reinforce_bars.png"
- end
- minetest.register_node(bars_tname, bars)
- minetest.register_craft({
- output = bars_tname,
- recipe = {
- {"group:stick", craftItem, "group:stick"},
- {"group:stick", craftItem, "group:stick"},
- {"group:stick", craftItem, "group:stick"},
- }
- })
- minetest.register_craft({
- output = craftItem,
- recipe = {
- { bars_tname }
- }
- })
- end
- darkage.register_reinforce("Chalk", "darkage:chalk_powder", {
- tiles = {"darkage_chalk.png"},
- groups = {cracky=3},
- sounds = default.node_sound_stone_defaults()
- })
- darkage.register_reinforce("Wood", "default:wood", {
- tiles = {"default_wood.png"},
- groups = {snappy=2, choppy=3, flammable=3},
- sounds = default.node_sound_wood_defaults()
- })
- darkage.register_reinforce("Chalked Bricks", "darkage:chalked_bricks", {
- tiles = {"darkage_chalked_bricks.png"},
- groups = {cracky = 2, stone = 1},
- sounds = default.node_sound_stone_defaults()
- })
|