1
0
mirror of https://github.com/mt-mods/plantlife_modpack.git synced 2025-06-28 14:16:11 +02:00

Imported dryplants and ferns mods and all components of the Undergrowth modpack

This commit is contained in:
Vanessa Ezekowitz
2014-08-12 15:08:11 -04:00
parent da211cc07d
commit 3b7b242481
258 changed files with 5181 additions and 1 deletions

133
trunks/crafting.lua Normal file
View File

@ -0,0 +1,133 @@
-- Code by Mossmanikin
-----------------------------------------------------------------------------------------------
-- TWiGS
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- *leaves --> twigs
output = "trunks:twig_1 2",
recipe = {{"group:leafdecay"}}
})
if minetest.get_modpath("moretrees") ~= nil then
minetest.register_craft({ -- moretrees_leaves --> twigs
output = "trunks:twig_1 2",
recipe = {{"group:moretrees_leaves"}}
})
minetest.register_craft({ -- except moretrees:palm_leaves
output = "moretrees:palm_leaves",
recipe = {{"moretrees:palm_leaves"}}
})
end
if minetest.get_modpath("bushes") ~= nil then
minetest.register_craft({ -- BushLeaves --> twigs
output = "trunks:twig_1 2",
recipe = {{"bushes:BushLeaves1"}}
})
minetest.register_craft({
output = "trunks:twig_1 2",
recipe = {{"bushes:BushLeaves2"}}
})
minetest.register_craft({ -- bushbranches --> twigs
output = "trunks:twig_1 4",
recipe = {{"bushes:bushbranches1"}}
})
minetest.register_craft({
output = "trunks:twig_1 4",
recipe = {{"bushes:bushbranches2"}}
})
minetest.register_craft({
output = "trunks:twig_1 4",
recipe = {{"bushes:bushbranches2a"}}
})
minetest.register_craft({
output = "trunks:twig_1 4",
recipe = {{"bushes:bushbranches3"}}
})
end
minetest.register_craft({ -- twigs block --> twigs
output = "trunks:twig_1 8",
recipe = {{"trunks:twigs"}}
})
minetest.register_craft({ -- twigs_slab --> twigs
output = "trunks:twig_1 4",
recipe = {{"trunks:twigs_slab"}}
})
minetest.register_craft({ -- twigs_roof --> twigs
output = "trunks:twig_1 4",
recipe = {{"trunks:twigs_roof"}}
})
minetest.register_craft({ -- twigs_roof_corner --> twigs
output = "trunks:twig_1 3",
recipe = {{"trunks:twigs_roof_corner"}}
})
minetest.register_craft({ -- twigs_roof_corner_2 --> twigs
output = "trunks:twig_1 3",
recipe = {{"trunks:twigs_roof_corner_2"}}
})
-----------------------------------------------------------------------------------------------
-- STiCK
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twig --> stick
output = "default:stick",
recipe = {{"trunks:twig_1"}}
})
-----------------------------------------------------------------------------------------------
-- TWiGS BLoCK
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twigs --> twigs block
output = "trunks:twigs",
recipe = {
{"trunks:twig_1","trunks:twig_1","trunks:twig_1"},
{"trunks:twig_1", "" ,"trunks:twig_1"},
{"trunks:twig_1","trunks:twig_1","trunks:twig_1"},
}
})
-----------------------------------------------------------------------------------------------
-- TWiGS SLaBS
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twigs blocks --> twigs_slabs
output = "trunks:twigs_slab 6",
recipe = {
{"trunks:twigs","trunks:twigs","trunks:twigs"},
}
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooFS
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twigs blocks --> twigs_roofs
output = "trunks:twigs_roof 4",
recipe = {
{"trunks:twigs",""},
{"","trunks:twigs"},
}
})
minetest.register_craft({
output = "trunks:twigs_roof 4",
recipe = {
{"","trunks:twigs"},
{"trunks:twigs",""},
}
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooF CoRNeRS
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twigs blocks --> twigs_roof_corners
output = "trunks:twigs_roof_corner 8",
recipe = {
{ "" ,"trunks:twigs", "" },
{"trunks:twigs", "" ,"trunks:twigs"},
}
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooF CoRNeRS 2
-----------------------------------------------------------------------------------------------
minetest.register_craft({ -- twigs blocks --> twigs_roof_corner_2's
output = "trunks:twigs_roof_corner_2 8",
recipe = {
{"trunks:twigs", "" ,"trunks:twigs"},
{ "" ,"trunks:twigs", "" },
}
})

6
trunks/depends.txt Normal file
View File

@ -0,0 +1,6 @@
default
plants_lib
bushes?
ferns?
moretrees?
trees?

555
trunks/generating.lua Normal file
View File

@ -0,0 +1,555 @@
-- Code by Mossmanikin, Neuromancer, and others
local function clone_node(name)
node2={}
node=minetest.registered_nodes[name]
for k,v in pairs(node) do
node2[k]=v
end
return node2
end
-----------------------------------------------------------------------------------------------
-- TWiGS
-----------------------------------------------------------------------------------------------
abstract_trunks.place_twig = function(pos)
local twig_size = math.random(1,27)
local right_here = {x=pos.x , y=pos.y+1, z=pos.z }
local north = {x=pos.x , y=pos.y+1, z=pos.z+1}
local north_east = {x=pos.x+1, y=pos.y+1, z=pos.z+1}
local east = {x=pos.x+1, y=pos.y+1, z=pos.z }
local south_east = {x=pos.x+1, y=pos.y+1, z=pos.z-1}
local south = {x=pos.x , y=pos.y+1, z=pos.z-1}
local south_west = {x=pos.x-1, y=pos.y+1, z=pos.z-1}
local west = {x=pos.x-1, y=pos.y+1, z=pos.z }
local north_west = {x=pos.x-1, y=pos.y+1, z=pos.z+1}
local node_here = minetest.get_node(right_here)
local node_north = minetest.get_node(north)
local node_n_e = minetest.get_node(north_east)
local node_east = minetest.get_node(east)
local node_s_e = minetest.get_node(south_east)
local node_south = minetest.get_node(south)
local node_s_w = minetest.get_node(south_west)
local node_west = minetest.get_node(west)
local node_n_w = minetest.get_node(north_west)
-- small twigs
if twig_size <= 16 then
minetest.add_node(right_here, {name="trunks:twig_"..math.random(1,4), param2=math.random(0,3)})
end
-- big twigs
if Big_Twigs == true then
-- big twig 1
if twig_size == 17 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z+1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_5"})
end
if minetest.registered_nodes[node_n_e.name].buildable_to then
minetest.add_node(north_east, {name="trunks:twig_7"})
end
if minetest.registered_nodes[node_east.name].buildable_to then
minetest.add_node(east, {name="trunks:twig_8"})
end
end
elseif twig_size == 18 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_5", param2=1})
end
if minetest.registered_nodes[node_s_e.name].buildable_to then
minetest.add_node(south_east, {name="trunks:twig_7", param2=1})
end
if minetest.registered_nodes[node_south.name].buildable_to then
minetest.add_node(south, {name="trunks:twig_8", param2=1})
end
end
elseif twig_size == 19 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_5", param2=2})
end
if minetest.registered_nodes[node_s_w.name].buildable_to then
minetest.add_node(south_west, {name="trunks:twig_7", param2=2})
end
if minetest.registered_nodes[node_west.name].buildable_to then
minetest.add_node(west, {name="trunks:twig_8", param2=2})
end
end
elseif twig_size == 20 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z+1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_5", param2=3})
end
if minetest.registered_nodes[node_n_w.name].buildable_to then
minetest.add_node(north_west, {name="trunks:twig_7", param2=3})
end
if minetest.registered_nodes[node_north.name].buildable_to then
minetest.add_node(north, {name="trunks:twig_8", param2=3})
end
end
-- big twig 2
elseif twig_size == 21 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z+1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_9"})
end
if minetest.registered_nodes[node_north.name].buildable_to then
minetest.add_node(north, {name="trunks:twig_10"})
end
if minetest.registered_nodes[node_n_e.name].buildable_to then
minetest.add_node(north_east, {name="trunks:twig_11"})
end
end
elseif twig_size == 22 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_9", param2=1})
end
if minetest.registered_nodes[node_east.name].buildable_to then
minetest.add_node(east, {name="trunks:twig_10", param2=1})
end
if minetest.registered_nodes[node_s_e.name].buildable_to then
minetest.add_node(south_east, {name="trunks:twig_11", param2=1})
end
end
elseif twig_size == 23 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z-1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_9", param2=2})
end
if minetest.registered_nodes[node_south.name].buildable_to then
minetest.add_node(south, {name="trunks:twig_10", param2=2})
end
if minetest.registered_nodes[node_s_w.name].buildable_to then
minetest.add_node(south_west, {name="trunks:twig_11", param2=2})
end
end
elseif twig_size == 24 then
if not (minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}).name].buildable_to
or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z+1}).name].buildable_to) then
if minetest.registered_nodes[node_here.name].buildable_to then
minetest.add_node(right_here, {name="trunks:twig_9", param2=3})
end
if minetest.registered_nodes[node_west.name].buildable_to then
minetest.add_node(west, {name="trunks:twig_10", param2=3})
end
if minetest.registered_nodes[node_n_w.name].buildable_to then
minetest.add_node(north_west, {name="trunks:twig_11", param2=3})
end
end
elseif twig_size <= 25 then
minetest.add_node(right_here, {name="trunks:twig_"..math.random(12,13), param2=math.random(0,3)})
end
end
end
if Twigs_on_ground == true then
plantslib:register_generate_plant({
surface = {"default:dirt_with_grass"},
max_count = Twigs_on_ground_Max_Count,
rarity = Twigs_on_ground_Rarity,
min_elevation = 1,
max_elevation = 40,
near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"},
near_nodes_size = 3,
near_nodes_vertical = 1,
near_nodes_count = 1,
plantlife_limit = -0.9,
},
"abstract_trunks.place_twig"
)
end
if Twigs_on_water == true then
plantslib:register_generate_plant({
surface = {"default:water_source"},
max_count = Twigs_on_water_Max_Count,
rarity = Twigs_on_water_Rarity,
min_elevation = 1,
max_elevation = 40,
near_nodes = {"group:tree"},
near_nodes_size = 3,
near_nodes_vertical = 1,
near_nodes_count = 1,
plantlife_limit = -0.9,
},
"abstract_trunks.place_twig"
)
end
-----------------------------------------------------------------------------------------------
-- TRuNKS
-----------------------------------------------------------------------------------------------
local TRuNKS = {
-- MoD TRuNK NR
{"default", "tree", 1},
{"default", "jungletree", 2},
{"trees", "tree_conifer", 3},
{"trees", "tree_mangrove", 4},
{"trees", "tree_palm", 5},
{"moretrees", "apple_tree_trunk", 6},
{"moretrees", "beech_trunk", 7},
{"moretrees", "birch_trunk", 8},
{"moretrees", "fir_trunk", 9},
{"moretrees", "oak_trunk", 10},
{"moretrees", "palm_trunk", 11},
{"moretrees", "pine_trunk", 12},
{"moretrees", "rubber_tree_trunk", 13},
{"moretrees", "rubber_tree_trunk_empty", 14},
{"moretrees", "sequoia_trunk", 15},
{"moretrees", "spruce_trunk", 16},
{"moretrees", "willow_trunk", 17},
}
if Horizontal_Trunks == true then -- see settings.txt
for i in pairs(TRuNKS) do
local MoD = TRuNKS[i][1]
local TRuNK = TRuNKS[i][2]
local NR = TRuNKS[i][3]
if minetest.get_modpath(MoD) ~= nil
and NR < 6 then -- moretrees trunks allready have facedir
trunkname = MoD..":"..TRuNK
temptrunk = clone_node(trunkname)
temptrunk.paramtype2 = "facedir"
minetest.register_node(":"..trunkname, temptrunk)
end
end
end
abstract_trunks.place_trunk = function(pos)
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
local north = {x=pos.x, y=pos.y+1, z=pos.z+1}
local north2 = {x=pos.x, y=pos.y+1, z=pos.z+2}
local south = {x=pos.x, y=pos.y+1, z=pos.z-1}
local south2 = {x=pos.x, y=pos.y+1, z=pos.z-2}
local west = {x=pos.x-1, y=pos.y+1, z=pos.z}
local west2 = {x=pos.x-2, y=pos.y+1, z=pos.z}
local east = {x=pos.x+1, y=pos.y+1, z=pos.z}
local east2 = {x=pos.x+2, y=pos.y+1, z=pos.z}
local node_here = minetest.get_node(right_here)
local node_north = minetest.get_node(north)
local node_north2 = minetest.get_node(north2)
local node_south = minetest.get_node(south)
local node_south2 = minetest.get_node(south2)
local node_west = minetest.get_node(west)
local node_west2 = minetest.get_node(west2)
local node_east = minetest.get_node(east)
local node_east2 = minetest.get_node(east2)
if minetest.registered_nodes[node_here.name].buildable_to then -- instead of check_air = true,
for i in pairs(TRuNKS) do
local MoD = TRuNKS[i][1]
local TRuNK = TRuNKS[i][2]
local NR = TRuNKS[i][3]
local chance = math.random(1, 17)
local length = math.random(3,5)
if chance == NR then
local trunk_type = math.random(1,3)
if trunk_type == 1 then
if minetest.get_modpath(MoD) ~= nil then
minetest.add_node(right_here, {name=MoD..":"..TRuNK})
else
minetest.add_node(right_here, {name="default:tree"})
end
elseif trunk_type == 2 and Horizontal_Trunks == true then
if minetest.get_modpath(MoD) ~= nil then
if minetest.registered_nodes[node_north.name].buildable_to then
minetest.add_node(north, {name=MoD..":"..TRuNK, param2=4})
end
if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
minetest.add_node(north2, {name=MoD..":"..TRuNK, param2=4})
end
minetest.add_node(right_here, {name=MoD..":"..TRuNK, param2=4})
if minetest.registered_nodes[node_south.name].buildable_to then
minetest.add_node(south, {name=MoD..":"..TRuNK, param2=4})
end
if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
minetest.add_node(south2, {name=MoD..":"..TRuNK, param2=4})
end
else
if minetest.registered_nodes[node_north.name].buildable_to then
minetest.add_node(north, {name="default:tree", param2=4})
end
if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
minetest.add_node(north2, {name="default:tree", param2=4})
end
minetest.add_node(right_here, {name="default:tree", param2=4})
if minetest.registered_nodes[node_south.name].buildable_to then
minetest.add_node(south, {name="default:tree", param2=4})
end
if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
minetest.add_node(south2, {name="default:tree", param2=4})
end
end
elseif trunk_type == 3 and Horizontal_Trunks == true then
if minetest.get_modpath(MoD) ~= nil then
if minetest.registered_nodes[node_west.name].buildable_to then
minetest.add_node(west, {name=MoD..":"..TRuNK, param2=12})
end
if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
minetest.add_node(west2, {name=MoD..":"..TRuNK, param2=12})
end
minetest.add_node(right_here, {name=MoD..":"..TRuNK, param2=12})
if minetest.registered_nodes[node_east.name].buildable_to then
minetest.add_node(east, {name=MoD..":"..TRuNK, param2=12})
end
if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
minetest.add_node(east2, {name=MoD..":"..TRuNK, param2=12})
end
else
if minetest.registered_nodes[node_west.name].buildable_to then
minetest.add_node(west, {name="default:tree", param2=12})
end
if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
minetest.add_node(west2, {name="default:tree", param2=12})
end
minetest.add_node(right_here, {name="default:tree", param2=12})
if minetest.registered_nodes[node_east.name].buildable_to then
minetest.add_node(east, {name="default:tree", param2=12})
end
if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
minetest.add_node(east2, {name="default:tree", param2=12})
end
end
end
end
end
end
end
plantslib:register_generate_plant({
surface = {"default:dirt_with_grass"},
max_count = Trunks_Max_Count, -- 320,
rarity = Trunks_Rarity, -- 99,
min_elevation = 1,
max_elevation = 40,
avoid_nodes = {"group:tree"},
avoid_radius = 1,
near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"},
near_nodes_size = 3,
near_nodes_vertical = 1,
near_nodes_count = 1,
plantlife_limit = -0.9,
check_air = false,
},
"abstract_trunks.place_trunk"
)
-----------------------------------------------------------------------------------------------
-- MoSS & FuNGuS -- on ground
-----------------------------------------------------------------------------------------------
if Moss_on_ground == true then
abstract_trunks.grow_moss_on_ground = function(pos)
local on_ground = {x=pos.x, y=pos.y+1, z=pos.z}
local moss_type = math.random(1,21)
if moss_type == 1 then
minetest.add_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3)})
else
minetest.add_node(on_ground, {name="trunks:moss", param2=math.random(0,3)})
end
end
plantslib:register_generate_plant({
surface = {"default:dirt_with_grass"},
max_count = Moss_on_ground_Max_Count,
rarity = Moss_on_ground_Rarity,
min_elevation = 1,
max_elevation = 40,
near_nodes = {
"group:tree",
"ferns:fern_03",
"ferns:fern_02",
"ferns:fern_01"
},
near_nodes_size = 2,
near_nodes_vertical = 1,
near_nodes_count = 1,
plantlife_limit = -0.9,
},
"abstract_trunks.grow_moss_on_ground"
)
end
-----------------------------------------------------------------------------------------------
-- MoSS & FuNGuS -- on trunks
-----------------------------------------------------------------------------------------------
if Moss_on_trunk == true then
abstract_trunks.grow_moss_on_trunk = function(pos)
local on_ground = {x=pos.x, y=pos.y+1, z=pos.z}
local at_side_n = {x=pos.x, y=pos.y, z=pos.z+1}
local at_side_e = {x=pos.x+1, y=pos.y, z=pos.z}
local at_side_s = {x=pos.x, y=pos.y, z=pos.z-1}
local at_side_w = {x=pos.x-1, y=pos.y, z=pos.z}
local undrneath = {x=pos.x, y=pos.y-1, z=pos.z}
local node_here = minetest.get_node(on_ground)
local node_north = minetest.get_node(at_side_n)
local node_east = minetest.get_node(at_side_e)
local node_south = minetest.get_node(at_side_s)
local node_west = minetest.get_node(at_side_w)
local node_under = minetest.get_node(undrneath)
--if minetest.get_item_group(node_under.name, "tree") < 1 then
local moss_type = math.random(1,41)
if minetest.registered_nodes[node_here.name].buildable_to then -- instead of check_air = true,
if moss_type == 1 then
minetest.add_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3) --[[1]]})
elseif moss_type < 22 then
minetest.add_node(on_ground, {name="trunks:moss", param2=math.random(0,3) --[[1]]})
end
end
local moss_type = math.random(1,31) -- cliche of more moss at north
if minetest.registered_nodes[node_north.name].buildable_to then -- instead of check_air = true,
if moss_type == 1 then
minetest.add_node(at_side_n, {name="trunks:moss_fungus", param2=math.random(4,7)}) -- 5,4,6,7
elseif moss_type < 22 then
minetest.add_node(at_side_n, {name="trunks:moss", param2=math.random(4,7)})
end
end
local moss_type = math.random(1,41)
if minetest.registered_nodes[node_east.name].buildable_to then -- instead of check_air = true,
if moss_type == 1 then
minetest.add_node(at_side_e, {name="trunks:moss_fungus", param2=math.random(12,15)})
elseif moss_type < 22 then
minetest.add_node(at_side_e, {name="trunks:moss", param2=math.random(12,15)})
end
end
local moss_type = math.random(1,41)
if minetest.registered_nodes[node_south.name].buildable_to then -- instead of check_air = true,
if moss_type == 1 then
minetest.add_node(at_side_s, {name="trunks:moss_fungus", param2=math.random(8,11)})
elseif moss_type < 22 then
minetest.add_node(at_side_s, {name="trunks:moss", param2=math.random(8,11)})
end
end
local moss_type = math.random(1,41)
if minetest.registered_nodes[node_west.name].buildable_to then -- instead of check_air = true,
if moss_type == 1 then
minetest.add_node(at_side_w, {name="trunks:moss_fungus", param2=math.random(16,19)})
elseif moss_type < 22 then
minetest.add_node(at_side_w, {name="trunks:moss", param2=math.random(16,19)})
end
end
--end
end
plantslib:register_generate_plant({
surface = {
"default:tree",
"default:jungletree",
"trees:tree_conifer",
"trees:tree_mangrove",
--"trees:tree_palm",
"moretrees:apple_tree_trunk",
"moretrees:beech_trunk",
"moretrees:birch_trunk",
"moretrees:fir_trunk",
"moretrees:oak_trunk",
--"moretrees:palm_trunk",
"moretrees:pine_trunk",
"moretrees:rubber_tree_trunk",
"moretrees:rubber_tree_trunk_empty",
"moretrees:sequoia_trunk",
"moretrees:spruce_trunk",
"moretrees:willow_trunk",
"default:mossycobble"
},
max_count = Moss_on_trunk_Max_Count,
rarity = Moss_on_trunk_Rarity,
min_elevation = 1,
max_elevation = 40,
plantlife_limit = -0.9,
check_air = false,
},
"abstract_trunks.grow_moss_on_trunk"
)
end
-----------------------------------------------------------------------------------------------
-- RooTS
-----------------------------------------------------------------------------------------------
if Roots == true then -- see settings.txt
abstract_trunks.grow_roots = function(pos)
local twig_size = math.random(1,27)
local right_here = {x=pos.x , y=pos.y , z=pos.z }
local below = {x=pos.x , y=pos.y-1, z=pos.z }
local north = {x=pos.x , y=pos.y , z=pos.z+1}
local east = {x=pos.x+1, y=pos.y , z=pos.z }
local south = {x=pos.x , y=pos.y , z=pos.z-1}
local west = {x=pos.x-1, y=pos.y , z=pos.z }
local node_here = minetest.get_node(right_here)
local node_below = minetest.get_node(below)
local node_north = minetest.get_node(north)
local node_east = minetest.get_node(east)
local node_south = minetest.get_node(south)
local node_west = minetest.get_node(west)
for i in pairs(TRuNKS) do
local MoD = TRuNKS[i][1]
local TRuNK = TRuNKS[i][2]
if minetest.get_modpath(MoD) ~= nil
and node_here.name == MoD..":"..TRuNK
and string.find(node_below.name, "dirt")
and node_here.param2 == 0 then
if minetest.registered_nodes[node_north.name].buildable_to then
minetest.add_node(north, {name="trunks:"..TRuNK.."root", param2=2})
end
if minetest.registered_nodes[node_east.name].buildable_to then
minetest.add_node(east, {name="trunks:"..TRuNK.."root", param2=3})
end
if minetest.registered_nodes[node_south.name].buildable_to then
minetest.add_node(south, {name="trunks:"..TRuNK.."root", param2=0})
end
if minetest.registered_nodes[node_west.name].buildable_to then
minetest.add_node(west, {name="trunks:"..TRuNK.."root", param2=1})
end
end
end
end
plantslib:register_generate_plant({
surface = {"group:tree"},
max_count = 1000,
rarity = 1,
min_elevation = 1,
max_elevation = 40,
near_nodes = {"default:dirt_with_grass"},
near_nodes_size = 1,
near_nodes_vertical = 1,
near_nodes_count = 1,
plantlife_limit = -1,
check_air = false,
},
"abstract_trunks.grow_roots"
)
end

