update biome_lib, plantlife (which includes switching
to Tenplus1's vines fork), and moretrees
This commit is contained in:
parent
9d67dc5e82
commit
f23603a325
@ -9,6 +9,7 @@
|
||||
-- Various settings - most of these probably won't need to be changed
|
||||
|
||||
biome_lib = {}
|
||||
biome_lib.air = {name = "air"}
|
||||
|
||||
plantslib = setmetatable({}, { __index=function(t,k) print("Use of deprecated function:", k) return biome_lib[k] end })
|
||||
|
||||
@ -233,7 +234,6 @@ function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes,
|
||||
end
|
||||
|
||||
if surface_ok
|
||||
and (not checkair or minetest.get_node(p_top).name == "air")
|
||||
and pos.y >= biome.min_elevation
|
||||
and pos.y <= biome.max_elevation
|
||||
and noise1 > biome.plantlife_limit
|
||||
@ -241,6 +241,7 @@ function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes,
|
||||
and noise2 >= biome.temp_max
|
||||
and noise3 <= biome.humidity_min
|
||||
and noise3 >= biome.humidity_max
|
||||
and (not checkair or minetest.get_node(p_top).name == "air")
|
||||
and (not biome.ncount or #(minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, biome.neighbors)) > biome.ncount)
|
||||
and (not biome.near_nodes or #(minetest.find_nodes_in_area({x=pos.x-biome.near_nodes_size, y=pos.y-biome.near_nodes_vertical, z=pos.z-biome.near_nodes_size}, {x=pos.x+biome.near_nodes_size, y=pos.y+biome.near_nodes_vertical, z=pos.z+biome.near_nodes_size}, biome.near_nodes)) >= biome.near_nodes_count)
|
||||
and math.random(1,100) > biome.rarity
|
||||
@ -267,24 +268,24 @@ function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes,
|
||||
|
||||
if not (biome.avoid_nodes and biome.avoid_radius and minetest.find_node_near(p_top, biome.avoid_radius + math.random(-1.5,2), biome.avoid_nodes)) then
|
||||
if biome.delete_above then
|
||||
minetest.remove_node(p_top)
|
||||
minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z})
|
||||
minetest.swap_node(p_top, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x, y=p_top.y+1, z=p_top.z}, biome_lib.air)
|
||||
end
|
||||
|
||||
if biome.delete_above_surround then
|
||||
minetest.remove_node({x=p_top.x-1, y=p_top.y, z=p_top.z})
|
||||
minetest.remove_node({x=p_top.x+1, y=p_top.y, z=p_top.z})
|
||||
minetest.remove_node({x=p_top.x, y=p_top.y, z=p_top.z-1})
|
||||
minetest.remove_node({x=p_top.x, y=p_top.y, z=p_top.z+1})
|
||||
minetest.swap_node({x=p_top.x-1, y=p_top.y, z=p_top.z}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x+1, y=p_top.y, z=p_top.z}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x, y=p_top.y, z=p_top.z-1}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x, y=p_top.y, z=p_top.z+1}, biome_lib.air)
|
||||
|
||||
minetest.remove_node({x=p_top.x-1, y=p_top.y+1, z=p_top.z})
|
||||
minetest.remove_node({x=p_top.x+1, y=p_top.y+1, z=p_top.z})
|
||||
minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z-1})
|
||||
minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z+1})
|
||||
minetest.swap_node({x=p_top.x-1, y=p_top.y+1, z=p_top.z}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x+1, y=p_top.y+1, z=p_top.z}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x, y=p_top.y+1, z=p_top.z-1}, biome_lib.air)
|
||||
minetest.swap_node({x=p_top.x, y=p_top.y+1, z=p_top.z+1}, biome_lib.air)
|
||||
end
|
||||
|
||||
if biome.spawn_replace_node then
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
end
|
||||
|
||||
local objtype = type(nodes_or_function_or_model)
|
||||
@ -298,7 +299,7 @@ function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes,
|
||||
if biome.random_facedir then
|
||||
fdir = math.random(biome.random_facedir[1], biome.random_facedir[2])
|
||||
end
|
||||
minetest.set_node(p_top, { name = nodes_or_function_or_model[math.random(#nodes_or_function_or_model)], param2 = fdir })
|
||||
minetest.swap_node(p_top, { name = nodes_or_function_or_model[math.random(#nodes_or_function_or_model)], param2 = fdir })
|
||||
spawned = true
|
||||
end
|
||||
elseif objtype == "string" and
|
||||
@ -307,7 +308,7 @@ function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes,
|
||||
if biome.random_facedir then
|
||||
fdir = math.random(biome.random_facedir[1], biome.random_facedir[2])
|
||||
end
|
||||
minetest.set_node(p_top, { name = nodes_or_function_or_model, param2 = fdir })
|
||||
minetest.swap_node(p_top, { name = nodes_or_function_or_model, param2 = fdir })
|
||||
spawned = true
|
||||
elseif objtype == "function" then
|
||||
nodes_or_function_or_model(pos)
|
||||
@ -529,7 +530,7 @@ function biome_lib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa)
|
||||
local walldir = biome_lib:find_adjacent_wall(p_top, biome.verticals_list, biome.choose_random_wall)
|
||||
if biome.alt_wallnode and walldir then
|
||||
if n_top.name == "air" then
|
||||
minetest.set_node(p_top, { name = biome.alt_wallnode, param2 = walldir })
|
||||
minetest.swap_node(p_top, { name = biome.alt_wallnode, param2 = walldir })
|
||||
end
|
||||
else
|
||||
local currentsurface = minetest.get_node(pos).name
|
||||
@ -546,19 +547,19 @@ function biome_lib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa)
|
||||
assert(loadstring(biome.spawn_plants.."(...)"))(pos)
|
||||
elseif not biome.spawn_on_side and not biome.spawn_on_bottom and not biome.spawn_replace_node then
|
||||
if n_top.name == "air" then
|
||||
minetest.set_node(p_top, { name = plant_to_spawn, param2 = fdir })
|
||||
minetest.swap_node(p_top, { name = plant_to_spawn, param2 = fdir })
|
||||
end
|
||||
elseif biome.spawn_replace_node then
|
||||
minetest.set_node(pos, { name = plant_to_spawn, param2 = fdir })
|
||||
minetest.swap_node(pos, { name = plant_to_spawn, param2 = fdir })
|
||||
|
||||
elseif biome.spawn_on_side then
|
||||
local onside = biome_lib:find_open_side(pos)
|
||||
if onside then
|
||||
minetest.set_node(onside.newpos, { name = plant_to_spawn, param2 = onside.facedir })
|
||||
minetest.swap_node(onside.newpos, { name = plant_to_spawn, param2 = onside.facedir })
|
||||
end
|
||||
elseif biome.spawn_on_bottom then
|
||||
if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then
|
||||
minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = plant_to_spawn, param2 = fdir} )
|
||||
minetest.swap_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = plant_to_spawn, param2 = fdir} )
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -605,15 +606,15 @@ function biome_lib:grow_plants(opts)
|
||||
-- corner case for changing short junglegrass
|
||||
-- to dry shrub in desert
|
||||
if n_bot.name == options.dry_early_node and options.grow_plant == "junglegrass:short" then
|
||||
minetest.set_node(pos, { name = "default:dry_shrub" })
|
||||
minetest.swap_node(pos, { name = "default:dry_shrub" })
|
||||
|
||||
elseif options.grow_vertically and walldir then
|
||||
if biome_lib:search_downward(pos, options.height_limit, options.ground_nodes) then
|
||||
minetest.set_node(p_top, { name = options.grow_plant, param2 = walldir})
|
||||
minetest.swap_node(p_top, { name = options.grow_plant, param2 = walldir})
|
||||
end
|
||||
|
||||
elseif not options.grow_result and not options.grow_function then
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
|
||||
else
|
||||
biome_lib:replace_object(pos, options.grow_result, options.grow_function, options.facedir, options.seed_diff)
|
||||
@ -629,7 +630,7 @@ end
|
||||
function biome_lib:replace_object(pos, replacement, grow_function, walldir, seeddiff)
|
||||
local growtype = type(grow_function)
|
||||
if growtype == "table" then
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
biome_lib:grow_tree(pos, grow_function)
|
||||
return
|
||||
elseif growtype == "function" then
|
||||
@ -645,7 +646,7 @@ function biome_lib:replace_object(pos, replacement, grow_function, walldir, seed
|
||||
assert(loadstring(grow_function.."(...)"))(pos,noise1,noise2,walldir)
|
||||
return
|
||||
elseif growtype == "nil" then
|
||||
minetest.set_node(pos, { name = replacement, param2 = walldir})
|
||||
minetest.swap_node(pos, { name = replacement, param2 = walldir})
|
||||
return
|
||||
elseif growtype ~= "nil" and growtype ~= "string" and growtype ~= "table" then
|
||||
error("Invalid grow function "..dump(grow_function).." used on object at ("..dump(pos)..")")
|
||||
|
@ -183,14 +183,14 @@ abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
|
||||
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
minetest.set_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir})
|
||||
minetest.swap_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir})
|
||||
--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
|
||||
minetest.set_node(above_right_here, {name="bushes:BushLeaves"..leaf_type})
|
||||
minetest.swap_node(above_right_here, {name="bushes:BushLeaves"..leaf_type})
|
||||
local chance_of_high_leaves = math.random(1,10)
|
||||
if chance_of_high_leaves> 5 then
|
||||
local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
|
||||
--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
|
||||
minetest.set_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type})
|
||||
minetest.swap_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -229,12 +229,12 @@ abstract_bushes.grow_youngtree_node2 = function(pos, height)
|
||||
if height == 4 then
|
||||
local two_above_right_here_south = {x=pos.x, y=pos.y+3, z=pos.z-1}
|
||||
local three_above_right_here_south = {x=pos.x, y=pos.y+4, z=pos.z-1}
|
||||
minetest.set_node(right_here, {name="bushes:youngtree2_bottom"})
|
||||
minetest.set_node(above_right_here, {name="bushes:youngtree2_bottom"})
|
||||
minetest.set_node(two_above_right_here, {name="bushes:bushbranches2" , param2=2})
|
||||
minetest.set_node(two_above_right_here_south, {name="bushes:bushbranches2" , param2=0})
|
||||
minetest.set_node(three_above_right_here, {name="bushes:BushLeaves1" })
|
||||
minetest.set_node(three_above_right_here_south, {name="bushes:BushLeaves1" })
|
||||
minetest.swap_node(right_here, {name="bushes:youngtree2_bottom"})
|
||||
minetest.swap_node(above_right_here, {name="bushes:youngtree2_bottom"})
|
||||
minetest.swap_node(two_above_right_here, {name="bushes:bushbranches2" , param2=2})
|
||||
minetest.swap_node(two_above_right_here_south, {name="bushes:bushbranches2" , param2=0})
|
||||
minetest.swap_node(three_above_right_here, {name="bushes:BushLeaves1" })
|
||||
minetest.swap_node(three_above_right_here_south, {name="bushes:BushLeaves1" })
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -47,7 +47,7 @@ plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
elseif groupcaps.snappy then
|
||||
|
||||
-- plant a new bush without fruits
|
||||
minetest.set_node(pos, {type = "node", name = "bushes:fruitless_bush"})
|
||||
minetest.swap_node(pos, {type = "node", name = "bushes:fruitless_bush"})
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string('bush_type', bush_name)
|
||||
|
||||
@ -114,7 +114,7 @@ plantlife_bushes.after_place_node = function(pos, placer, itemstack)
|
||||
return
|
||||
end
|
||||
|
||||
minetest.set_node(pos, {name = "bushes:fruitless_bush"})
|
||||
minetest.swap_node(pos, {name = "bushes:fruitless_bush"})
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("bush_type", name_parts[1])
|
||||
end
|
||||
@ -137,7 +137,7 @@ minetest.register_abm({
|
||||
local is_soil = minetest.get_item_group(dirt.name, "soil") or minetest.get_item_group(dirt.name, "potting_soil")
|
||||
|
||||
if is_soil and (dirt.name == "farming:soil_wet" or math.random(1,3) == 1) then
|
||||
minetest.set_node( pos, {name = "bushes:" .. bush_name .. "_bush"})
|
||||
minetest.swap_node( pos, {name = "bushes:" .. bush_name .. "_bush"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -38,9 +38,9 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
||||
nn = minetest.get_node({x=x,y=ground_y,z=z}).name
|
||||
-- If desert sand, add dry shrub
|
||||
if nn == "default:dirt_with_grass" then
|
||||
minetest.set_node(p,{name="cavestuff:pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
minetest.swap_node(p,{name="cavestuff:pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
elseif nn == "default:desert_sand" then
|
||||
minetest.set_node(p,{name="cavestuff:desert_pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
minetest.swap_node(p,{name="cavestuff:desert_pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -97,7 +97,7 @@ minetest.register_node("cavestuff:stalactite_1",{
|
||||
if minetest.get_node(pt.under).name=="default:stone"
|
||||
and minetest.get_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}).name=="air"
|
||||
and minetest.get_node({x=pt.under.x, y=pt.under.y-2, z=pt.under.z}).name=="air" then
|
||||
minetest.set_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}, {name="cavestuff:stalactite_"..math.random(1,3)})
|
||||
minetest.swap_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}, {name="cavestuff:stalactite_"..math.random(1,3)})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
@ -86,7 +86,7 @@ local function sickle_on_use(itemstack, user, pointed_thing, uses)
|
||||
-- check if flora but no flower
|
||||
if minetest.get_item_group(under.name, "flora") == 1 and minetest.get_item_group(under.name, "flower") == 0 then
|
||||
-- turn the node into cut grass, wear out item and play sound
|
||||
minetest.set_node(pt.under, {name="dryplants:grass"})
|
||||
minetest.swap_node(pt.under, {name="dryplants:grass"})
|
||||
else -- otherwise dig the node
|
||||
if not minetest.node_dig(pt.under, under, user) then
|
||||
return
|
||||
@ -102,8 +102,8 @@ local function sickle_on_use(itemstack, user, pointed_thing, uses)
|
||||
if minetest.is_protected(above_pos, user:get_player_name()) or above.name ~= "air" then
|
||||
return
|
||||
end
|
||||
minetest.set_node(pt.under, {name="dryplants:grass_short"})
|
||||
minetest.set_node(above_pos, {name="dryplants:grass"})
|
||||
minetest.swap_node(pt.under, {name="dryplants:grass_short"})
|
||||
minetest.swap_node(above_pos, {name="dryplants:grass"})
|
||||
minetest.sound_play("default_dig_crumbly", {
|
||||
pos = pt.under,
|
||||
gain = 0.5,
|
||||
@ -148,7 +148,7 @@ minetest.register_abm({
|
||||
interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="dryplants:hay"})
|
||||
minetest.swap_node(pos, {name="dryplants:hay"})
|
||||
end,
|
||||
})
|
||||
|
||||
@ -196,7 +196,7 @@ minetest.register_abm({
|
||||
-- Only become dirt with grass if no cut grass or hay lies on top
|
||||
local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
if above.name ~= "dryplants:grass" and above.name ~= "dryplants:hay" then
|
||||
minetest.set_node(pos, {name="default:dirt_with_grass"})
|
||||
minetest.swap_node(pos, {name="default:dirt_with_grass"})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
@ -18,9 +18,9 @@ abstract_dryplants.grow_juncus = function(pos)
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
if juncus_type == 2 then
|
||||
minetest.set_node(right_here, {name="dryplants:juncus_02"})
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus_02"})
|
||||
else
|
||||
minetest.set_node(right_here, {name="dryplants:juncus"})
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -57,9 +57,9 @@ minetest.register_node("dryplants:juncus", {
|
||||
local juncus_type = math.random(2,3)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
if juncus_type == 2 then
|
||||
minetest.set_node(right_here, {name="dryplants:juncus_02"})
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus_02"})
|
||||
else
|
||||
minetest.set_node(right_here, {name="dryplants:juncus"})
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus"})
|
||||
end
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
abstract_dryplants.grow_grass_variation = function(pos)
|
||||
local right_here = {x=pos.x, y=pos.y, z=pos.z}
|
||||
minetest.set_node(right_here, {name="dryplants:grass_short"})
|
||||
minetest.swap_node(right_here, {name="dryplants:grass_short"})
|
||||
end
|
||||
|
||||
biome_lib:register_generate_plant({
|
||||
|
@ -13,7 +13,7 @@ abstract_dryplants.grow_grass = function(pos)
|
||||
local grass_size = math.random(1,5)
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
minetest.set_node(right_here, {name="default:grass_"..grass_size})
|
||||
minetest.swap_node(right_here, {name="default:grass_"..grass_size})
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -107,7 +107,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner and node_north.param2 == 3))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=0})
|
||||
minetest.swap_node(pos, {name=corner, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 1)
|
||||
@ -115,7 +115,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner and node_east.param2 == 0))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=1})
|
||||
minetest.swap_node(pos, {name=corner, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 2)
|
||||
@ -123,7 +123,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner and node_south.param2 == 1))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=2})
|
||||
minetest.swap_node(pos, {name=corner, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 3)
|
||||
@ -131,7 +131,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner and node_west.param2 == 2))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=3})
|
||||
minetest.swap_node(pos, {name=corner, param2=3})
|
||||
end
|
||||
-- corner 2
|
||||
if ((node_west.name == roof and node_west.param2 == 2)
|
||||
@ -139,7 +139,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 3))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=0})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 3)
|
||||
@ -147,7 +147,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 0))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=1})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 0)
|
||||
@ -155,7 +155,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 1))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=2})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 1)
|
||||
@ -163,7 +163,7 @@ if AUTO_ROOF_CORNER == true then
|
||||
and ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 2))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=3})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=3})
|
||||
end
|
||||
|
||||
end,
|
||||
@ -255,7 +255,7 @@ if REED_WILL_DRY == true then
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
local direction = minetest.get_node(pos).param2
|
||||
minetest.set_node(pos, {name=DRy, param2=direction})
|
||||
minetest.swap_node(pos, {name=DRy, param2=direction})
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
@ -34,18 +34,18 @@ abstract_dryplants.grow_reedmace = function(pos)
|
||||
if minetest.get_node(pos_01).name == "air" -- bug fix
|
||||
or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then
|
||||
if minetest.get_node(pos_02).name ~= "air" then
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_top"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
|
||||
elseif minetest.get_node(pos_03).name ~= "air" then
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||
elseif size == 1 then
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_top"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
|
||||
elseif size == 2 then
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||
elseif size == 3 then
|
||||
if spikes == 1 then
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
|
||||
else
|
||||
minetest.set_node(pos_01, {name="dryplants:reedmace_height_3"})
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_height_3"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -61,18 +61,18 @@ abstract_dryplants.grow_reedmace_water = function(pos)
|
||||
minetest.add_entity(pos_01, "dryplants:reedmace_water_entity")
|
||||
if minetest.get_node(pos_02).name == "air" then -- bug fix
|
||||
if minetest.get_node(pos_03).name ~= "air" then
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_top"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
|
||||
elseif minetest.get_node(pos_04).name ~= "air" then
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||
elseif size == 1 then
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_top"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
|
||||
elseif size == 2 then
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||
elseif size == 3 then
|
||||
if spikes == 1 then
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
|
||||
else
|
||||
minetest.set_node(pos_02, {name="dryplants:reedmace_height_3"})
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_height_3"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -286,7 +286,7 @@ minetest.register_abm({
|
||||
if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
|
||||
abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
end
|
||||
minetest.set_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
|
||||
minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
|
||||
else
|
||||
abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
end
|
||||
|
@ -69,11 +69,11 @@ abstract_ferns.grow_giant_tree_fern = function(pos)
|
||||
brk = true
|
||||
break
|
||||
end
|
||||
minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"})
|
||||
minetest.swap_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"})
|
||||
end
|
||||
if not brk then
|
||||
minetest.set_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"})
|
||||
minetest.set_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"})
|
||||
minetest.swap_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"})
|
||||
minetest.swap_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"})
|
||||
|
||||
-- all the checking for air below is to prevent some ugly bugs (incomplete trunks of neighbouring trees), it's a bit slower, but worth the result
|
||||
|
||||
@ -86,7 +86,7 @@ abstract_ferns.grow_giant_tree_fern = function(pos)
|
||||
-- add leaves so long as the destination nodes are air
|
||||
for j = 1, 3 do
|
||||
if minetest.get_node(positions[j]).name == "air" then
|
||||
minetest.set_node(positions[j], {name="ferns:tree_fern_leave_big"})
|
||||
minetest.swap_node(positions[j], {name="ferns:tree_fern_leave_big"})
|
||||
else
|
||||
endpos = j
|
||||
break
|
||||
@ -94,7 +94,7 @@ abstract_ferns.grow_giant_tree_fern = function(pos)
|
||||
end
|
||||
-- add the terminating leaf if required and possible
|
||||
if endpos == 4 and minetest.get_node(positions[endpos]).name == "air" then
|
||||
minetest.set_node(positions[endpos], {name="ferns:tree_fern_leave_big_end", param2=rot})
|
||||
minetest.swap_node(positions[endpos], {name="ferns:tree_fern_leave_big_end", param2=rot})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -35,11 +35,11 @@ abstract_ferns.grow_tree_fern = function(pos)
|
||||
brk = true
|
||||
break
|
||||
end
|
||||
minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = "ferns:fern_trunk" })
|
||||
minetest.swap_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = "ferns:fern_trunk" })
|
||||
i = i + 1
|
||||
end
|
||||
if not brk then
|
||||
minetest.set_node({x = pos.x, y = pos.y + i - 1, z = pos.z}, { name = crown })
|
||||
minetest.swap_node({x = pos.x, y = pos.y + i - 1, z = pos.z}, { name = crown })
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -115,10 +115,10 @@ for i in ipairs(lilies_list) do
|
||||
elseif waterlily == 8 then
|
||||
nodename = "flowers:waterlily_s4"
|
||||
end
|
||||
minetest.set_node(place_pos, {name = nodename, param2 = math.random(0,3) })
|
||||
minetest.swap_node(place_pos, {name = nodename, param2 = math.random(0,3) })
|
||||
else
|
||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||
minetest.set_node(place_pos, {name = "flowers:waterlily", param2 = fdir})
|
||||
minetest.swap_node(place_pos, {name = "flowers:waterlily", param2 = fdir})
|
||||
end
|
||||
|
||||
if not biome_lib.expect_infinite_stacks then
|
||||
@ -207,10 +207,10 @@ for i in ipairs(algae_list) do
|
||||
elseif seaweed == 4 then
|
||||
nodename = "flowers:seaweed_4"
|
||||
end
|
||||
minetest.set_node(place_pos, {name = nodename, param2 = math.random(0,3) })
|
||||
minetest.swap_node(place_pos, {name = nodename, param2 = math.random(0,3) })
|
||||
else
|
||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||
minetest.set_node(place_pos, {name = "flowers:seaweed", param2 = fdir})
|
||||
minetest.swap_node(place_pos, {name = "flowers:seaweed", param2 = fdir})
|
||||
end
|
||||
|
||||
if not biome_lib.expect_infinite_stacks then
|
||||
@ -294,7 +294,7 @@ flowers_plus.grow_waterlily = function(pos)
|
||||
end
|
||||
|
||||
if chance == num then
|
||||
minetest.set_node(right_here, {name="flowers:waterlily"..ext, param2=math.random(0,3)})
|
||||
minetest.swap_node(right_here, {name="flowers:waterlily"..ext, param2=math.random(0,3)})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -318,7 +318,7 @@ biome_lib:register_generate_plant({
|
||||
|
||||
flowers_plus.grow_seaweed = function(pos)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
minetest.set_node(right_here, {name="along_shore:seaweed_"..math.random(1,4), param2=math.random(1,3)})
|
||||
minetest.swap_node(right_here, {name="along_shore:seaweed_"..math.random(1,4), param2=math.random(1,3)})
|
||||
end
|
||||
|
||||
biome_lib:register_generate_plant({
|
||||
|
@ -58,7 +58,7 @@ abstract_molehills.place_molehill = function(pos)
|
||||
and minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1}).name ~= "air" then
|
||||
minetest.set_node(right_here, {name="molehills:molehill"})
|
||||
minetest.swap_node(right_here, {name="molehills:molehill"})
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -28,7 +28,7 @@ ftrunk.after_destruct = function(pos, oldnode)
|
||||
-- minetest.dig_node(coconutpos) does not cause nearby coconuts to be dropped :-( ...
|
||||
--minetest.dig_node(coconutpos)
|
||||
local items = minetest.get_node_drops(minetest.get_node(coconutpos).name)
|
||||
minetest.remove_node(coconutpos)
|
||||
minetest.swap_node(coconutpos, biome_lib.air)
|
||||
for _, itemname in pairs(items) do
|
||||
minetest.add_item(coconutpos, itemname)
|
||||
end
|
||||
@ -56,7 +56,7 @@ local coconut_regrow_abm_spec = {
|
||||
local coconutpos = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
||||
local coconutnode = minetest.get_node(coconutpos)
|
||||
if coconutnode.name == "air" then
|
||||
minetest.set_node(coconutpos, {name="moretrees:coconut_0"})
|
||||
minetest.swap_node(coconutpos, {name="moretrees:coconut_0"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -85,7 +85,7 @@ minetest.register_abm({
|
||||
local gen
|
||||
local count = 0
|
||||
for _,gen in pairs(genlist) do
|
||||
minetest.set_node(gen.pos, {name = "moretrees:coconut_3"})
|
||||
minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"})
|
||||
count = count + 1
|
||||
if count == 4 then
|
||||
break
|
||||
@ -115,7 +115,7 @@ local coconut_growfn = function(pos, elapsed)
|
||||
minetest.add_item(pos, itemname)
|
||||
end
|
||||
end
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
end
|
||||
else
|
||||
-- Grow coconuts to the next stage
|
||||
@ -240,7 +240,7 @@ if moretrees.coconuts_convert_existing_palms then
|
||||
minetest.swap_node(tpos, {name = "moretrees:palm_fruit_trunk"})
|
||||
coconuts = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:coconut")
|
||||
for _, coconutpos in pairs(coconuts) do
|
||||
minetest.set_node(coconutpos, {name = "moretrees:coconut_3"})
|
||||
minetest.swap_node(coconutpos, {name = "moretrees:coconut_3"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
@ -49,7 +49,7 @@ ftrunk.after_destruct = function(pos, oldnode)
|
||||
for _,datespos in pairs(dates) do
|
||||
-- minetest.dig_node(datespos) does not cause nearby dates to be dropped :-( ...
|
||||
local items = minetest.get_node_drops(minetest.get_node(datespos).name)
|
||||
minetest.remove_node(datespos)
|
||||
minetest.swap_node(datespos, biome_lib.air)
|
||||
for _, itemname in pairs(items) do
|
||||
minetest.add_item(datespos, itemname)
|
||||
end
|
||||
@ -92,9 +92,9 @@ local date_regrow_abm_spec = {
|
||||
local datenode = minetest.get_node(datepos)
|
||||
if datenode.name == "air" then
|
||||
if node.name == "moretrees:date_palm_ffruit_trunk" then
|
||||
minetest.set_node(datepos, {name="moretrees:dates_f0"})
|
||||
minetest.swap_node(datepos, {name="moretrees:dates_f0"})
|
||||
else
|
||||
minetest.set_node(datepos, {name="moretrees:dates_m0"})
|
||||
minetest.swap_node(datepos, {name="moretrees:dates_m0"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -126,9 +126,9 @@ minetest.register_abm({
|
||||
for _,genpos in pairs(dates1) do
|
||||
if math.random(100) <= 20 then
|
||||
if type == "m" then
|
||||
minetest.set_node(genpos, {name = "moretrees:dates_n"})
|
||||
minetest.swap_node(genpos, {name = "moretrees:dates_n"})
|
||||
else
|
||||
minetest.set_node(genpos, {name = "moretrees:dates_f4"})
|
||||
minetest.swap_node(genpos, {name = "moretrees:dates_f4"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -136,9 +136,9 @@ minetest.register_abm({
|
||||
for _,genpos in pairs(dates2) do
|
||||
if math.random(100) <= 5 then
|
||||
if type == "m" then
|
||||
minetest.set_node(genpos, {name = "moretrees:dates_n"})
|
||||
minetest.swap_node(genpos, {name = "moretrees:dates_n"})
|
||||
else
|
||||
minetest.set_node(genpos, {name = "moretrees:dates_f4"})
|
||||
minetest.swap_node(genpos, {name = "moretrees:dates_f4"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -538,7 +538,7 @@ local dates_growfn = function(pos, elapsed)
|
||||
elseif string.find(node.name, "moretrees:dates_m") then
|
||||
minetest.swap_node(pos, {name="moretrees:dates_n"})
|
||||
else
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
end
|
||||
return
|
||||
elseif node.name == "moretrees:dates_f0" and math.random(100) <= 100 * dates_regrow_prob then
|
||||
@ -578,7 +578,7 @@ local dates_growfn = function(pos, elapsed)
|
||||
elseif string.match(node.name, "n$") then
|
||||
-- Remove stems.
|
||||
if math.random(stems_drop_ichance) == 1 then
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
return "stemdrop"
|
||||
end
|
||||
action = "nostemdrop"
|
||||
|
@ -185,7 +185,7 @@ end
|
||||
-- Code to spawn a birch tree
|
||||
|
||||
function moretrees.grow_birch(pos)
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
if math.random(1,2) == 1 then
|
||||
minetest.spawn_tree(pos, moretrees.birch_model1)
|
||||
else
|
||||
@ -196,7 +196,7 @@ end
|
||||
-- Code to spawn a spruce tree
|
||||
|
||||
function moretrees.grow_spruce(pos)
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
if math.random(1,2) == 1 then
|
||||
minetest.spawn_tree(pos, moretrees.spruce_model1)
|
||||
else
|
||||
@ -250,10 +250,10 @@ function moretrees.grow_jungletree(pos)
|
||||
moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
|
||||
end
|
||||
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
minetest.swap_node(leaves[leaf], biome_lib.air)
|
||||
end
|
||||
minetest.spawn_tree(pos, moretrees.jungletree_model)
|
||||
end
|
||||
@ -277,10 +277,10 @@ function moretrees.grow_fir(pos)
|
||||
moretrees.fir_model.iterations = 7
|
||||
moretrees.fir_model.random_level = 5
|
||||
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
minetest.swap_node(leaves[leaf], biome_lib.air)
|
||||
end
|
||||
minetest.spawn_tree(pos,moretrees.fir_model)
|
||||
end
|
||||
@ -304,10 +304,10 @@ function moretrees.grow_fir_snow(pos)
|
||||
moretrees.fir_model.iterations = 2
|
||||
moretrees.fir_model.random_level = 2
|
||||
|
||||
minetest.remove_node(pos)
|
||||
minetest.swap_node(pos, biome_lib.air)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
minetest.swap_node(leaves[leaf], biome_lib.air)
|
||||
end
|
||||
minetest.spawn_tree(pos,moretrees.fir_model)
|
||||
end
|
||||
|
@ -16,13 +16,15 @@ for i in ipairs(moretrees.treelist) do
|
||||
grow_function = moretrees[tree_model],
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:"..treename.."_sapling_ongen",
|
||||
grow_nodes = moretrees[tree_biome].surface,
|
||||
grow_function = moretrees[tree_model],
|
||||
})
|
||||
if moretrees.spawn_saplings then
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:"..treename.."_sapling_ongen",
|
||||
grow_nodes = moretrees[tree_biome].surface,
|
||||
grow_function = moretrees[tree_model],
|
||||
})
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@ -35,13 +37,6 @@ biome_lib:grow_plants({
|
||||
grow_function = "moretrees.grow_birch"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:birch_sapling_ongen",
|
||||
grow_nodes = moretrees.birch_biome.surface,
|
||||
grow_function = "moretrees.grow_birch"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
@ -51,14 +46,6 @@ biome_lib:grow_plants({
|
||||
grow_function = "moretrees.grow_spruce"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:spruce_sapling_ongen",
|
||||
grow_nodes = moretrees.spruce_biome.surface,
|
||||
grow_function = "moretrees.grow_spruce"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
@ -67,14 +54,6 @@ biome_lib:grow_plants({
|
||||
grow_function = "moretrees.grow_fir"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:fir_sapling_ongen",
|
||||
grow_nodes = moretrees.fir_biome.surface,
|
||||
grow_function = "moretrees.grow_fir"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
@ -83,11 +62,37 @@ biome_lib:grow_plants({
|
||||
grow_function = "moretrees.grow_jungletree"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:jungletree_sapling_ongen",
|
||||
grow_nodes = moretrees.jungletree_biome.surface,
|
||||
grow_function = "moretrees.grow_jungletree"
|
||||
})
|
||||
if moretrees.spawn_saplings then
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:jungletree_sapling_ongen",
|
||||
grow_nodes = moretrees.jungletree_biome.surface,
|
||||
grow_function = "moretrees.grow_jungletree"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:fir_sapling_ongen",
|
||||
grow_nodes = moretrees.fir_biome.surface,
|
||||
grow_function = "moretrees.grow_fir"
|
||||
})
|
||||
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:spruce_sapling_ongen",
|
||||
grow_nodes = moretrees.spruce_biome.surface,
|
||||
grow_function = "moretrees.grow_spruce"
|
||||
})
|
||||
|
||||
biome_lib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:birch_sapling_ongen",
|
||||
grow_nodes = moretrees.birch_biome.surface,
|
||||
grow_function = "moretrees.grow_birch"
|
||||
})
|
||||
end
|
||||
|
@ -9,7 +9,7 @@ local function spawn_apple_under(pos)
|
||||
z = pos.z,
|
||||
}
|
||||
if minetest.get_node(below).name == "air" then
|
||||
minetest.set_node(below, { name = "default:apple" })
|
||||
minetest.swap_node(below, { name = "default:apple" })
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -67,7 +67,7 @@ function nature:grow_node(pos, nodename)
|
||||
>= nature.minimum_growth_light
|
||||
|
||||
if is_not_young(pos) and light_enough then
|
||||
minetest.set_node(pos, { name = nodename })
|
||||
minetest.swap_node(pos, { name = nodename })
|
||||
set_young_node(pos)
|
||||
|
||||
minetest.log("info", nodename .. " has grown at " .. pos.x .. ","
|
||||
|
@ -37,7 +37,7 @@ abstract_trunks.place_twig = function(pos)
|
||||
local node_n_w = minetest.get_node(north_west)
|
||||
-- small twigs
|
||||
if twig_size <= 16 then
|
||||
minetest.set_node(right_here, {name="trunks:twig_"..math.random(1,4), param2=math.random(0,3)})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_"..math.random(1,4), param2=math.random(0,3)})
|
||||
end
|
||||
-- big twigs
|
||||
if Big_Twigs == true then
|
||||
@ -47,13 +47,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_5"})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_5"})
|
||||
end
|
||||
if minetest.registered_nodes[node_n_e.name].buildable_to then
|
||||
minetest.set_node(north_east, {name="trunks:twig_7"})
|
||||
minetest.swap_node(north_east, {name="trunks:twig_7"})
|
||||
end
|
||||
if minetest.registered_nodes[node_east.name].buildable_to then
|
||||
minetest.set_node(east, {name="trunks:twig_8"})
|
||||
minetest.swap_node(east, {name="trunks:twig_8"})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 18 then
|
||||
@ -61,13 +61,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_5", param2=1})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_5", param2=1})
|
||||
end
|
||||
if minetest.registered_nodes[node_s_e.name].buildable_to then
|
||||
minetest.set_node(south_east, {name="trunks:twig_7", param2=1})
|
||||
minetest.swap_node(south_east, {name="trunks:twig_7", param2=1})
|
||||
end
|
||||
if minetest.registered_nodes[node_south.name].buildable_to then
|
||||
minetest.set_node(south, {name="trunks:twig_8", param2=1})
|
||||
minetest.swap_node(south, {name="trunks:twig_8", param2=1})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 19 then
|
||||
@ -75,13 +75,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_5", param2=2})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_5", param2=2})
|
||||
end
|
||||
if minetest.registered_nodes[node_s_w.name].buildable_to then
|
||||
minetest.set_node(south_west, {name="trunks:twig_7", param2=2})
|
||||
minetest.swap_node(south_west, {name="trunks:twig_7", param2=2})
|
||||
end
|
||||
if minetest.registered_nodes[node_west.name].buildable_to then
|
||||
minetest.set_node(west, {name="trunks:twig_8", param2=2})
|
||||
minetest.swap_node(west, {name="trunks:twig_8", param2=2})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 20 then
|
||||
@ -89,13 +89,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_5", param2=3})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_5", param2=3})
|
||||
end
|
||||
if minetest.registered_nodes[node_n_w.name].buildable_to then
|
||||
minetest.set_node(north_west, {name="trunks:twig_7", param2=3})
|
||||
minetest.swap_node(north_west, {name="trunks:twig_7", param2=3})
|
||||
end
|
||||
if minetest.registered_nodes[node_north.name].buildable_to then
|
||||
minetest.set_node(north, {name="trunks:twig_8", param2=3})
|
||||
minetest.swap_node(north, {name="trunks:twig_8", param2=3})
|
||||
end
|
||||
end
|
||||
-- big twig 2
|
||||
@ -104,13 +104,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_9"})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_9"})
|
||||
end
|
||||
if minetest.registered_nodes[node_north.name].buildable_to then
|
||||
minetest.set_node(north, {name="trunks:twig_10"})
|
||||
minetest.swap_node(north, {name="trunks:twig_10"})
|
||||
end
|
||||
if minetest.registered_nodes[node_n_e.name].buildable_to then
|
||||
minetest.set_node(north_east, {name="trunks:twig_11"})
|
||||
minetest.swap_node(north_east, {name="trunks:twig_11"})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 22 then
|
||||
@ -118,13 +118,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_9", param2=1})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_9", param2=1})
|
||||
end
|
||||
if minetest.registered_nodes[node_east.name].buildable_to then
|
||||
minetest.set_node(east, {name="trunks:twig_10", param2=1})
|
||||
minetest.swap_node(east, {name="trunks:twig_10", param2=1})
|
||||
end
|
||||
if minetest.registered_nodes[node_s_e.name].buildable_to then
|
||||
minetest.set_node(south_east, {name="trunks:twig_11", param2=1})
|
||||
minetest.swap_node(south_east, {name="trunks:twig_11", param2=1})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 23 then
|
||||
@ -132,13 +132,13 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_9", param2=2})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_9", param2=2})
|
||||
end
|
||||
if minetest.registered_nodes[node_south.name].buildable_to then
|
||||
minetest.set_node(south, {name="trunks:twig_10", param2=2})
|
||||
minetest.swap_node(south, {name="trunks:twig_10", param2=2})
|
||||
end
|
||||
if minetest.registered_nodes[node_s_w.name].buildable_to then
|
||||
minetest.set_node(south_west, {name="trunks:twig_11", param2=2})
|
||||
minetest.swap_node(south_west, {name="trunks:twig_11", param2=2})
|
||||
end
|
||||
end
|
||||
elseif twig_size == 24 then
|
||||
@ -146,17 +146,17 @@ abstract_trunks.place_twig = function(pos)
|
||||
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.set_node(right_here, {name="trunks:twig_9", param2=3})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_9", param2=3})
|
||||
end
|
||||
if minetest.registered_nodes[node_west.name].buildable_to then
|
||||
minetest.set_node(west, {name="trunks:twig_10", param2=3})
|
||||
minetest.swap_node(west, {name="trunks:twig_10", param2=3})
|
||||
end
|
||||
if minetest.registered_nodes[node_n_w.name].buildable_to then
|
||||
minetest.set_node(north_west, {name="trunks:twig_11", param2=3})
|
||||
minetest.swap_node(north_west, {name="trunks:twig_11", param2=3})
|
||||
end
|
||||
end
|
||||
elseif twig_size <= 25 then
|
||||
minetest.set_node(right_here, {name="trunks:twig_"..math.random(12,13), param2=math.random(0,3)})
|
||||
minetest.swap_node(right_here, {name="trunks:twig_"..math.random(12,13), param2=math.random(0,3)})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -269,70 +269,70 @@ abstract_trunks.place_trunk = function(pos)
|
||||
local trunk_type = math.random(1,3)
|
||||
if trunk_type == 1 then
|
||||
if minetest.get_modpath(MoD) ~= nil then
|
||||
minetest.set_node(right_here, {name=MoD..":"..TRuNK})
|
||||
minetest.swap_node(right_here, {name=MoD..":"..TRuNK})
|
||||
else
|
||||
minetest.set_node(right_here, {name="default:tree"})
|
||||
minetest.swap_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.set_node(north, {name=MoD..":"..TRuNK, param2=4})
|
||||
minetest.swap_node(north, {name=MoD..":"..TRuNK, param2=4})
|
||||
end
|
||||
|
||||
if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
|
||||
minetest.set_node(north2, {name=MoD..":"..TRuNK, param2=4})
|
||||
minetest.swap_node(north2, {name=MoD..":"..TRuNK, param2=4})
|
||||
end
|
||||
|
||||
minetest.set_node(right_here, {name=MoD..":"..TRuNK, param2=4})
|
||||
minetest.swap_node(right_here, {name=MoD..":"..TRuNK, param2=4})
|
||||
if minetest.registered_nodes[node_south.name].buildable_to then
|
||||
minetest.set_node(south, {name=MoD..":"..TRuNK, param2=4})
|
||||
minetest.swap_node(south, {name=MoD..":"..TRuNK, param2=4})
|
||||
end
|
||||
if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
|
||||
minetest.set_node(south2, {name=MoD..":"..TRuNK, param2=4})
|
||||
minetest.swap_node(south2, {name=MoD..":"..TRuNK, param2=4})
|
||||
end
|
||||
else
|
||||
if minetest.registered_nodes[node_north.name].buildable_to then
|
||||
minetest.set_node(north, {name="default:tree", param2=4})
|
||||
minetest.swap_node(north, {name="default:tree", param2=4})
|
||||
end
|
||||
if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
|
||||
minetest.set_node(north2, {name="default:tree", param2=4})
|
||||
minetest.swap_node(north2, {name="default:tree", param2=4})
|
||||
end
|
||||
minetest.set_node(right_here, {name="default:tree", param2=4})
|
||||
minetest.swap_node(right_here, {name="default:tree", param2=4})
|
||||
if minetest.registered_nodes[node_south.name].buildable_to then
|
||||
minetest.set_node(south, {name="default:tree", param2=4})
|
||||
minetest.swap_node(south, {name="default:tree", param2=4})
|
||||
end
|
||||
if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
|
||||
minetest.set_node(south2, {name="default:tree", param2=4})
|
||||
minetest.swap_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.set_node(west, {name=MoD..":"..TRuNK, param2=12})
|
||||
minetest.swap_node(west, {name=MoD..":"..TRuNK, param2=12})
|
||||
end
|
||||
if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
|
||||
minetest.set_node(west2, {name=MoD..":"..TRuNK, param2=12})
|
||||
minetest.swap_node(west2, {name=MoD..":"..TRuNK, param2=12})
|
||||
end
|
||||
minetest.set_node(right_here, {name=MoD..":"..TRuNK, param2=12})
|
||||
minetest.swap_node(right_here, {name=MoD..":"..TRuNK, param2=12})
|
||||
if minetest.registered_nodes[node_east.name].buildable_to then
|
||||
minetest.set_node(east, {name=MoD..":"..TRuNK, param2=12})
|
||||
minetest.swap_node(east, {name=MoD..":"..TRuNK, param2=12})
|
||||
end
|
||||
if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
|
||||
minetest.set_node(east2, {name=MoD..":"..TRuNK, param2=12})
|
||||
minetest.swap_node(east2, {name=MoD..":"..TRuNK, param2=12})
|
||||
end
|
||||
else
|
||||
if minetest.registered_nodes[node_west.name].buildable_to then
|
||||
minetest.set_node(west, {name="default:tree", param2=12})
|
||||
minetest.swap_node(west, {name="default:tree", param2=12})
|
||||
end
|
||||
if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
|
||||
minetest.set_node(west2, {name="default:tree", param2=12})
|
||||
minetest.swap_node(west2, {name="default:tree", param2=12})
|
||||
end
|
||||
minetest.set_node(right_here, {name="default:tree", param2=12})
|
||||
minetest.swap_node(right_here, {name="default:tree", param2=12})
|
||||
if minetest.registered_nodes[node_east.name].buildable_to then
|
||||
minetest.set_node(east, {name="default:tree", param2=12})
|
||||
minetest.swap_node(east, {name="default:tree", param2=12})
|
||||
end
|
||||
if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
|
||||
minetest.set_node(east2, {name="default:tree", param2=12})
|
||||
minetest.swap_node(east2, {name="default:tree", param2=12})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -367,9 +367,9 @@ abstract_trunks.grow_moss_on_ground = function(pos)
|
||||
local moss_type = math.random(1,21)
|
||||
|
||||
if moss_type == 1 then
|
||||
minetest.set_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3)})
|
||||
minetest.swap_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3)})
|
||||
else
|
||||
minetest.set_node(on_ground, {name="trunks:moss", param2=math.random(0,3)})
|
||||
minetest.swap_node(on_ground, {name="trunks:moss", param2=math.random(0,3)})
|
||||
end
|
||||
|
||||
end
|
||||
@ -418,41 +418,41 @@ abstract_trunks.grow_moss_on_trunk = function(pos)
|
||||
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.set_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3) --[[1]]})
|
||||
minetest.swap_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3) --[[1]]})
|
||||
elseif moss_type < 22 then
|
||||
minetest.set_node(on_ground, {name="trunks:moss", param2=math.random(0,3) --[[1]]})
|
||||
minetest.swap_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.set_node(at_side_n, {name="trunks:moss_fungus", param2=math.random(4,7)}) -- 5,4,6,7
|
||||
minetest.swap_node(at_side_n, {name="trunks:moss_fungus", param2=math.random(4,7)}) -- 5,4,6,7
|
||||
elseif moss_type < 22 then
|
||||
minetest.set_node(at_side_n, {name="trunks:moss", param2=math.random(4,7)})
|
||||
minetest.swap_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.set_node(at_side_e, {name="trunks:moss_fungus", param2=math.random(12,15)})
|
||||
minetest.swap_node(at_side_e, {name="trunks:moss_fungus", param2=math.random(12,15)})
|
||||
elseif moss_type < 22 then
|
||||
minetest.set_node(at_side_e, {name="trunks:moss", param2=math.random(12,15)})
|
||||
minetest.swap_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.set_node(at_side_s, {name="trunks:moss_fungus", param2=math.random(8,11)})
|
||||
minetest.swap_node(at_side_s, {name="trunks:moss_fungus", param2=math.random(8,11)})
|
||||
elseif moss_type < 22 then
|
||||
minetest.set_node(at_side_s, {name="trunks:moss", param2=math.random(8,11)})
|
||||
minetest.swap_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.set_node(at_side_w, {name="trunks:moss_fungus", param2=math.random(16,19)})
|
||||
minetest.swap_node(at_side_w, {name="trunks:moss_fungus", param2=math.random(16,19)})
|
||||
elseif moss_type < 22 then
|
||||
minetest.set_node(at_side_w, {name="trunks:moss", param2=math.random(16,19)})
|
||||
minetest.swap_node(at_side_w, {name="trunks:moss", param2=math.random(16,19)})
|
||||
end
|
||||
end
|
||||
--end
|
||||
@ -520,16 +520,16 @@ abstract_trunks.grow_roots = function(pos)
|
||||
and string.find(node_below.name, "dirt")
|
||||
and node_here.param2 == 0 then
|
||||
if minetest.registered_nodes[node_north.name].buildable_to then
|
||||
minetest.set_node(north, {name="trunks:"..TRuNK.."root", param2=2})
|
||||
minetest.swap_node(north, {name="trunks:"..TRuNK.."root", param2=2})
|
||||
end
|
||||
if minetest.registered_nodes[node_east.name].buildable_to then
|
||||
minetest.set_node(east, {name="trunks:"..TRuNK.."root", param2=3})
|
||||
minetest.swap_node(east, {name="trunks:"..TRuNK.."root", param2=3})
|
||||
end
|
||||
if minetest.registered_nodes[node_south.name].buildable_to then
|
||||
minetest.set_node(south, {name="trunks:"..TRuNK.."root", param2=0})
|
||||
minetest.swap_node(south, {name="trunks:"..TRuNK.."root", param2=0})
|
||||
end
|
||||
if minetest.registered_nodes[node_west.name].buildable_to then
|
||||
minetest.set_node(west, {name="trunks:"..TRuNK.."root", param2=1})
|
||||
minetest.swap_node(west, {name="trunks:"..TRuNK.."root", param2=1})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -44,7 +44,7 @@ for i in pairs(NoDe) do
|
||||
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})
|
||||
minetest.swap_node(pt.above, {name="trunks:twig_"..math.random(1,4), param2=direction})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
end
|
||||
@ -227,7 +227,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner and node_north.param2 == 3))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=0})
|
||||
minetest.swap_node(pos, {name=corner, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 1)
|
||||
@ -235,7 +235,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner and node_east.param2 == 0))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=1})
|
||||
minetest.swap_node(pos, {name=corner, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 2)
|
||||
@ -243,7 +243,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner and node_south.param2 == 1))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=2})
|
||||
minetest.swap_node(pos, {name=corner, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 3)
|
||||
@ -251,7 +251,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner and node_west.param2 == 2))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner, param2=3})
|
||||
minetest.swap_node(pos, {name=corner, param2=3})
|
||||
end
|
||||
-- corner 2
|
||||
if ((node_west.name == roof and node_west.param2 == 2)
|
||||
@ -259,7 +259,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 3))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=0})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 3)
|
||||
@ -267,7 +267,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 0))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=1})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 0)
|
||||
@ -275,7 +275,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 1))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=2})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 1)
|
||||
@ -283,7 +283,7 @@ if Auto_Roof_Corner == true then
|
||||
and ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 2))
|
||||
then
|
||||
minetest.set_node(pos, {name=corner_2, param2=3})
|
||||
minetest.swap_node(pos, {name=corner_2, param2=3})
|
||||
end
|
||||
|
||||
end,
|
||||
|
@ -1,13 +0,0 @@
|
||||
|
||||
unused_args = false
|
||||
|
||||
read_globals = {
|
||||
"minetest",
|
||||
"default",
|
||||
"ItemStack",
|
||||
"biome_lib",
|
||||
}
|
||||
|
||||
globals = {
|
||||
"vines",
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
License
|
||||
=======
|
||||
- Code WTFPL
|
||||
- Texture CC
|
@ -1,9 +1,11 @@
|
||||
# Vines
|
||||
# Vines Mod by Bas80 (Edited by TenPlus1)
|
||||
|
||||
### License: MIT for code, CC for textures
|
||||
|
||||
## Features
|
||||
- Rope block for spawning rope that slowly drops into the deep.
|
||||
- Vines are climbable and slowly grow downward.
|
||||
- Shears that allow the collecting of vines.
|
||||
- Shears that allow the faster collecting of vines.
|
||||
- Spawns vines on jungletree leaves.
|
||||
- Roots on the bottom of dirt and dirt with grass nodes.
|
||||
- Spawns vines on trees located in swampy area.
|
||||
@ -48,9 +50,3 @@ table.
|
||||
|average_length|int| The average length of vines|
|
||||
|
||||
For biome definitions please see the [plants_lib API documentation](https://github.com/VanessaE/plantlife_modpack/blob/master/API.txt)
|
||||
|
||||
## Notice
|
||||
Vines use after_destruct on registered leave nodes to remove vines from which
|
||||
the leaves are removed. This is done by using the override function.
|
||||
Malfunctions may occur if other mods override the after_destruct of these nodes
|
||||
also.
|
||||
|
@ -1,11 +0,0 @@
|
||||
-- used to remove the old vine nodes. This gives room for the new nodes
|
||||
minetest.register_alias( 'vines:root', 'air' )
|
||||
minetest.register_alias( 'vines:root_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:vine', 'air' )
|
||||
minetest.register_alias( 'vines:vine_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:side', 'air' )
|
||||
minetest.register_alias( 'vines:side_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:jungle', 'air' )
|
||||
minetest.register_alias( 'vines:jungle_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:willow', 'air' )
|
||||
minetest.register_alias( 'vines:willow_rotten', 'air' )
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "vines",
|
||||
"description": "Vines that spawn on trees and rope",
|
||||
"keywords": [
|
||||
"vines",
|
||||
"trees",
|
||||
"rope",
|
||||
"jungle"
|
||||
],
|
||||
"homepage": "https://github.com/bas080/vines/",
|
||||
"screenshots": [
|
||||
"https://raw.githubusercontent.com/bas080/vines/forum/screenshot.png"
|
||||
],
|
||||
"authors": [
|
||||
"bas080"
|
||||
],
|
||||
"license": "WTFPL"
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'vines:rope_block',
|
||||
recipe = vines.recipes['rope_block']
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'vines:shears',
|
||||
recipe = vines.recipes['shears']
|
||||
})
|
||||
|
||||
minetest.register_craftitem("vines:vines", {
|
||||
description = S("Vines"),
|
||||
inventory_image = "vines_item.png",
|
||||
})
|
@ -1,132 +0,0 @@
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
vines.register_vine = function( name, defs, biome )
|
||||
local groups = { vines=1, snappy=3, flammable=2 }
|
||||
|
||||
local vine_name_end = 'vines:'..name..'_end'
|
||||
local vine_name_middle = 'vines:'..name..'_middle'
|
||||
|
||||
local vine_image_end = "vines_"..name.."_end.png"
|
||||
local vine_image_middle = "vines_"..name.."_middle.png"
|
||||
|
||||
local drop_node = vine_name_end
|
||||
|
||||
biome.spawn_plants = { vine_name_end }
|
||||
|
||||
local vine_group = 'group:'..name..'_vines'
|
||||
biome.spawn_surfaces[ #biome.spawn_surfaces + 1 ] = vine_group
|
||||
|
||||
local selection_box = { type = "wallmounted", }
|
||||
local drawtype = 'signlike'
|
||||
if ( not biome.spawn_on_side ) then
|
||||
--different properties for bottom and side vines.
|
||||
selection_box = { type = "fixed", fixed = { -0.4, -1/2, -0.4, 0.4, 1/2, 0.4 }, }
|
||||
drawtype = 'plantlike'
|
||||
end
|
||||
|
||||
minetest.register_node( vine_name_end, {
|
||||
description = defs.description,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
wield_image = vine_image_end,
|
||||
drop = "",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
buildable_to = false,
|
||||
tiles = { vine_image_end },
|
||||
drawtype = drawtype,
|
||||
inventory_image = vine_image_end,
|
||||
groups = groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = selection_box,
|
||||
on_construct = function( pos )
|
||||
local timer = minetest.get_node_timer( pos )
|
||||
timer:start( math.random(5, 10) )
|
||||
end,
|
||||
on_timer = function( pos )
|
||||
local node = minetest.get_node( pos )
|
||||
local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local bottom_node = minetest.get_node( bottom )
|
||||
if bottom_node.name == "air" then
|
||||
if not ( math.random( defs.average_length ) == 1 ) then
|
||||
minetest.set_node( pos, { name = vine_name_middle, param2 = node.param2 } )
|
||||
minetest.set_node( bottom, { name = node.name, param2 = node.param2 } )
|
||||
local timer = minetest.get_node_timer( bottom_node )
|
||||
timer:start( math.random(5, 10) )
|
||||
end
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, node, oldmetadata, user)
|
||||
vines.dig_vine( pos, drop_node, user )
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node( vine_name_middle, {
|
||||
description = S("Matured").." "..defs.description,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
drop = "",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
buildable_to = false,
|
||||
tiles = { vine_image_middle },
|
||||
wield_image = vine_image_middle,
|
||||
drawtype = drawtype,
|
||||
inventory_image = vine_image_middle,
|
||||
groups = groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = selection_box,
|
||||
on_destruct = function( pos )
|
||||
local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local bottom_node = minetest.get_node( bottom )
|
||||
if minetest.get_item_group( bottom_node.name, "vines") > 0 then
|
||||
minetest.after( 0, minetest.remove_node, bottom )
|
||||
end
|
||||
end,
|
||||
after_dig_node = function( pos, node, oldmetadata, user )
|
||||
vines.dig_vine( pos, drop_node, user )
|
||||
end
|
||||
})
|
||||
|
||||
biome_lib:spawn_on_surfaces( biome )
|
||||
|
||||
local override_nodes = function( nodes, def )
|
||||
local function override( index, registered )
|
||||
local node = nodes[ index ]
|
||||
if index > #nodes then return registered end
|
||||
if minetest.registered_nodes[node] then
|
||||
minetest.override_item( node, def )
|
||||
registered[#registered+1] = node
|
||||
end
|
||||
override( index+1, registered )
|
||||
end
|
||||
override( 1, {} )
|
||||
end
|
||||
|
||||
override_nodes( biome.spawn_surfaces,{
|
||||
on_destruct = function( pos )
|
||||
local pos_min = { x = pos.x -1, y = pos.y - 1, z = pos.z - 1 }
|
||||
local pos_max = { x = pos.x +1, y = pos.y + 1, z = pos.z + 1 }
|
||||
local positions = minetest.find_nodes_in_area( pos_min, pos_max, "group:vines" )
|
||||
for index, position in pairs(positions) do
|
||||
minetest.remove_node( position )
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
vines.dig_vine = function( pos, node_name, user )
|
||||
--only dig give the vine if shears are used
|
||||
if not user then return false end
|
||||
local wielded = user:get_wielded_item()
|
||||
if 'vines:shears' == wielded:get_name() then
|
||||
local inv = user:get_inventory()
|
||||
if inv then
|
||||
inv:add_item("main", ItemStack( node_name ))
|
||||
end
|
||||
end
|
||||
end
|
407
vines/init.lua
407
vines/init.lua
@ -1,17 +1,406 @@
|
||||
vines = {
|
||||
name = 'vines',
|
||||
recipes = {}
|
||||
name = 'vines',
|
||||
recipes = {}
|
||||
}
|
||||
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/functions.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/aliases.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/recipes.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/crafts.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/nodes.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/shear.lua" )
|
||||
dofile( minetest.get_modpath( vines.name ) .. "/vines.lua" )
|
||||
-- ITEMS
|
||||
|
||||
minetest.register_craftitem("vines:vines", {
|
||||
description = S("Vines"),
|
||||
inventory_image = "vines_item.png",
|
||||
group = {vines = 1, flammable = 2}
|
||||
})
|
||||
|
||||
-- FUNCTIONS
|
||||
|
||||
local function dig_down(pos, node, digger)
|
||||
|
||||
if digger == nil then return end
|
||||
|
||||
local np = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local nn = minetest.get_node(np)
|
||||
|
||||
if minetest.get_item_group(nn.name, "vines") > 0 then
|
||||
minetest.node_dig(np, nn, digger)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
vines.register_vine = function( name, defs, biome )
|
||||
|
||||
local groups = {vines = 1, snappy = 3, flammable = 2, attached_node = 1}
|
||||
local vine_name_end = 'vines:' .. name .. '_end'
|
||||
local vine_name_middle = 'vines:' .. name .. '_middle'
|
||||
local vine_image_end = "vines_" .. name .. "_end.png"
|
||||
local vine_image_middle = "vines_" .. name .. "_middle.png"
|
||||
local drop_node = vine_name_end
|
||||
|
||||
biome.spawn_plants = {vine_name_end}
|
||||
|
||||
local vine_group = 'group:' .. name .. '_vines'
|
||||
|
||||
biome.spawn_surfaces[#biome.spawn_surfaces + 1] = vine_group
|
||||
|
||||
local selection_box = {type = "wallmounted",}
|
||||
local drawtype = 'signlike'
|
||||
|
||||
-- different properties for bottom and side vines.
|
||||
if not biome.spawn_on_side then
|
||||
|
||||
selection_box = {
|
||||
type = "fixed", fixed = { -0.4, -1/2, -0.4, 0.4, 1/2, 0.4 }
|
||||
}
|
||||
|
||||
drawtype = 'plantlike'
|
||||
end
|
||||
|
||||
minetest.register_node(vine_name_end, {
|
||||
description = defs.description,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
wield_image = vine_image_end,
|
||||
drop = "vines:vines",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
buildable_to = false,
|
||||
tiles = {vine_image_end},
|
||||
drawtype = drawtype,
|
||||
inventory_image = vine_image_end,
|
||||
groups = groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = selection_box,
|
||||
|
||||
on_construct = function(pos)
|
||||
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
|
||||
timer:start(math.random(5, 10))
|
||||
end,
|
||||
|
||||
on_timer = function(pos)
|
||||
|
||||
local node = minetest.get_node(pos)
|
||||
local bottom = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local bottom_node = minetest.get_node( bottom )
|
||||
|
||||
if bottom_node.name == "air" then
|
||||
|
||||
if not math.random(defs.average_length) == 1 then
|
||||
|
||||
minetest.set_node(pos, {
|
||||
name = vine_name_middle, param2 = node.param2})
|
||||
|
||||
minetest.set_node(bottom, {
|
||||
name = node.name, param2 = node.param2})
|
||||
|
||||
local timer = minetest.get_node_timer(bottom_node)
|
||||
|
||||
timer:start(math.random(5, 10))
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
after_dig_node = function(pos, node, metadata, digger)
|
||||
dig_down(pos, node, digger)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node( vine_name_middle, {
|
||||
description = S("Matured") .. " " .. defs.description,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
drop = "vines:vines",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
buildable_to = false,
|
||||
tiles = {vine_image_middle},
|
||||
wield_image = vine_image_middle,
|
||||
drawtype = drawtype,
|
||||
inventory_image = vine_image_middle,
|
||||
groups = groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = selection_box,
|
||||
|
||||
after_dig_node = function(pos, node, metadata, digger)
|
||||
dig_down(pos, node, digger)
|
||||
end,
|
||||
})
|
||||
|
||||
biome_lib:spawn_on_surfaces(biome)
|
||||
end
|
||||
|
||||
-- ALIASES
|
||||
|
||||
-- used to remove the old vine nodes and give room for the new.
|
||||
minetest.register_alias( 'vines:root', 'air' )
|
||||
minetest.register_alias( 'vines:root_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:vine', 'air' )
|
||||
minetest.register_alias( 'vines:vine_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:side', 'air' )
|
||||
minetest.register_alias( 'vines:side_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:jungle', 'air' )
|
||||
minetest.register_alias( 'vines:jungle_rotten', 'air' )
|
||||
minetest.register_alias( 'vines:willow', 'air' )
|
||||
minetest.register_alias( 'vines:willow_rotten', 'air' )
|
||||
|
||||
-- CRAFTS
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'vines:rope_block',
|
||||
recipe = {
|
||||
{'group:vines', 'group:vines', 'group:vines'},
|
||||
{'group:vines', 'group:wood', 'group:vines'},
|
||||
{'group:vines', 'group:vines', 'group:vines'},
|
||||
}
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'vines:rope_block',
|
||||
recipe = {
|
||||
{'moreblocks:rope', 'moreblocks:rope', 'moreblocks:rope'},
|
||||
{'moreblocks:rope', 'group:wood', 'moreblocks:rope'},
|
||||
{'moreblocks:rope', 'moreblocks:rope', 'moreblocks:rope'},
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'vines:shears',
|
||||
recipe = {
|
||||
{'', 'default:steel_ingot', ''},
|
||||
{'group:stick', 'group:wood', 'default:steel_ingot'},
|
||||
{'', '', 'group:stick'}
|
||||
}
|
||||
})
|
||||
|
||||
-- NODES
|
||||
|
||||
minetest.register_node("vines:rope_block", {
|
||||
description = S("Rope"),
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
tiles = {
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png",
|
||||
"default_wood.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
},
|
||||
groups = {flammable = 2, choppy = 2, oddly_breakable_by_hand = 1},
|
||||
|
||||
after_place_node = function(pos)
|
||||
|
||||
local p = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
|
||||
if n.name == "air" then
|
||||
minetest.add_node(p, {name = "vines:rope_end"})
|
||||
end
|
||||
end,
|
||||
|
||||
after_dig_node = function(pos, node, digger)
|
||||
|
||||
local p = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
|
||||
while n.name == 'vines:rope' or n.name == 'vines:rope_end' do
|
||||
|
||||
minetest.remove_node(p)
|
||||
|
||||
p = {x = p.x, y = p.y - 1, z = p.z}
|
||||
n = minetest.get_node(p)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("vines:rope", {
|
||||
description = S("Rope"),
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
drop = {},
|
||||
tiles = {"vines_rope.png"},
|
||||
drawtype = "plantlike",
|
||||
groups = {flammable = 2, not_in_creative_inventory = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("vines:rope_end", {
|
||||
description = S("Rope"),
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
drop = {},
|
||||
tiles = {"vines_rope_end.png"},
|
||||
drawtype = "plantlike",
|
||||
groups = {flammable = 2, not_in_creative_inventory = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
|
||||
after_place_node = function(pos)
|
||||
|
||||
local yesh = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
|
||||
minetest.add_node(yesh, {name = "vines:rope"})
|
||||
end,
|
||||
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||
},
|
||||
|
||||
on_construct = function(pos)
|
||||
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
|
||||
timer:start(1)
|
||||
end,
|
||||
|
||||
on_timer = function( pos, elapsed )
|
||||
|
||||
local p = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
|
||||
if n.name == "air" then
|
||||
|
||||
minetest.set_node(pos, {name = "vines:rope"})
|
||||
minetest.add_node(p, {name = "vines:rope_end"})
|
||||
else
|
||||
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
|
||||
timer:start(1)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- SHEARS
|
||||
|
||||
minetest.register_tool("vines:shears", {
|
||||
description = S("Shears"),
|
||||
inventory_image = "vines_shears.png",
|
||||
wield_image = "vines_shears.png",
|
||||
stack_max = 1,
|
||||
max_drop_level = 3,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level = 1,
|
||||
groupcaps = {
|
||||
snappy = {times = {[3] = 0.2}, uses = 60, maxlevel = 3},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
-- VINES
|
||||
|
||||
vines.register_vine('root',
|
||||
{description = S("Roots"), average_length = 9}, {
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"vines:root_middle"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.6,
|
||||
humidity_min = 0.4,
|
||||
})
|
||||
|
||||
vines.register_vine('vine',
|
||||
{description = S("Vines"), average_length = 5}, {
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"group:vines"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
-- "default:leaves",
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.7,
|
||||
})
|
||||
|
||||
vines.register_vine('side',
|
||||
{description = S("Vines"), average_length = 6}, {
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"group:vines", "default:apple"},
|
||||
avoid_radius = 3,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
-- "default:leaves",
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.4,
|
||||
})
|
||||
|
||||
vines.register_vine("jungle",
|
||||
{description = S("Jungle Vines"), average_length = 7}, {
|
||||
choose_random_wall = true,
|
||||
neighbors = {
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
avoid_nodes = {
|
||||
"vines:jungle_middle",
|
||||
"vines:jungle_end",
|
||||
},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:jungletree",
|
||||
"moretrees:jungletree_trunk"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.2,
|
||||
})
|
||||
|
||||
vines.register_vine( 'willow',
|
||||
{description = S("Willow Vines"), average_length = 9}, {
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"vines:willow_middle"},
|
||||
avoid_radius = 5,
|
||||
near_nodes = {'default:water_source'},
|
||||
near_nodes_size = 1,
|
||||
near_nodes_count = 1,
|
||||
near_nodes_vertical = 7,
|
||||
plantlife_limit = -0.8,
|
||||
spawn_chance = 10,
|
||||
spawn_delay = 500,
|
||||
spawn_on_side = true,
|
||||
spawn_surfaces = {"moretrees:willow_leaves"},
|
||||
humidity_min = 0.5
|
||||
})
|
||||
|
||||
|
||||
print(S("[Vines] Loaded!"))
|
||||
|
@ -1,86 +0,0 @@
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
minetest.register_node("vines:rope_block", {
|
||||
description = S("Rope"),
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
tiles = {
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png",
|
||||
"default_wood.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
"default_wood.png^vines_rope.png",
|
||||
},
|
||||
groups = { flammable=2, choppy=2, oddly_breakable_by_hand=1 },
|
||||
after_place_node = function(pos)
|
||||
local p = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
if n.name == "air" then
|
||||
minetest.add_node(p, {name="vines:rope_end"})
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, node, digger)
|
||||
local p = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
while ( n.name == 'vines:rope' or n.name == 'vines:rope_end' ) do
|
||||
minetest.remove_node(p)
|
||||
p = {x=p.x, y=p.y-1, z=p.z}
|
||||
n = minetest.get_node(p)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("vines:rope", {
|
||||
description = S("Rope"),
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
drop = "",
|
||||
tiles = { "vines_rope.png" },
|
||||
drawtype = "plantlike",
|
||||
groups = {flammable=2, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("vines:rope_end", {
|
||||
description = S("Rope"),
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
drop = "",
|
||||
tiles = { "vines_rope_end.png" },
|
||||
drawtype = "plantlike",
|
||||
groups = {flammable=2, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
after_place_node = function(pos)
|
||||
local yesh = {x = pos.x, y= pos.y-1, z=pos.z}
|
||||
minetest.add_node(yesh, {name="vines:rope"})
|
||||
end,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||
},
|
||||
on_construct = function( pos )
|
||||
local timer = minetest.get_node_timer( pos )
|
||||
timer:start( 1 )
|
||||
end,
|
||||
on_timer = function( pos, elapsed )
|
||||
local p = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local n = minetest.get_node(p)
|
||||
if n.name == "air" then
|
||||
minetest.set_node(pos, {name="vines:rope"})
|
||||
minetest.add_node(p, {name="vines:rope_end"})
|
||||
else
|
||||
local timer = minetest.get_node_timer( pos )
|
||||
timer:start( 1 )
|
||||
end
|
||||
end
|
||||
})
|
@ -1,11 +0,0 @@
|
||||
vines.recipes['rope_block'] = {
|
||||
{'', 'group:wood', ''},
|
||||
{'', 'group:vines', ''},
|
||||
{'', 'group:vines', ''}
|
||||
}
|
||||
|
||||
vines.recipes['shears'] = {
|
||||
{'', 'default:steel_ingot', ''},
|
||||
{'group:stick', 'group:wood', 'default:steel_ingot'},
|
||||
{'', '', 'group:stick'}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
minetest.register_tool("vines:shears", {
|
||||
description = S("Shears"),
|
||||
inventory_image = "vines_shears.png",
|
||||
wield_image = "vines_shears.png",
|
||||
stack_max = 1,
|
||||
max_drop_level=3,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=0,
|
||||
groupcaps={
|
||||
snappy={times={[3]=0.2}, uses=60, maxlevel=3},
|
||||
wool={times={[3]=0.2}, uses=60, maxlevel=3}
|
||||
}
|
||||
},
|
||||
})
|
108
vines/vines.lua
108
vines/vines.lua
@ -1,108 +0,0 @@
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
vines.register_vine( 'root', {
|
||||
description = S("Roots"),
|
||||
average_length = 9,
|
||||
},{
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"vines:root_middle"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.6,
|
||||
humidity_min = 0.4,
|
||||
})
|
||||
|
||||
vines.register_vine( 'vine', {
|
||||
description = S("Vines"),
|
||||
average_length = 5,
|
||||
},{
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"group:vines"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:leaves",
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.7,
|
||||
})
|
||||
|
||||
vines.register_vine( 'side', {
|
||||
description = S("Vines"),
|
||||
average_length = 6,
|
||||
},{
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = {"group:vines", "default:apple"},
|
||||
avoid_radius = 3,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:leaves",
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.4,
|
||||
})
|
||||
|
||||
vines.register_vine( "jungle", {
|
||||
description = S("Jungle Vines"),
|
||||
average_length = 7,
|
||||
},{
|
||||
choose_random_wall = true,
|
||||
neighbors = {
|
||||
"default:jungleleaves",
|
||||
"moretrees:jungletree_leaves_red",
|
||||
"moretrees:jungletree_leaves_yellow",
|
||||
"moretrees:jungletree_leaves_green"
|
||||
},
|
||||
avoid_nodes = {
|
||||
"vines:jungle_middle",
|
||||
"vines:jungle_end",
|
||||
},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:jungletree",
|
||||
"moretrees:jungletree_trunk"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_min = 0.2,
|
||||
})
|
||||
|
||||
vines.register_vine( 'willow', {
|
||||
description = S("Willow Vines"),
|
||||
average_length = 9,
|
||||
},{
|
||||
choose_random_wall = true,
|
||||
avoid_nodes = { "vines:willow_middle" },
|
||||
avoid_radius = 5,
|
||||
near_nodes = { 'default:water_source' },
|
||||
near_nodes_size = 1,
|
||||
near_nodes_count = 1,
|
||||
near_nodes_vertical = 7,
|
||||
plantlife_limit = -0.8,
|
||||
spawn_chance = 10,
|
||||
spawn_delay = 500,
|
||||
spawn_on_side = true,
|
||||
spawn_surfaces = {"moretrees:willow_leaves"},
|
||||
humidity_min = 0.5
|
||||
})
|
@ -50,24 +50,24 @@ abstract_woodsoils.place_soil = function(pos)
|
||||
local node_3b = minetest.get_node(radius_3b)
|
||||
-- Dirt with Leaves 1
|
||||
if minetest.get_item_group(minetest.get_node(radius_1a).name, "soil") > 0 then
|
||||
minetest.set_node(radius_1a, {name="woodsoils:dirt_with_leaves_1"})
|
||||
minetest.swap_node(radius_1a, {name="woodsoils:dirt_with_leaves_1"})
|
||||
end
|
||||
if minetest.get_item_group(minetest.get_node(radius_1b).name, "soil") > 0 then
|
||||
minetest.set_node(radius_1b, {name="woodsoils:dirt_with_leaves_1"})
|
||||
minetest.swap_node(radius_1b, {name="woodsoils:dirt_with_leaves_1"})
|
||||
end
|
||||
-- Grass with Leaves 2
|
||||
if string.find(node_2a.name, "dirt_with_grass") then
|
||||
minetest.set_node(radius_2a, {name="woodsoils:grass_with_leaves_2"})
|
||||
minetest.swap_node(radius_2a, {name="woodsoils:grass_with_leaves_2"})
|
||||
end
|
||||
if string.find(node_2b.name, "dirt_with_grass") then
|
||||
minetest.set_node(radius_2b, {name="woodsoils:grass_with_leaves_2"})
|
||||
minetest.swap_node(radius_2b, {name="woodsoils:grass_with_leaves_2"})
|
||||
end
|
||||
-- Grass with Leaves 1
|
||||
if string.find(node_3a.name, "dirt_with_grass") then
|
||||
minetest.set_node(radius_3a, {name="woodsoils:grass_with_leaves_1"})
|
||||
minetest.swap_node(radius_3a, {name="woodsoils:grass_with_leaves_1"})
|
||||
end
|
||||
if string.find(node_3b.name, "dirt_with_grass") then
|
||||
minetest.set_node(radius_3b, {name="woodsoils:grass_with_leaves_1"})
|
||||
minetest.swap_node(radius_3b, {name="woodsoils:grass_with_leaves_1"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -143,7 +143,7 @@ minetest.register_abm({
|
||||
end
|
||||
if height < 4 then
|
||||
if minetest.get_node(pos).name == "air" then
|
||||
minetest.set_node(pos, {name="default:papyrus"})
|
||||
minetest.swap_node(pos, {name="default:papyrus"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -117,17 +117,17 @@ abstract_youngtrees.grow_youngtree_node = function(pos, height)
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
if height == 1 then
|
||||
minetest.set_node(right_here, {name="youngtrees:youngtree_top"})
|
||||
minetest.swap_node(right_here, {name="youngtrees:youngtree_top"})
|
||||
end
|
||||
if height == 2 then
|
||||
minetest.set_node(right_here, {name="youngtrees:youngtree_bottom"})
|
||||
minetest.set_node(above_right_here, {name="youngtrees:youngtree_top"})
|
||||
minetest.swap_node(right_here, {name="youngtrees:youngtree_bottom"})
|
||||
minetest.swap_node(above_right_here, {name="youngtrees:youngtree_top"})
|
||||
end
|
||||
if height == 3 then
|
||||
local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
|
||||
minetest.set_node(right_here, {name="youngtrees:youngtree_bottom"})
|
||||
minetest.set_node(above_right_here, {name="youngtrees:youngtree_middle"})
|
||||
minetest.set_node(two_above_right_here, {name="youngtrees:youngtree_top"})
|
||||
minetest.swap_node(right_here, {name="youngtrees:youngtree_bottom"})
|
||||
minetest.swap_node(above_right_here, {name="youngtrees:youngtree_middle"})
|
||||
minetest.swap_node(two_above_right_here, {name="youngtrees:youngtree_top"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user