Add fir schematics
This commit is contained in:
parent
f53f2e4306
commit
fcb4acad16
@ -120,10 +120,10 @@ local sapling_data = {
|
|||||||
},
|
},
|
||||||
["rp_default:sapling_fir"] = {
|
["rp_default:sapling_fir"] = {
|
||||||
grows_to = {
|
grows_to = {
|
||||||
["dry"] = "fir_large",
|
["dry"] = "fir_broad",
|
||||||
["swamp"] = "fir_swamp",
|
["swamp"] = "fir_swamp",
|
||||||
["normal"] = "fir_small",
|
["normal"] = "fir_tall",
|
||||||
["default"] = "fir_small",
|
["default"] = "fir_tall",
|
||||||
},
|
},
|
||||||
grow_time_min = 700,
|
grow_time_min = 700,
|
||||||
grow_time_max = 960,
|
grow_time_max = 960,
|
||||||
@ -141,134 +141,179 @@ local sapling_data = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local tree_data = {
|
local tree_data = {
|
||||||
["apple"] = {
|
["apple"] = {{
|
||||||
schem = "rp_default_apple_tree.mts",
|
schem = "rp_default_apple_tree.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,2,0) },
|
{ vector.new(0,0,0), vector.new(0,2,0) },
|
||||||
{ vector.new(-2,3,-2), vector.new(2,5,2) },
|
{ vector.new(-2,3,-2), vector.new(2,5,2) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["normal_tiny"] = {
|
["normal_tiny"] = {{
|
||||||
schem = "rp_default_tiny_normal_tree.mts",
|
schem = "rp_default_tiny_normal_tree.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["apple_swamp"] = {
|
["apple_swamp"] = {{
|
||||||
schem = "rp_default_swamp_apple_tree.mts",
|
schem = "rp_default_swamp_apple_tree.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,2,0) },
|
{ vector.new(0,0,0), vector.new(0,2,0) },
|
||||||
{ vector.new(-2,3,-2), vector.new(2,4,2) },
|
{ vector.new(-2,3,-2), vector.new(2,4,2) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["oak"] = {
|
["oak"] = {{
|
||||||
schem = "rp_default_oak_tree.mts",
|
schem = "rp_default_oak_tree.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,2,0) },
|
{ vector.new(0,0,0), vector.new(0,2,0) },
|
||||||
{ vector.new(-1,3,-1), vector.new(1,5,1) },
|
{ vector.new(-1,3,-1), vector.new(1,5,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["oak_acorns"] = {
|
["oak_acorns"] = {{
|
||||||
schem = "rp_default_oak_tree_acorns.mts",
|
schem = "rp_default_oak_tree_acorns.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,2,0) },
|
{ vector.new(0,0,0), vector.new(0,2,0) },
|
||||||
{ vector.new(-1,3,-1), vector.new(1,5,1) },
|
{ vector.new(-1,3,-1), vector.new(1,5,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["oak_swamp"] = {
|
["oak_swamp"] = {{
|
||||||
schem = "rp_default_swamp_oak.mts",
|
schem = "rp_default_swamp_oak.mts",
|
||||||
offset = vector.new(-3, -1, -3),
|
offset = vector.new(-3, -1, -3),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,2,0) },
|
{ vector.new(0,0,0), vector.new(0,2,0) },
|
||||||
{ vector.new(-2,3,-2), vector.new(2,5,2) },
|
{ vector.new(-2,3,-2), vector.new(2,5,2) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["oak_tiny"] = {
|
["oak_tiny"] = {{
|
||||||
schem = "rp_default_tiny_oak.mts",
|
schem = "rp_default_tiny_oak.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["birch_cuboid"] = {
|
["birch_cuboid"] = {{
|
||||||
schem = "rp_default_birch_cuboid_3x3_short.mts",
|
schem = "rp_default_birch_cuboid_3x3_short.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["birch_swamp"] = {
|
["birch_swamp"] = {{
|
||||||
schem = "rp_default_swamp_birch.mts",
|
schem = "rp_default_swamp_birch.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,3,0) },
|
{ vector.new(0,0,0), vector.new(0,3,0) },
|
||||||
{ vector.new(-1,4,-1), vector.new(1,6,1) },
|
{ vector.new(-1,4,-1), vector.new(1,6,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["birch_tiny"] = {
|
["birch_tiny"] = {{
|
||||||
schem = "rp_default_tiny_birch.mts",
|
schem = "rp_default_tiny_birch.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
{ vector.new(-1,2,-1), vector.new(1,4,1) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["fir_small"] = {
|
["fir_tall"] = {
|
||||||
schem = "rp_default_fir_tree.mts",
|
{
|
||||||
offset = vector.new(-2, -1, -2),
|
schems = {
|
||||||
space = {
|
"rp_default_fir_tall_s1_h3.mts",
|
||||||
{ vector.new(0,0,0), vector.new(0,7,0) },
|
"rp_default_fir_tall_s2_h3.mts",
|
||||||
{ vector.new(-2,5,-2), vector.new(2,9,2) },
|
"rp_default_fir_tall_s3_h3.mts",
|
||||||
|
},
|
||||||
|
offset = vector.new(-2, -1, -2),
|
||||||
|
space = {
|
||||||
|
{ vector.new(0,0,0), vector.new(0,16,0) },
|
||||||
|
{ vector.new(-2,5,-2), vector.new(2,15,2) },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
schems = {
|
||||||
|
"rp_default_fir_tall_s1_h2.mts",
|
||||||
|
"rp_default_fir_tall_s2_h2.mts",
|
||||||
|
"rp_default_fir_tall_s3_h2.mts",
|
||||||
|
},
|
||||||
|
offset = vector.new(-2, -1, -2),
|
||||||
|
space = {
|
||||||
|
{ vector.new(0,0,0), vector.new(0,11,0) },
|
||||||
|
{ vector.new(-2,5,-2), vector.new(2,10,2) },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
schems = {
|
||||||
|
"rp_default_fir_tall_s1_h1.mts",
|
||||||
|
"rp_default_fir_tall_s2_h1.mts",
|
||||||
|
"rp_default_fir_tall_s3_h1.mts",
|
||||||
|
},
|
||||||
|
offset = vector.new(-2, -1, -2),
|
||||||
|
space = {
|
||||||
|
{ vector.new(0,0,0), vector.new(0,7,0) },
|
||||||
|
{ vector.new(-2,3,-2), vector.new(2,6,2) },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
["fir_large"] = {
|
["fir_broad"] = {
|
||||||
schem = "rp_default_fir_tree_large.mts",
|
{
|
||||||
offset = vector.new(-3, -1, -3),
|
schem = "rp_default_fir_candle_h3.mts",
|
||||||
space = {
|
offset = vector.new(-3, -1, -3),
|
||||||
{ vector.new(0,0,0), vector.new(0,4,0) },
|
space = {
|
||||||
{ vector.new(-2,5,-2), vector.new(2,12,2) },
|
{ vector.new(0,0,0), vector.new(0,11,0) },
|
||||||
|
{ vector.new(-3,4,-3), vector.new(3,11,3) },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
schem = "rp_default_fir_candle_h2.mts",
|
||||||
|
offset = vector.new(-2, -1, -2),
|
||||||
|
space = {
|
||||||
|
{ vector.new(0,0,0), vector.new(0,7,0) },
|
||||||
|
{ vector.new(-2,3,-2), vector.new(2,7,2) },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
schem = "rp_default_fir_candle_h1.mts",
|
||||||
|
offset = vector.new(-1, -1, -1),
|
||||||
|
space = {
|
||||||
|
{ vector.new(0,0,0), vector.new(0,5,0) },
|
||||||
|
{ vector.new(-1,2,-1), vector.new(1,5,1) },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
["fir_swamp"] = {
|
["fir_swamp"] = {{
|
||||||
schem = "rp_default_fir_tree_swamp.mts",
|
schem = "rp_default_fir_tree_swamp.mts",
|
||||||
offset = vector.new(-2, -1, -2),
|
offset = vector.new(-2, -1, -2),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
{ vector.new(-2,2,-2), vector.new(2,6,2) },
|
{ vector.new(-2,2,-2), vector.new(2,6,2) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
|
["dry_bush"] = {{
|
||||||
|
|
||||||
["dry_bush"] = {
|
|
||||||
schem = "rp_default_dry_bush.mts",
|
schem = "rp_default_dry_bush.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
["dry_bush_small"] = {
|
["dry_bush_small"] = {{
|
||||||
schem = "rp_default_dry_bush_small.mts",
|
schem = "rp_default_dry_bush_small.mts",
|
||||||
offset = vector.new(-1, -1, -1),
|
offset = vector.new(-1, -1, -1),
|
||||||
space = {
|
space = {
|
||||||
{ vector.new(0,0,0), vector.new(0,1,0) },
|
{ vector.new(0,0,0), vector.new(0,1,0) },
|
||||||
},
|
},
|
||||||
},
|
}},
|
||||||
}
|
}
|
||||||
|
|
||||||
function default.check_sapling_space(pos, variety)
|
function default.check_sapling_space(pos, variety)
|
||||||
local tdata = tree_data[variety]
|
if not variety then
|
||||||
if not tdata then
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local space = tdata.space
|
local space = variety.space
|
||||||
for i=1, #space do
|
for i=1, #space do
|
||||||
local min, max = space[i][1], space[i][2]
|
local min, max = space[i][1], space[i][2]
|
||||||
min = vector.add(pos, min)
|
min = vector.add(pos, min)
|
||||||
@ -333,16 +378,24 @@ end
|
|||||||
-- Grow a sapling at pos
|
-- Grow a sapling at pos
|
||||||
function default.grow_sapling(pos)
|
function default.grow_sapling(pos)
|
||||||
local function grow(variety)
|
local function grow(variety)
|
||||||
local tdata = tree_data[variety]
|
if not variety then
|
||||||
if not tdata then
|
minetest.log("error", "[rp_default] Unknown sapling variety in default.grow_sapling!")
|
||||||
minetest.log("error", "[rp_default] Unknown sapling variety in default.grow_sapling!")
|
return
|
||||||
return
|
end
|
||||||
|
local opos = vector.add(pos, variety.offset)
|
||||||
|
local replacements = variety.replacements or {}
|
||||||
|
local schem = variety.schem
|
||||||
|
if not schem then
|
||||||
|
local r = math.random(1, #variety.schems)
|
||||||
|
schem = variety.schems[r]
|
||||||
|
end
|
||||||
|
if not schem then
|
||||||
|
minetest.log("error", "[rp_default] Invalid or missing schem/schems definition in default.grow_sapling!")
|
||||||
|
return
|
||||||
end
|
end
|
||||||
local opos = vector.add(pos, tdata.offset)
|
|
||||||
local replacements = tdata.replacements or {}
|
|
||||||
minetest.place_schematic(
|
minetest.place_schematic(
|
||||||
opos,
|
opos,
|
||||||
minetest.get_modpath("rp_default") .. "/schematics/" .. tdata.schem,
|
minetest.get_modpath("rp_default") .. "/schematics/" .. schem,
|
||||||
"random", replacements, false)
|
"random", replacements, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -361,16 +414,33 @@ function default.grow_sapling(pos)
|
|||||||
elseif minetest.get_item_group(belownode.name, "dry_dirt") == 1 then
|
elseif minetest.get_item_group(belownode.name, "dry_dirt") == 1 then
|
||||||
dirttype = "dry"
|
dirttype = "dry"
|
||||||
end
|
end
|
||||||
local variety = grows_to[dirttype]
|
local variety_name = grows_to[dirttype]
|
||||||
if not variety then
|
if not variety_name then
|
||||||
dirttype = "default"
|
dirttype = "default"
|
||||||
variety = grows_to[dirttype]
|
variety_name = grows_to[dirttype]
|
||||||
|
end
|
||||||
|
local varieties = tree_data[variety_name]
|
||||||
|
local enough_space = false
|
||||||
|
local variety
|
||||||
|
-- Progressively try out tree varieties
|
||||||
|
for v=1, #varieties do
|
||||||
|
variety = varieties[v]
|
||||||
|
enough_space = default.check_sapling_space(pos, variety)
|
||||||
|
if enough_space then
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
local enough_space = default.check_sapling_space(pos, variety)
|
|
||||||
|
|
||||||
|
-- Use default variety if none of the previously checked varieties fit
|
||||||
if not enough_space and dirttype ~= "default" then
|
if not enough_space and dirttype ~= "default" then
|
||||||
variety = grows_to["default"]
|
varieties = grows_to["default"]
|
||||||
enough_space = default.check_sapling_space(pos, variety)
|
for v=1, #varieties do
|
||||||
|
variety = varieties[v]
|
||||||
|
enough_space = default.check_sapling_space(pos, variety)
|
||||||
|
if enough_space then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not enough_space then
|
if not enough_space then
|
||||||
@ -382,7 +452,7 @@ function default.grow_sapling(pos)
|
|||||||
|
|
||||||
minetest.after(0, grow, variety)
|
minetest.after(0, grow, variety)
|
||||||
|
|
||||||
minetest.log("action", "[rp_default] Sapling of type '" .. variety .. "' grows at " ..
|
minetest.log("action", "[rp_default] Sapling of type '" .. variety_name .. "' grows at " ..
|
||||||
minetest.pos_to_string(pos))
|
minetest.pos_to_string(pos))
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
BIN
mods/rp_default/schematics/rp_default_fir_candle_h1.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_candle_h1.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_candle_h2.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_candle_h2.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_candle_h3.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_candle_h3.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h1.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h1.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h2.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h2.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h3.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s1_h3.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h1.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h1.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h2.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h2.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h3.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s2_h3.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h1.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h1.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h2.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h2.mts
Normal file
Binary file not shown.
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h3.mts
Normal file
BIN
mods/rp_default/schematics/rp_default_fir_tall_s3_h3.mts
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user