17
trunks/init.lua Normal file
View File

@ -0,0 +1,17 @@
-----------------------------------------------------------------------------------------------
local title = "Trunks"
local version = "0.1.4"
local mname = "trunks"
-----------------------------------------------------------------------------------------------
-- Code by Mossmanikin & Neuromancer
abstract_trunks = {}
dofile(minetest.get_modpath("trunks").."/trunks_settings.txt")
dofile(minetest.get_modpath("trunks").."/generating.lua")
dofile(minetest.get_modpath("trunks").."/nodes.lua")
dofile(minetest.get_modpath("trunks").."/crafting.lua")
-----------------------------------------------------------------------------------------------
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
-----------------------------------------------------------------------------------------------

359
trunks/nodes.lua Normal file
View File

@ -0,0 +1,359 @@
-- Code by Mossmanikin & Neuromancer
-----------------------------------------------------------------------------------------------
-- TWiGS
-----------------------------------------------------------------------------------------------
-- For compatibility with older stuff
minetest.register_alias("trunks:twig", "trunks:twig_1")
local flat_stick = {-1/2, -1/2, -1/2, 1/2, -7/16, 1/2}
local NoDe = { {1}, {2}, {3}, {4}, {5}, --[[{6},]] {7}, {8}, {9}, {10}, {11}, {12}, {13} }
for i in pairs(NoDe) do
local NR = NoDe[i][1]
local iNV = NR - 1
minetest.register_node("trunks:twig_"..NR, {
description = "Twig",
inventory_image = "trunks_twig_"..NR..".png",
wield_image = "trunks_twig_"..NR..".png",
drawtype = "nodebox",
tiles = {
"trunks_twig_"..NR..".png",
"trunks_twig_"..NR..".png^[transformFY", -- mirror
"trunks_twig_6.png" -- empty
},
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
sunlight_propagates = true,
buildable_to = true,
node_box = {type = "fixed", fixed = flat_stick},
groups = {
dig_immediate=3, -- almost literally immediate, like just picking up
attached_node=1,
not_in_creative_inventory=iNV
},
drop = "trunks:twig_1",
sounds = default.node_sound_leaves_defaults(),
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
local direction = minetest.dir_to_facedir(placer:get_look_dir())
if minetest.get_node(pt.above).name=="air" then
minetest.set_node(pt.above, {name="trunks:twig_"..math.random(1,4), param2=direction})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
end,
})
end
-----------------------------------------------------------------------------------------------
-- MoSS
-----------------------------------------------------------------------------------------------
local flat_moss = {-1/2, -1/2, -1/2, 1/2, -15/32--[[<-flickers if smaller]], 1/2}
minetest.register_node("trunks:moss", {
description = "Moss",
drawtype = "nodebox",--"signlike",
tiles = {"trunks_moss.png"},
inventory_image = "trunks_moss.png",
wield_image = "trunks_moss.png",
paramtype = "light",
paramtype2 = "facedir",--"wallmounted",
sunlight_propagates = true,
walkable = false,
node_box = {type = "fixed", fixed = flat_moss},
selection_box = {type = "fixed", fixed = flat_stick},--{type = "wallmounted"},
groups = {dig_immediate=2--[[,attached_node=1]]}, -- falling moss is too annoying
sounds = default.node_sound_leaves_defaults(),
})
-----------------------------------------------------------------------------------------------
-- MoSS & FuNGuS
-----------------------------------------------------------------------------------------------
minetest.register_node("trunks:moss_fungus", {
description = "Moss & Fungus",
drawtype = "nodebox",--"signlike",
tiles = {"trunks_moss_fungus.png"},
inventory_image = "trunks_moss_fungus.png",
wield_image = "trunks_moss_fungus.png",
paramtype = "light",
paramtype2 = "facedir",--"wallmounted",
sunlight_propagates = true,
walkable = false,
node_box = {type = "fixed", fixed = flat_moss},
selection_box = {type = "fixed", fixed = flat_stick},--{type = "wallmounted"},
groups = {dig_immediate=2--[[,attached_node=1]]}, -- falling moss is too annoying
sounds = default.node_sound_leaves_defaults(),
})
-----------------------------------------------------------------------------------------------
-- TWiGS BLoCK
-----------------------------------------------------------------------------------------------
minetest.register_alias("woodstuff:twigs", "trunks:twigs")
minetest.register_node("trunks:twigs", {
description = "Twigs Block",
paramtype2 = "facedir",
tiles = {"trunks_twigs.png"},
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
-----------------------------------------------------------------------------------------------
-- TWiGS SLaB
-----------------------------------------------------------------------------------------------
minetest.register_alias("woodstuff:twigs_slab", "trunks:twigs_slab")
minetest.register_node("trunks:twigs_slab", {
description = "Twigs Slab",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"trunks_twigs.png"},
node_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
},
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooF
-----------------------------------------------------------------------------------------------
minetest.register_alias("woodstuff:twigs_roof", "trunks:twigs_roof")
minetest.register_node("trunks:twigs_roof", {
description = "Twigs Roof",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"trunks_twigs.png"},
node_box = {
type = "fixed",
-- { left, bottom, front, right, top, back }
fixed = {
{-1/2, 0, 0, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, 0, 0},
}
},
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooF CoRNeR
-----------------------------------------------------------------------------------------------
minetest.register_alias("woodstuff:twigs_roof_corner", "trunks:twigs_roof_corner")
minetest.register_node("trunks:twigs_roof_corner", {
description = "Twigs Roof Corner",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"trunks_twigs_corner.png",
"trunks_twigs_corner.png",
"trunks_twigs.png"
},
node_box = {
type = "fixed",
-- { left, bottom, front, right, top, back }
fixed = {
{-1/2, 0, 0, 0, 1/2, 1/2},
{0, -1/2, 0, 1/2, 0, 1/2},
{-1/2, -1/2, -1/2, 0, 0, 0},
}
},
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
-----------------------------------------------------------------------------------------------
-- TWiGS RooF CoRNeR 2
-----------------------------------------------------------------------------------------------
minetest.register_alias("woodstuff:twigs_roof_corner_2", "trunks:twigs_roof_corner_2")
minetest.register_node("trunks:twigs_roof_corner_2", {
description = "Twigs Roof Corner 2",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"trunks_twigs_corner.png",
"trunks_twigs_corner.png",
"trunks_twigs.png"
},
node_box = {
type = "fixed",
-- { left, bottom, front, right, top, back }
fixed = {
{-1/2, -1/2, 0, 0, 0, 1/2},
{0, 0, 0, 1/2, 1/2, 1/2},
{-1/2, 0, -1/2, 0, 1/2, 0},
}
},
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
if Auto_Roof_Corner == true then
local roof = "trunks:twigs_roof"
local corner = "trunks:twigs_roof_corner"
local corner_2 = "trunks:twigs_roof_corner_2"
minetest.register_abm({
nodenames = {roof},
interval = 1,
chance = 1,
action = function(pos)
local node_east = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z })
local node_west = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z })
local node_north = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
local node_south = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
-- corner 1
if ((node_west.name == roof and node_west.param2 == 0)
or (node_west.name == corner and node_west.param2 == 1))
and ((node_north.name == roof and node_north.param2 == 3)
or (node_north.name == corner and node_north.param2 == 3))
then
minetest.add_node(pos, {name=corner, param2=0})
end
if ((node_north.name == roof and node_north.param2 == 1)
or (node_north.name == corner and node_north.param2 == 2))
and ((node_east.name == roof and node_east.param2 == 0)
or (node_east.name == corner and node_east.param2 == 0))
then
minetest.add_node(pos, {name=corner, param2=1})
end
if ((node_east.name == roof and node_east.param2 == 2)
or (node_east.name == corner and node_east.param2 == 3))
and ((node_south.name == roof and node_south.param2 == 1)
or (node_south.name == corner and node_south.param2 == 1))
then
minetest.add_node(pos, {name=corner, param2=2})
end
if ((node_south.name == roof and node_south.param2 == 3)
or (node_south.name == corner and node_south.param2 == 0))
and ((node_west.name == roof and node_west.param2 == 2)
or (node_west.name == corner and node_west.param2 == 2))
then
minetest.add_node(pos, {name=corner, param2=3})
end
-- corner 2
if ((node_west.name == roof and node_west.param2 == 2)
or (node_west.name == corner_2 and node_west.param2 == 1))
and ((node_north.name == roof and node_north.param2 == 1)
or (node_north.name == corner_2 and node_north.param2 == 3))
then
minetest.add_node(pos, {name=corner_2, param2=0})
end
if ((node_north.name == roof and node_north.param2 == 3)
or (node_north.name == corner_2 and node_north.param2 == 2))
and ((node_east.name == roof and node_east.param2 == 2)
or (node_east.name == corner_2 and node_east.param2 == 0))
then
minetest.add_node(pos, {name=corner_2, param2=1})
end
if ((node_east.name == roof and node_east.param2 == 0)
or (node_east.name == corner_2 and node_east.param2 == 3))
and ((node_south.name == roof and node_south.param2 == 3)
or (node_south.name == corner_2 and node_south.param2 == 1))
then
minetest.add_node(pos, {name=corner_2, param2=2})
end
if ((node_south.name == roof and node_south.param2 == 1)
or (node_south.name == corner_2 and node_south.param2 == 0))
and ((node_west.name == roof and node_west.param2 == 0)
or (node_west.name == corner_2 and node_west.param2 == 2))
then
minetest.add_node(pos, {name=corner_2, param2=3})
end
end,
})
end
-- MM: The following stuff is just for testing purposes for now; no generating of roots.
-- I'm not satisfied with this; they should be either bigger or a different drawtype.
-----------------------------------------------------------------------------------------------
-- RooTS
-----------------------------------------------------------------------------------------------
if Roots == true then -- see settings.txt
local roots_cube = {-2/16, -1/2, -3/16, 2/16, 1/16, 1/2}
local roots_sheet = {0, -1/2, -1/2, 0, 1/16, 1/2}
local TRuNKS = {
-- MoD TRuNK
{"default", "tree" },
{"default", "jungletree" },
{"trees", "tree_conifer" },
{"trees", "tree_mangrove" },
{"trees", "tree_palm" },
{"moretrees", "apple_tree_trunk" },
{"moretrees", "beech_trunk" },
{"moretrees", "birch_trunk" },
{"moretrees", "fir_trunk" },
{"moretrees", "oak_trunk" },
{"moretrees", "palm_trunk" },
{"moretrees", "pine_trunk" },
{"moretrees", "rubber_tree_trunk" },
{"moretrees", "rubber_tree_trunk_empty" },
{"moretrees", "sequoia_trunk" },
{"moretrees", "spruce_trunk" },
{"moretrees", "willow_trunk" },
}
for i in pairs(TRuNKS) do
local MoD = TRuNKS[i][1]
local TRuNK = TRuNKS[i][2]
if minetest.get_modpath(MoD) ~= nil then
local des = minetest.registered_nodes[MoD..":"..TRuNK].description
minetest.register_node("trunks:"..TRuNK.."root", {
description = des.." Root",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
--[[top]] MoD.."_"..TRuNK..".png",
--[[bottom]] MoD.."_"..TRuNK..".png",
--[[right]] MoD.."_"..TRuNK..".png^trunks_root_mask.png^[makealpha:0,0,0",
--[[left]] MoD.."_"..TRuNK..".png^trunks_root_mask.png^[transformFX^[makealpha:0,0,0",
--[[back]] MoD.."_"..TRuNK..".png",
--[[front]] MoD.."_"..TRuNK..".png"
},
drawtype = "nodebox",
selection_box = {type = "fixed", fixed = roots_cube},
node_box = {type = "fixed", fixed = roots_sheet},
groups = {
tree=1,
snappy=1,
choppy=2,
oddly_breakable_by_hand=1,
flammable=2--,
--not_in_creative_inventory=1 -- atm in inv for testing
},
--drop = "trunks:twig_1", -- not sure about this yet
sounds = default.node_sound_wood_defaults(),
})
end
end
end

