mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-24 11:31:09 +01:00
c1971b662a
* Make Crimson and Warped Planks, Double Slab Planks, Fences, Fence Gates, Doors, Trapdoors, Pressure Plates, Wood, Bark, Stripped Wood, Stripped Bark, and Stairs Immune to fire by removing them from the 'flammable', 'fire_encouragement', and 'fire_flammability' groups. * Add crafting recipes which allow Cherry, Mangrove, Crimson, and Warped planks to be crafted from Wood, Bark, Stripped Wood, and Stripped Bark variants, to make them consistent with with all other planks. Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4166 Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land> Co-authored-by: Doods <yusufalishabaka@tutanota.com> Co-committed-by: Doods <yusufalishabaka@tutanota.com>
490 lines
17 KiB
Lua
490 lines
17 KiB
Lua
local S = minetest.get_translator("mcl_mangrove")
|
|
local modname = minetest.get_current_modname()
|
|
local modpath = minetest.get_modpath(modname)
|
|
|
|
local propagule_allowed_nodes = {
|
|
"mcl_core:dirt",
|
|
"mcl_core:coarse_dirt",
|
|
"mcl_core:dirt_with_grass",
|
|
"mcl_core:podzol",
|
|
"mcl_core:mycelium",
|
|
"mcl_lush_caves:rooted_dirt",
|
|
"mcl_lush_caves:moss",
|
|
"mcl_farming:soil",
|
|
"mcl_farming:soil_wet",
|
|
"mcl_core:clay",
|
|
"mcl_mud:mud",
|
|
}
|
|
local propagule_water_nodes = {"mcl_mud:mud","mcl_core:dirt","mcl_core:coarse_dirt","mcl_core:clay"}
|
|
--"mcl_lush_caves:moss","mcl_lush_caves:rooted_dirt
|
|
|
|
mcl_core.register_tree_trunk("mangrove_tree", S("Mangrove Wood"), S("Mangrove Bark"),
|
|
S("The trunk of a Mangrove tree."),
|
|
"mcl_mangrove_log_top.png", "mcl_mangrove_log.png", "mcl_mangrove:mangrove_stripped")
|
|
|
|
mcl_core.register_wooden_planks("mangrove_wood", S("Mangrove Wood Planks"), {"mcl_mangrove_planks.png"})
|
|
|
|
mcl_core.register_leaves("mangroveleaves", S("Mangrove Leaves"), S("Mangrove leaves are grown from mangrove trees."),
|
|
{"mcl_mangrove_leaves.png"}, "#48B518", "color", "mcl_core_palette_foliage.png", "mcl_mangrove:propagule", true, {20, 16, 12, 10}, 1)
|
|
|
|
mcl_core.register_stripped_trunk("mangrove_stripped", S("Stripped Mangrove Log"), S("Stripped Mangrove Wood"),
|
|
S("The stripped wood of a Mangrove tree"), S("The stripped bark of a Mangrove tree"),
|
|
"mcl_stripped_mangrove_log_top.png", "mcl_stripped_mangrove_log_side.png")
|
|
|
|
minetest.register_alias("mcl_mangrove:mangrove_stripped_trunk", "mcl_mangrove:mangrove_stripped")
|
|
|
|
minetest.register_node("mcl_mangrove:mangrove_roots", {
|
|
description = S("Mangrove Roots"),
|
|
_doc_items_longdesc = S("Mangrove roots are decorative blocks that form as part of mangrove trees."),
|
|
_doc_items_hidden = false,
|
|
waving = 0,
|
|
place_param2 = 1, -- Prevent leafdecay for placed nodes
|
|
tiles = {
|
|
"mcl_mangrove_roots_top.png",
|
|
"mcl_mangrove_roots_side.png",
|
|
"mcl_mangrove_roots_side.png",
|
|
},
|
|
paramtype = "light",
|
|
drawtype = "allfaces_optional",
|
|
groups = {
|
|
handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0,
|
|
flammable = 10, fire_encouragement = 30, fire_flammability = 60,
|
|
deco_block = 1, compostability = 30
|
|
},
|
|
drop = "mcl_mangrove:mangrove_roots",
|
|
_mcl_shears_drop = true,
|
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
|
_mcl_blast_resistance = 0.7,
|
|
_mcl_hardness = 0.7,
|
|
_mcl_silk_touch_drop = true,
|
|
_mcl_fortune_drop = { "mcl_mangrove:mangrove_roots 1", "mcl_mangrove:mangrove_roots 2", "mcl_mangrove:mangrove_roots 3", "mcl_mangrove:mangrove_roots 4" },
|
|
})
|
|
|
|
minetest.register_node("mcl_mangrove:propagule", {
|
|
description = S("Mangrove Propagule"),
|
|
_tt_help = S("Needs soil and light to grow"),
|
|
_doc_items_longdesc = S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."),
|
|
_doc_items_hidden = false,
|
|
drawtype = "plantlike",
|
|
waving = 1,
|
|
visual_scale = 1.0,
|
|
tiles = {"mcl_mangrove_propagule_item.png"},
|
|
inventory_image = "mcl_mangrove_propagule_item.png",
|
|
wield_image = "mcl_mangrove_propagule_item.png",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}
|
|
},
|
|
groups = {
|
|
plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1,
|
|
deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1,
|
|
destroy_by_lava_flow = 1, compostability = 30
|
|
},
|
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_int("stage", 0)
|
|
end,
|
|
node_placement_prediction = "",
|
|
_mcl_blast_resistance = 0,
|
|
_mcl_hardness = 0,
|
|
on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node,stack)
|
|
local under = vector.offset(place_pos,0,-1,0)
|
|
local snn = minetest.get_node_or_nil(under).name
|
|
if not snn then return false end
|
|
if table.indexof(propagule_allowed_nodes,snn) ~= -1 then
|
|
local n = minetest.get_node(place_pos)
|
|
if minetest.get_item_group(n.name,"water") > 0 and table.indexof(propagule_water_nodes,snn) ~= -1 then
|
|
minetest.set_node(under,{name="mcl_mangrove:propagule_"..snn:split(":")[2]})
|
|
stack:take_item()
|
|
return stack
|
|
end
|
|
return true
|
|
end
|
|
end)
|
|
})
|
|
|
|
minetest.register_node("mcl_mangrove:hanging_propagule_1", {
|
|
description = S("Hanging Propagule"),
|
|
_tt_help = S("Grows on Mangrove leaves"),
|
|
_doc_items_longdesc = "",
|
|
_doc_items_usagehelp = "",
|
|
groups = {
|
|
plant = 1, not_in_creative_inventory=1, non_mycelium_plant = 1,
|
|
deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1,
|
|
destroy_by_lava_flow = 1, compostability = 30
|
|
},
|
|
paramtype = "light",
|
|
paramtype2 = "",
|
|
on_rotate = false,
|
|
walkable = false,
|
|
drop = "mcl_mangrove:propagule",
|
|
use_texture_alpha = "clip",
|
|
drawtype = 'mesh',
|
|
mesh = 'propagule_hanging.obj',
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- Base
|
|
},
|
|
},
|
|
tiles = {"mcl_mangrove_propagule_hanging.png"},
|
|
inventory_image = "mcl_mangrove_propagule.png",
|
|
wield_image = "mcl_mangrove_propagule.png",
|
|
})
|
|
local propagule_rooted_nodes = {}
|
|
for _,root in pairs(propagule_water_nodes) do
|
|
local r = root:split(":")[2]
|
|
local def = minetest.registered_nodes[root]
|
|
local tx = def.tiles
|
|
local n = "mcl_mangrove:propagule_"..r
|
|
table.insert(propagule_rooted_nodes,n)
|
|
minetest.register_node(n, {
|
|
drawtype = "plantlike_rooted",
|
|
paramtype = "light",
|
|
place_param2 = 1,
|
|
tiles = tx,
|
|
special_tiles = { { name = "mcl_mangrove_propagule_item.png" } },
|
|
inventory_image = "mcl_mangrove_propagule_item.png",
|
|
wield_image = "mcl_mangrove_propagule.png",
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
|
|
{ -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 },
|
|
}
|
|
},
|
|
groups = {
|
|
plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1,not_in_creative_inventory=1,
|
|
deco_block = 1, dig_immediate = 3, dig_by_piston = 1,
|
|
destroy_by_lava_flow = 1, compostability = 30
|
|
},
|
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
|
drop = "mcl_mangrove:propagule",
|
|
node_placement_prediction = "",
|
|
node_dig_prediction = "",
|
|
after_dig_node = function(pos)
|
|
minetest.set_node(pos, {name=root})
|
|
end,
|
|
_mcl_hardness = 0,
|
|
_mcl_blast_resistance = 0,
|
|
_mcl_silk_touch_drop = true,
|
|
})
|
|
|
|
end
|
|
|
|
|
|
mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", {
|
|
name = "propagule",
|
|
desc = S("Mangrove Propagule"),
|
|
image = "mcl_mangrove_propagule.png",
|
|
})
|
|
|
|
local water_tex = "mcl_core_water_source_animation.png^[verticalframe:16:0^[multiply:#3F76E4"
|
|
|
|
local wlroots = {
|
|
description = S("water logged mangrove roots"),
|
|
_doc_items_entry_name = S("water logged mangrove roots"),
|
|
_doc_items_longdesc =
|
|
S("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n"..
|
|
S("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n"..
|
|
S("These cannot be crafted yet only occure when get in contact of water."),
|
|
_doc_items_hidden = false,
|
|
tiles = {
|
|
{name="mcl_core_water_source_animation.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}}
|
|
},
|
|
special_tiles = {
|
|
-- New-style water source material (mostly unused)
|
|
{
|
|
name="mcl_core_water_source_animation.png",
|
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0},
|
|
backface_culling = false,
|
|
}
|
|
},
|
|
overlay_tiles = {
|
|
"mcl_mangrove_roots_top.png",
|
|
"mcl_mangrove_roots_side.png",
|
|
"mcl_mangrove_roots_side.png",
|
|
},
|
|
sounds = mcl_sounds.node_sound_water_defaults(),
|
|
drawtype = "allfaces_optional",
|
|
use_texture_alpha = "blend",
|
|
is_ground_content = false,
|
|
paramtype = "light",
|
|
walkable = true,
|
|
pointable = true,
|
|
diggable = true,
|
|
buildable_to = false,
|
|
liquids_pointable = true,
|
|
drop = "mcl_mangrove:mangrove_roots",
|
|
groups = {
|
|
handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, waterlogged = 1, not_in_creative_inventory=1 },
|
|
_mcl_blast_resistance = 100,
|
|
_mcl_hardness = -1, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
|
|
on_construct = function(pos)
|
|
local dim = mcl_worlds.pos_to_dimension(pos)
|
|
if dim == "nether" then
|
|
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
|
|
minetest.set_node(pos, {name="mcl_mangrove:mangrove_roots"})
|
|
end
|
|
end,
|
|
after_dig_node = function(pos)
|
|
local node = minetest.get_node(pos)
|
|
local dim = mcl_worlds.pos_to_dimension(pos)
|
|
if minetest.get_item_group(node.name, "water") == 0 and dim ~= "nether" then
|
|
minetest.set_node(pos, {name="mcl_core:water_source"})
|
|
else
|
|
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
|
|
end
|
|
end,
|
|
}
|
|
local rwlroots = table.copy(wlroots)
|
|
-- FIXME luacheck complains that this is a repeated definition of water_tex.
|
|
-- Maybe the tiles definition below should be replaced with the animated tile
|
|
-- definition as per above?
|
|
water_tex = "mcl_core_water_source_animation.png^[verticalframe:16:0^[multiply:#0084FF"
|
|
rwlroots.tiles = {
|
|
"("..water_tex..")^mcl_mangrove_roots_top.png",
|
|
"("..water_tex..")^mcl_mangrove_roots_side.png",
|
|
"("..water_tex..")^mcl_mangrove_roots_side.png",
|
|
}
|
|
rwlroots.after_dig_node = function(pos)
|
|
local node = minetest.get_node(pos)
|
|
local dim = mcl_worlds.pos_to_dimension(pos)
|
|
if minetest.get_item_group(node.name, "water") == 0 and dim ~= "nether" then
|
|
minetest.set_node(pos, {name="mclx_core:river_water_source"})
|
|
else
|
|
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
|
|
end
|
|
end
|
|
|
|
minetest.register_node("mcl_mangrove:water_logged_roots", wlroots)
|
|
minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots)
|
|
|
|
minetest.register_node("mcl_mangrove:mangrove_mud_roots", {
|
|
description = S("Muddy Mangrove Roots"),
|
|
_tt_help = S("crafted with Mud and Mangrove roots"),
|
|
_doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it."),
|
|
tiles = {
|
|
"mcl_mud.png^mcl_mangrove_roots_top.png",
|
|
"mcl_mud.png^mcl_mangrove_roots_side.png",
|
|
"mcl_mud.png^mcl_mangrove_roots_side.png",
|
|
},
|
|
is_ground_content = true,
|
|
groups = {handy = 1, shovely = 1, axey = 1, building_block = 1},
|
|
sounds = mcl_sounds.node_sound_sand_defaults(),
|
|
_mcl_blast_resistance = 0.7,
|
|
_mcl_hardness = 0.7,
|
|
})
|
|
|
|
mcl_doors:register_door("mcl_mangrove:mangrove_door", {
|
|
description = S("Mangrove Door"),
|
|
_doc_items_longdesc = S("Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal."),
|
|
_doc_items_usagehelp = S("To open or close a wooden door, rightclick it or supply its lower half with a redstone signal."),
|
|
inventory_image = "mcl_mangrove_doors.png",
|
|
groups = {handy=1,axey=1, material_wood=1, flammable=-1},
|
|
_mcl_hardness = 3,
|
|
_mcl_blast_resistance = 3,
|
|
tiles_bottom = "mcl_mangrove_door_bottom.png",
|
|
tiles_top = "mcl_mangrove_door_top.png",
|
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
|
})
|
|
|
|
mcl_doors:register_trapdoor("mcl_mangrove:mangrove_trapdoor", {
|
|
description = S("Mangrove Trapdoor"),
|
|
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
|
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
|
tile_front = "mcl_mangrove_trapdoor.png",
|
|
tile_side = "mcl_mangrove_trapdoor_side.png",
|
|
wield_image = "mcl_mangrove_trapdoor.png",
|
|
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
|
_mcl_hardness = 3,
|
|
_mcl_blast_resistance = 3,
|
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
|
})
|
|
|
|
mcl_fences.register_fence_and_fence_gate(
|
|
"mangrove_wood_fence",
|
|
S("Mangrove Wood Fence"),
|
|
S("Mangrove Wood Fence Gate"),
|
|
"mcl_mangrove_fence.png",
|
|
{handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20},
|
|
minetest.registered_nodes["mcl_core:wood"]._mcl_hardness,
|
|
minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance,
|
|
{"group:fence_wood"},
|
|
mcl_sounds.node_sound_wood_defaults(), "mcl_mangrove_mangrove_wood_fence_gate_open", "mcl_mangrove_mangrove_wood_fence_gate_close", 1, 1,
|
|
"mcl_mangrove_fence_gate.png")
|
|
|
|
mcl_stairs.register_stair("mangrove_wood", "mcl_mangrove:mangrove_wood",
|
|
{handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
|
|
{"mcl_mangrove_planks.png"},
|
|
S("Mangrove Wood Stairs"),
|
|
mcl_sounds.node_sound_wood_defaults(), 3, 2,
|
|
"woodlike")
|
|
|
|
mcl_stairs.register_slab("mangrove_wood", "mcl_mangrove:mangrove_wood",
|
|
{handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
|
|
{"mcl_mangrove_planks.png"},
|
|
S("Mangrove Wood Slab"),
|
|
mcl_sounds.node_sound_wood_defaults(), 3, 2,
|
|
S("Double Mangrove Wood Slab"))
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_tree_bark 3",
|
|
recipe = {
|
|
{ "mcl_mangrove:mangrove_tree", "mcl_mangrove:mangrove_tree" },
|
|
{ "mcl_mangrove:mangrove_tree", "mcl_mangrove:mangrove_tree" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_mud_roots",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_roots", "mcl_mud:mud",},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_mangrove:mangrove_door",
|
|
burntime = 15,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_door 3",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"},
|
|
{"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"},
|
|
{"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_trapdoor 2",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"},
|
|
{"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_mangrove:mangrove_trapdoor",
|
|
burntime = 15,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood_fence_gate",
|
|
recipe = {
|
|
{"mcl_core:stick", "mcl_mangrove:mangrove_wood", "mcl_core:stick"},
|
|
{"mcl_core:stick", "mcl_mangrove:mangrove_wood", "mcl_core:stick"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood_fence 3",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_wood", "mcl_core:stick", "mcl_mangrove:mangrove_wood"},
|
|
{"mcl_mangrove:mangrove_wood", "mcl_core:stick", "mcl_mangrove:mangrove_wood"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood 4",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_tree"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood 4",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_tree_bark"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood 4",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_stripped"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_mangrove:mangrove_wood 4",
|
|
recipe = {
|
|
{"mcl_mangrove:mangrove_stripped_bark"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:fence_wood",
|
|
burntime = 15,
|
|
})
|
|
|
|
local adjacents = {
|
|
vector.new(1,0,0),
|
|
vector.new(-1,0,0),
|
|
vector.new(0,0,1),
|
|
vector.new(0,0,-1),
|
|
}
|
|
|
|
minetest.register_abm({
|
|
label = "Waterlog mangrove roots",
|
|
nodenames = {"mcl_mangrove:mangrove_roots"},
|
|
neighbors = {"group:water"},
|
|
interval = 5,
|
|
chance = 5,
|
|
action = function(pos,value)
|
|
for _,v in pairs(adjacents) do
|
|
local n = minetest.get_node(vector.add(pos,v)).name
|
|
if minetest.get_item_group(n,"water") > 0 then
|
|
if n:find("river") then
|
|
minetest.swap_node(pos,{name="mcl_mangrove:river_water_logged_roots"})
|
|
return
|
|
else
|
|
minetest.swap_node(pos,{name="mcl_mangrove:water_logged_roots"})
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
local abm_nodes = table.copy(propagule_rooted_nodes)
|
|
table.insert(abm_nodes,"mcl_mangrove:propagule")
|
|
minetest.register_abm({
|
|
label = "Mangrove_tree_growth",
|
|
nodenames = abm_nodes,
|
|
interval = 30,
|
|
chance = 5,
|
|
action = function(pos,node)
|
|
local pr = PseudoRandom(pos.x+pos.y+pos.z)
|
|
local r = pr:next(1,5)
|
|
local path = modpath .."/schematics/mcl_mangrove_tree_"..tostring(r)..".mts"
|
|
local w = 5
|
|
local h = 10
|
|
local fp = true
|
|
pos.y = pos.y - 1
|
|
if table.indexof(propagule_rooted_nodes,node.name) ~= -1 then
|
|
local nn = minetest.find_nodes_in_area(vector.offset(pos,0,-1,0),vector.offset(pos,0,h,0),{"group:water","air"})
|
|
if #nn >= h then
|
|
minetest.place_schematic(pos, path, "random", function()
|
|
mcl_core.update_sapling_foliage_colors(pos)
|
|
local nnv = minetest.find_nodes_in_area(vector.offset(pos,-5,-1,-5),vector.offset(pos,5,h/2,5),{"mcl_core:vine"})
|
|
minetest.bulk_set_node(nnv,{"air"})
|
|
end, true, "place_center_x, place_center_z")
|
|
end
|
|
return
|
|
end
|
|
if r > 3 then h = 18 end
|
|
if mcl_core.check_growth_width(pos,w,h) then
|
|
minetest.place_schematic(pos, path, "random", nil, true, "place_center_x, place_center_z")
|
|
mcl_core.update_sapling_foliage_colors(pos)
|
|
end
|
|
end,
|
|
})
|