mirror of
https://github.com/Sokomine/cottages.git
synced 2024-11-04 17:40:21 +01:00
487 lines
16 KiB
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
|