View File

@ -0,0 +1,34 @@
-------------------------------------------------------------
Credit for textures of "trunks"
-------------------------------------------------------------
(If more than one author is listed the names are in alphabetical order)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FOLDER TEXTURE AUTHORS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
../trunks/textures trunks_moss.png Neuromancer
trunks_moss_fungus.png Neuromancer
trunks_twig_1.png Mossmanikin
trunks_twig_2.png Mossmanikin, Neuromancer
trunks_twig_3.png Mossmanikin, Neuromancer
trunks_twig_4.png Mossmanikin, Neuromancer
trunks_twig_5.png Mossmanikin, Neuromancer
(trunks_twig_6.png) (Mossmanikin)
trunks_twig_7.png Mossmanikin, Neuromancer
trunks_twig_8.png Mossmanikin, Neuromancer
trunks_twig_9.png Mossmanikin, Neuromancer
trunks_twig_10.png Mossmanikin, Neuromancer
trunks_twig_11.png Mossmanikin, Neuromancer
trunks_twigs.png Mossmanikin
trunks_twigs_corner.png Mossmanikin
trunks_twigs_top.png Mossmanikin
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
../trunks/textures/old & unused comboSticks.png Mossmanikin, Neuromancer
comboSticks_2.png Mossmanikin, Neuromancer
trunks_twig_1e.png Mossmanikin, Neuromancer
trunks_twig_1n.png Mossmanikin, Neuromancer
trunks_twig_2n.png Mossmanikin, Neuromancer
trunks_twig_3n.png Mossmanikin, Neuromancer
trunks_twig_4n.png Mossmanikin, Neuromancer
trunks_twig_5-8.png Mossmanikin, Neuromancer
trunks_twig_9-12.png Mossmanikin, Neuromancer
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

