cottages/nodes_feldweg.lua

487 lines
16 KiB
Lua

---------------------------------------------------------------------------------------
-- decoration and building material
---------------------------------------------------------------------------------------
-- * includes a wagon wheel that can be used as decoration on walls or to build (stationary) wagons
-- * dirt road - those are more natural in small old villages than cobble roads
-- * loam - no, old buildings are usually not built out of clay; loam was used
-- * straw - useful material for roofs
-- * glass pane - an improvement compared to fence posts as windows :-)
---------------------------------------------------------------------------------------
local S = cottages.S
-- supported modes:
-- * simple: only a straight dirt road; no curves, junctions etc.
-- * flat: each node is a full node; junction, t-junction and corner are included
-- * nodebox: like flat - except that each node has a nodebox that fits to that road node
-- * mesh: like nodebox - except that it uses a nice roundish model
local cottages_feldweg_mode = minetest.settings:get("cottages_feldweg_mode")
if( cottages_feldweg_mode ~= "mesh"
and cottages_feldweg_mode ~= "flat"
and cottages_feldweg_mode ~= "nodebox"
and cottages_feldweg_mode ~= "flat") then
cottages_feldweg_mode = "mesh";
-- add the setting to the minetest.conf so that the player can set it there
minetest.settings:set("cottages_feldweg_mode", "mesh")
end
local function register_recipes(include_end)
minetest.register_craft({
output = "cottages:feldweg_crossing 5",
recipe = {
{"", "cottages:feldweg", "" },
{"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"},
{"", "cottages:feldweg", "" },
},
})
minetest.register_craft({
output = "cottages:feldweg_t_junction 5",
recipe = {
{"", "cottages:feldweg", "" },
{"", "cottages:feldweg", "" },
{"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"}
},
})
minetest.register_craft({
output = "cottages:feldweg_curve 5",
recipe = {
{"cottages:feldweg", "", "" },
{"cottages:feldweg", "", ""},
{"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"}
},
})
if include_end then
minetest.register_craft({
output = "cottages:feldweg_end 5",
recipe = {
{"cottages:feldweg", "", "cottages:feldweg" },
{"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"}
},
})
end
end
--- a nice dirt road for small villages or paths to fields
if( cottages_feldweg_mode == "simple" or cottages_feldweg_mode == "flat" ) then
minetest.register_node("cottages:feldweg", {
description = S("dirt road"),
tiles = {"cottages_feldweg.png","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
})
end
-- add crossing, t-junction and corner
--
-- flat - just textures, full blocks
--
if( cottages_feldweg_mode == "flat" ) then
minetest.register_node("cottages:feldweg_crossing", {
description = S("dirt road crossing"),
tiles = {"cottages_feldweg_kreuzung.png","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
})
minetest.register_node("cottages:feldweg_t_junction", {
description = S("dirt road t junction"),
tiles = {"cottages_feldweg_t-kreuzung.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
})
minetest.register_node("cottages:feldweg_curve", {
description = S("dirt road curve"),
tiles = {"cottages_feldweg_ecke.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
})
register_recipes(false)
--
-- cube-style nodebox version
--
elseif( cottages_feldweg_mode == "nodebox" ) then
minetest.register_node("cottages:feldweg", {
description = S("dirt road"),
tiles = {"cottages_feldweg_orig.png","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
roups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
drawtype = "nodebox",
-- top, bottom, side1, side2, inner, outer
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5},
-- Rasenkanten
{ -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, 0.5},
{ 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5},
-- uebergang zwischen Wagenspur und Rasenkante
{ -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, 0.5},
{ 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
minetest.register_node("cottages:feldweg_crossing", {
description = S("dirt road crossing"),
tiles = {"cottages_feldweg_kreuzung.png","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
drawtype = "nodebox",
-- top, bottom, side1, side2, inner, outer
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5},
-- Rasenkanten
{ -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, -0.5+3/16},
{ 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, -0.5+3/16},
{ -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5},
{ 0.5-3/16, 0.5-2/16, 0.5-3/16, 0.5, 0.5, 0.5},
-- uebergang zwischen Wagenspur und Rasenkante
{ -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, -0.5+4/16},
{ 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, -0.5+4/16},
{ -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5},
{ 0.5-4/16, 0.5-2/16, 0.5-4/16, 0.5-3/16, 0.5-1/16, 0.5},
{ -0.5, 0.5-2/16, -0.5+3/16, -0.5+3/16, 0.5-1/16, -0.5+4/16},
{ 0.5-3/16, 0.5-2/16, -0.5+3/16, 0.5, 0.5-1/16, -0.5+4/16},
{ -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16},
{ 0.5-3/16, 0.5-2/16, 0.5-4/16, 0.5, 0.5-1/16, 0.5-3/16},
},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
minetest.register_node("cottages:feldweg_t_junction", {
description = S("dirt road t junction"),
tiles = {"cottages_feldweg_t-kreuzung.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
drawtype = "nodebox",
-- top, bottom, side1, side2, inner, outer
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5},
-- Rasenkanten
{ -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, -0.5+3/16},
{ -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5},
-- Rasenkante seitlich durchgehend
{ 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5},
-- uebergang zwischen Wagenspur und Rasenkante
{ -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, -0.5+4/16},
{ -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5},
{ -0.5, 0.5-2/16, -0.5+3/16, -0.5+3/16, 0.5-1/16, -0.5+4/16},
{ -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16},
-- Ueberganng seitlich durchgehend
{ 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
minetest.register_node("cottages:feldweg_curve", {
description = S("dirt road curve"),
tiles = {"cottages_feldweg_ecke.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"},
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
drawtype = "nodebox",
-- top, bottom, side1, side2, inner, outer
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5},
-- Rasenkante vorne durchgehend
{ -0.5, 0.5-2/16, -0.5, 0.5-3/16, 0.5, -0.5+3/16},
-- Rasenkanten
{ -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5},
-- Rasenkante seitlich durchgehend
{ 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5},
-- uebergang zwischen Wagenspur und Rasenkante
{ -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5},
-- Uebergang vorne durchgehend
{ -0.5, 0.5-2/16, -0.5+3/16, 0.5-3/16, 0.5-1/16, -0.5+4/16},
{ -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16},
-- Ueberganng seitlich durchgehend
{ 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
register_recipes(false)
--
-- the mesh version (rounded); provided and created by VanessaE
--
elseif( cottages_feldweg_mode == "mesh" ) then
-- a nice dirt road for small villages or paths to fields
minetest.register_node("cottages:feldweg", {
description = S("dirt road"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png",
"default_dirt.png", "default_grass.png",
"cottages_feldweg_surface.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg.obj",
})
minetest.register_node("cottages:feldweg_crossing", {
description = S("dirt road crossing"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png",
"default_grass.png","cottages_feldweg_surface.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg-crossing.obj",
})
minetest.register_node("cottages:feldweg_t_junction", {
description = S("dirt road t junction"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png",
"default_grass.png","cottages_feldweg_surface.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg-T-junction.obj",
})
minetest.register_node("cottages:feldweg_curve", {
description = S("dirt road curve"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"default_dirt.png^default_grass_side.png","default_grass.png",
"default_dirt.png^default_grass_side.png","cottages_feldweg_surface.png",
"default_dirt.png","cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg-curve.obj",
})
minetest.register_node("cottages:feldweg_end", {
description = S("dirt road end"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png",
"default_dirt.png", "default_grass.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png",
"cottages_feldweg_surface.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg_end.obj",
})
register_recipes(true)
end
-- create stairs if possible
if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab) then
stairs.register_stair_and_slab("feldweg", "cottages:feldweg",
{snappy=2,choppy=2,oddly_breakable_by_hand=2},
{"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"},
S("Dirt Road Stairs"),
S("Dirt Road, half height"),
cottages.sounds.dirt)
end
if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then
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_long = {
type = "fixed",
fixed = {
{-0.5, -0.5, -1.5, 0.5, -0.10, 0.5},
{-0.5, -0.25, -1.3, 0.5, -0.25, 0.5},
{-0.5, -0.25, -1.0, 0.5, 0, 0.5},
{-0.5, 0, -0.5, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0, 0.5, 0.5, 0.5}
}};
minetest.register_node("cottages:feldweg_slope", {
description = S("dirt road slope"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png",
"default_dirt.png", "default_grass.png",
"cottages_feldweg_surface.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg_slope.obj",
collision_box = box_slope,
selection_box = box_slope,
})
minetest.register_node("cottages:feldweg_slope_long", {
description = S("dirt road slope long"),
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true,
groups = {crumbly=3},
sounds = cottages.sounds.dirt,
is_ground_content = false,
tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png",
"default_dirt.png", "default_grass.png",
"cottages_feldweg_surface.png",
"cottages_feldweg_surface.png^cottages_feldweg_edges.png"},
paramtype = "light",
drawtype = "mesh",
mesh = "feldweg_slope_long.obj",
collision_box = box_slope_long,
selection_box = box_slope_long,
})
minetest.register_craft({
output = "cottages:feldweg_slope 3",
recipe = {
{"cottages:feldweg", "", "" },
{"cottages:feldweg", "cottages:feldweg", ""}
},
})
minetest.register_craft({
output = "cottages:feldweg_slope_long 4",
recipe = {
{"cottages:feldweg", "", "" },
{"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"}
},
})
end