123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- --[[
- More Blocks: slope definitions
- Copyright (c) 2011-2017 Hugo Locurcio and contributors.
- Licensed under the zlib license. See LICENSE.md for more information.
- --]]
- local S = moreblocks.intllib
- 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},
- {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
- {-0.5, -0.25, 0, 0.5, -0.125, 0.5},
- {-0.5, -0.125, 0.25, 0.5, 0, 0.5},
- }
- }
- local box_slope_half_raised = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
- {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
- {-0.5, 0.25, 0, 0.5, 0.375, 0.5},
- {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
- }
- }
- --==============================================================
- local box_slope_inner = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
- {-0.5, -0.5, -0.25, 0.5, 0, 0.5},
- {-0.5, -0.5, -0.5, 0.25, 0, 0.5},
- {-0.5, 0, -0.5, 0, 0.25, 0.5},
- {-0.5, 0, 0, 0.5, 0.25, 0.5},
- {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5},
- {-0.5, 0.25, -0.5, -0.25, 0.5, 0.5},
- }
- }
- local box_slope_inner_half = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
- {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
- {-0.5, -0.375, -0.5, 0.25, -0.25, 0.5},
- {-0.5, -0.25, -0.5, 0, -0.125, 0.5},
- {-0.5, -0.25, 0, 0.5, -0.125, 0.5},
- {-0.5, -0.125, 0.25, 0.5, 0, 0.5},
- {-0.5, -0.125, -0.5, -0.25, 0, 0.5},
- }
- }
- local box_slope_inner_half_raised = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
- {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
- {-0.5, 0.125, -0.5, 0.25, 0.25, 0.5},
- {-0.5, 0.25, -0.5, 0, 0.375, 0.5},
- {-0.5, 0.25, 0, 0.5, 0.375, 0.5},
- {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
- {-0.5, 0.375, -0.5, -0.25, 0.5, 0.5},
- }
- }
- --==============================================================
- local box_slope_outer = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
- {-0.5, -0.25, -0.25, 0.25, 0, 0.5},
- {-0.5, 0, 0, 0, 0.25, 0.5},
- {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
- }
- }
- local box_slope_outer_half = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
- {-0.5, -0.375, -0.25, 0.25, -0.25, 0.5},
- {-0.5, -0.25, 0, 0, -0.125, 0.5},
- {-0.5, -0.125, 0.25, -0.25, 0, 0.5}
- }
- }
- local box_slope_outer_half_raised = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
- {-0.5, 0.125, -0.25, 0.25, 0.25, 0.5},
- {-0.5, 0.25, 0, 0, 0.375, 0.5},
- {-0.5, 0.375, 0.25, -0.25, 0.5, 0.5}
- }
- }
- -- Node will be called <modname>:slope_<subname>
- function register_slope(modname, subname, recipeitem, groups, images, description, drop, light)
- local use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true
- stairsplus:register_slope(modname, subname, recipeitem, {
- groups = groups,
- tiles = images,
- description = description,
- drop = drop,
- light_source = light,
- sounds = default.node_sound_stone_defaults(),
- use_texture_alpha = use_texture_alpha
- })
- end
- local slopes_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,
- },
- --==============================================================
- ["_inner"] = {
- mesh = "moreblocks_slope_inner.obj",
- collision_box = box_slope_inner,
- selection_box = box_slope_inner,
- },
- ["_inner_half"] = {
- mesh = "moreblocks_slope_inner_half.obj",
- collision_box = box_slope_inner_half,
- selection_box = box_slope_inner_half,
- },
- ["_inner_half_raised"] = {
- mesh = "moreblocks_slope_inner_half_raised.obj",
- collision_box = box_slope_inner_half_raised,
- selection_box = box_slope_inner_half_raised,
- },
- --==============================================================
- ["_inner_cut"] = {
- mesh = "moreblocks_slope_inner_cut.obj",
- collision_box = box_slope_inner,
- selection_box = box_slope_inner,
- },
- ["_inner_cut_half"] = {
- mesh = "moreblocks_slope_inner_cut_half.obj",
- collision_box = box_slope_inner_half,
- selection_box = box_slope_inner_half,
- },
- ["_inner_cut_half_raised"] = {
- mesh = "moreblocks_slope_inner_cut_half_raised.obj",
- collision_box = box_slope_inner_half_raised,
- selection_box = box_slope_inner_half_raised,
- },
- --==============================================================
- ["_outer"] = {
- mesh = "moreblocks_slope_outer.obj",
- collision_box = box_slope_outer,
- selection_box = box_slope_outer,
- },
- ["_outer_half"] = {
- mesh = "moreblocks_slope_outer_half.obj",
- collision_box = box_slope_outer_half,
- selection_box = box_slope_outer_half,
- },
- ["_outer_half_raised"] = {
- mesh = "moreblocks_slope_outer_half_raised.obj",
- collision_box = box_slope_outer_half_raised,
- selection_box = box_slope_outer_half_raised,
- },
- --==============================================================
- ["_outer_cut"] = {
- mesh = "moreblocks_slope_outer_cut.obj",
- collision_box = box_slope_outer,
- selection_box = box_slope_outer,
- },
- ["_outer_cut_half"] = {
- mesh = "moreblocks_slope_outer_cut_half.obj",
- collision_box = box_slope_outer_half,
- selection_box = box_slope_outer_half,
- },
- ["_outer_cut_half_raised"] = {
- mesh = "moreblocks_slope_outer_cut_half_raised.obj",
- collision_box = box_slope_outer_half_raised,
- selection_box = box_slope_outer_half_raised,
- },
- ["_cut"] = {
- mesh = "moreblocks_slope_cut.obj",
- collision_box = box_slope_outer,
- selection_box = box_slope_outer,
- },
- }
- for k,v in pairs(slopes_defs) do
- table.insert(stairsplus.shapes_list, { "slope_", k })
- end
- function stairsplus:register_slope_alias(modname_old, subname_old, modname_new, subname_new)
- local defs = stairsplus.copytable(slopes_defs)
- for alternate, def in pairs(defs) do
- minetest.register_alias(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
- end
- end
- function stairsplus:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new)
- local defs = stairsplus.copytable(slopes_defs)
- for alternate, def in pairs(defs) do
- minetest.register_alias_force(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
- end
- end
- function stairsplus:register_slope(modname, subname, recipeitem, fields)
- local defs = stairsplus.copytable(slopes_defs)
- local desc = S("%s Slope"):format(fields.description)
- local use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or fields.use_texture_alpha
- for alternate, def in pairs(defs) do
- for k, v in pairs(fields) do
- def[k] = v
- end
- def.drawtype = "mesh"
- def.paramtype = "light"
- def.paramtype2 = def.paramtype2 or "facedir"
- def.use_texture_alpha = use_texture_alpha
- def.on_place = minetest.rotate_node
- def.description = desc
- def.groups = stairsplus:prepare_groups(fields.groups)
- if alternate == "_half" or alternate == "_half_raised" then
- def.groups.not_blocking_trains = 1
- end
- if fields.drop and not (type(fields.drop) == "table") then
- def.drop = modname.. ":slope_" ..fields.drop..alternate
- end
- minetest.register_node(":" ..modname.. ":slope_" ..subname..alternate, def)
- end
- circular_saw.known_nodes[recipeitem] = {modname, subname}
- -- Some saw-less recipes:
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
- modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = recipeitem,
- recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slab_" .. subname,
- recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slab_" .. subname,
- recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slab_" .. subname,
- recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slope_" .. subname .. "_half_raised",
- recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
- modname .. ":slope_" .. subname .. "_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slope_" .. subname .. "_half_raised",
- recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slope_" .. subname .. "_inner_half_raised",
- recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slope_" .. subname .. "_outer_half_raised",
- recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"},
- })
- minetest.register_craft({
- type = "shapeless",
- output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised",
- recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_cut_half"},
- })
- end
|