View File

@ -0,0 +1,70 @@
-- Settings for generation of stuff (at map-generation time)
Horizontal_Trunks = true
Trunks_Max_Count = 320 -- absolute maximum number in an area of 80x80x80 nodes
Trunks_Rarity = 99 -- larger values make trunks more rare (100 means chance of 0 %)
Big_Twigs = true -- twigs larger than one node
Twigs_on_ground = true
Twigs_on_ground_Max_Count = 640 -- absolute maximum number in an area of 80x80x80 nodes
Twigs_on_ground_Rarity = 66 -- larger values make twigs more rare (100 means chance of 0 %)
Twigs_on_water = true
Twigs_on_water_Max_Count = 320 -- absolute maximum number in an area of 80x80x80 nodes
Twigs_on_water_Rarity = 33 -- larger values make twigs more rare (100 means chance of 0 %)
Moss_on_ground = true
Moss_on_ground_Max_Count = 400 -- absolute maximum number in an area of 80x80x80 nodes
Moss_on_ground_Rarity = 79 -- larger values makes moss more rare (100 means chance of 0 %)
Moss_on_trunk = true
Moss_on_trunk_Max_Count = 640 -- absolute maximum number in an area of 80x80x80 nodes
Moss_on_trunk_Rarity = 24 -- larger values makes moss more rare (100 means chance of 0 %)
Auto_Roof_Corner = true -- behavior is similar (not the same!) to the one of minecraft stairs
Roots = true