2022-07-28 21:11:21 +02:00
local S = minetest.get_translator ( " mcl_mangrove " )
2022-07-28 18:28:09 +02:00
2022-07-29 13:35:09 +02:00
local function get_drops ( fortune_level )
2022-07-28 18:28:09 +02:00
local apple_chances = { 200 , 180 , 160 , 120 , 40 }
local stick_chances = { 50 , 45 , 30 , 35 , 10 }
2022-07-29 13:35:09 +02:00
local sapling_chances = { 20 , 16 , 12 , 10 }
return {
max_items = 1 ,
items = {
{
items = { sapling } ,
rarity = sapling_chances [ fortune_level + 1 ] or sapling_chances [ fortune_level ]
} ,
{
items = { " mcl_core:stick 1 " } ,
rarity = stick_chances [ fortune_level + 1 ]
} ,
{
items = { " mcl_core:stick 2 " } ,
rarity = stick_chances [ fortune_level + 1 ]
} ,
{
2022-07-28 18:28:09 +02:00
items = { " mcl_core:apple " } ,
rarity = apple_chances [ fortune_level + 1 ]
2022-07-29 13:35:09 +02:00
}
}
}
2022-07-28 18:28:09 +02:00
end
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:mangrove_tree " , {
description = S ( " Mangrove Wood " ) ,
_doc_items_longdesc = S ( " The trunk of an Mangrove tree. " ) ,
2022-07-28 18:28:09 +02:00
_doc_items_hidden = false ,
2022-07-29 13:35:09 +02:00
tiles = { " mcl_mangrove_log_top.png " , " mcl_mangrove_log_top.png " , " mcl_mangrove_log.png " } ,
2022-07-28 18:28:09 +02:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
2022-07-29 13:35:09 +02:00
groups = { handy = 1 , axey = 1 , tree = 1 , flammable = 2 , building_block = 1 , material_wood = 1 , fire_encouragement = 5 , fire_flammability = 5 } ,
2022-07-28 18:28:09 +02:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2022-07-29 13:35:09 +02:00
on_place = mcl_util.rotate_axis ,
2022-07-28 18:28:09 +02:00
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:mangrove_tree_bark " , {
description = S ( " Mangrove Bark " ) ,
_doc_items_longdesc = S ( " The bark of an Mangrove tree. " ) ,
_doc_items_hidden = false ,
tiles = { " mcl_mangrove_log.png " , " mcl_mangrove_log.png " , " mcl_mangrove_log.png " } ,
paramtype2 = " facedir " ,
groups = { handy = 1 , axey = 1 , tree = 1 , flammable = 2 , building_block = 1 , material_wood = 1 , fire_encouragement = 5 , fire_flammability = 5 } ,
2022-07-28 18:28:09 +02:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2022-07-29 13:35:09 +02:00
on_place = mcl_util.rotate_axis ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
2022-07-28 18:28:09 +02:00
} )
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:mangrove_wood " , {
description = S ( " Mangrove Wood Planks " ) ,
_doc_items_longdesc = doc.sub . items.temp . build ,
_doc_items_hidden = false ,
tiles = { " mcl_mangrove_planks.png " } ,
2022-07-28 18:28:09 +02:00
2022-07-29 13:35:09 +02:00
is_ground_content = false ,
groups = { handy = 1 , axey = 1 , flammable = 3 , wood = 1 , building_block = 1 , material_wood = 1 , fire_encouragement = 5 , fire_flammability = 20 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
_mcl_blast_resistance = 3 ,
_mcl_hardness = 2 ,
2022-07-28 18:28:09 +02:00
} )
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:mangroveleaves " , {
description = S ( " Mangrove Leaves " ) ,
_doc_items_longdesc = S ( " mangrove leaves are grown from mangrove trees. " ) ,
2022-07-28 18:28:09 +02:00
_doc_items_hidden = false ,
2022-07-29 13:35:09 +02:00
drawtype = " allfaces_optional " ,
waving = 2 ,
2022-07-28 18:28:09 +02:00
place_param2 = 1 , -- Prevent leafdecay for placed nodes
2022-07-29 13:35:09 +02:00
tiles = { " mcl_mangrove_leaves.png " } ,
2022-07-28 18:28:09 +02:00
paramtype = " light " ,
2022-07-29 13:35:09 +02:00
groups = { handy = 1 , shearsy = 1 , swordy = 1 , leafdecay = 10 , flammable = 2 , leaves = 1 , deco_block = 1 , dig_by_piston = 1 , fire_encouragement = 30 , fire_flammability = 60 } ,
2022-07-28 18:28:09 +02:00
_mcl_shears_drop = true ,
2022-07-29 13:35:09 +02:00
sounds = mcl_sounds.node_sound_leaves_defaults ( ) ,
_mcl_blast_resistance = 0.2 ,
_mcl_hardness = 0.2 ,
2022-07-28 18:28:09 +02:00
_mcl_silk_touch_drop = true ,
2022-07-29 13:35:09 +02:00
_mcl_fortune_drop = { get_drops ( 1 ) , get_drops ( 2 ) , get_drops ( 3 ) , get_drops ( 4 ) } ,
2022-07-28 18:28:09 +02:00
} )
2022-07-29 13:35:09 +02:00
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 }
} ,
2022-07-28 18:28:09 +02:00
2022-07-29 13:35:09 +02:00
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 = function ( itemstack , user , pointed_thing )
2022-07-28 18:28:09 +02:00
-- Use pointed node's on_rightclick function first, if present
local node = minetest.get_node ( pointed_thing.under )
if user and not user : get_player_control ( ) . sneak then
if minetest.registered_nodes [ node.name ] and minetest.registered_nodes [ node.name ] . on_rightclick then
return minetest.registered_nodes [ node.name ] . on_rightclick ( pointed_thing.under , node , user , itemstack ) or itemstack
end
end
-- Place on dirt
if pointed_thing.under and node.name == " mcl_core:dirt " then
local protname = user : get_player_name ( )
if minetest.is_protected ( pointed_thing.under , protname ) then
minetest.record_protection_violation ( pointed_thing.under , protname )
return itemstack
end
minetest.set_node ( pointed_thing.under , { name = " mcl_mangrove:propagule_dirt " , param2 = node.param2 } )
minetest.sound_play ( mcl_sounds.node_sound_leaves_defaults { pos = pointed_thing.under , gain = 0.5 , max_hear_range = 16 } , true )
if not minetest.is_creative_enabled ( user : get_player_name ( ) ) then
itemstack : take_item ( 1 ) -- 1 use
2022-07-29 13:35:09 +02:00
return itemstack
end
2022-07-28 18:28:09 +02:00
end
-- Place on dirt _with_grass
if pointed_thing.under and node.name == " mcl_core:dirt_with_grass " then
local protname = user : get_player_name ( )
if minetest.is_protected ( pointed_thing.under , protname ) then
minetest.record_protection_violation ( pointed_thing.under , protname )
return itemstack
end
minetest.set_node ( pointed_thing.under , { name = " mcl_mangrove:propagule_dirt_with_grass " , param2 = node.param2 } )
minetest.sound_play ( mcl_sounds.node_sound_leaves_defaults { pos = pointed_thing.under , gain = 0.5 , max_hear_range = 16 } , true )
if not minetest.is_creative_enabled ( user : get_player_name ( ) ) then
itemstack : take_item ( 1 ) -- 1 use
2022-07-29 13:35:09 +02:00
return itemstack
end
2022-07-28 18:28:09 +02:00
end
2022-07-29 13:35:09 +02:00
if pointed_thing.under and node.name == " mcl_mud:mud " then
2022-07-28 18:28:09 +02:00
local protname = user : get_player_name ( )
if minetest.is_protected ( pointed_thing.under , protname ) then
minetest.record_protection_violation ( pointed_thing.under , protname )
return itemstack
end
minetest.set_node ( pointed_thing.under , { name = " mcl_mangrove:propagule_mud " , param2 = node.param2 } )
minetest.sound_play ( mcl_sounds.node_sound_leaves_defaults { pos = pointed_thing.under , gain = 0.5 , max_hear_range = 16 } , true )
if not minetest.is_creative_enabled ( user : get_player_name ( ) ) then
itemstack : take_item ( 1 ) -- 1 use
2022-07-29 13:35:09 +02:00
return itemstack
end
2022-07-28 18:28:09 +02:00
end
2022-07-29 13:35:09 +02:00
return mcl_util.generate_on_place_plant_function ( function ( pos , node )
local node_under = minetest.get_node_or_nil ( { x = pos.x , y = pos.y - 1 , z = pos.z } )
if not node_under then return false end
local nn = node_under.name
return ( ( minetest.get_item_group ( nn , " grass_block " ) == 1 ) or
nn == " mcl_core:podzol " or nn == " mcl_core:podzol_snow " or
nn == " mcl_core:dirt " )
end )
2022-07-28 18:28:09 +02:00
end
} )
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:mangrove_stripped_trunk " , {
description = " The stripped wood of an Mangove tree " ,
_doc_items_longdesc = " The stripped wood of an Mangove tree " ,
_doc_items_hidden = false ,
tiles = { " mcl_stripped_mangrove_log_top.png " , " mcl_stripped_mangrove_log_side.png " , } ,
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
2022-07-28 18:28:09 +02:00
2022-07-29 13:35:09 +02:00
groups = { handy = 1 , axey = 1 , tree = 1 , flammable = 2 , building_block = 1 , material_wood = 1 , fire_encouragement = 5 , fire_flammability = 5 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
on_rotate = on_rotate ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
minetest.register_node ( " mcl_mangrove:mangrove_roots " , {
description = " Mangrove_Roots " ,
_doc_items_longdesc = " 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_top.png " ,
" mcl_mangrove_roots_side.png " , " mcl_mangrove_roots_side.png " ,
" mcl_mangrove_roots_side.png " , " mcl_mangrove_roots_side.png "
} ,
paramtype = " light " ,
drawtype = " mesh " ,
mesh = " node.obj " ,
groups = {
handy = 1 , hoey = 1 , shearsy = 1 , axey = 1 , swordy = 1 , dig_by_piston = 0 ,
leaves = 1 , deco_block = 1 , flammable = 10 , fire_encouragement = 30 , fire_flammability = 60 , 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 " } ,
} )
mcl_flowerpots.register_potted_flower ( " mcl_mangrove:propagule " , {
name = " propagule " ,
desc = S ( " Mangrove Propagule " ) ,
image = " mcl_mangrove_propagule.png " ,
} )
minetest.register_node ( " mcl_mangrove:propagule_dirt " , {
description = " propagule_dirt " ,
_doc_items_longdesc = " " ,
_tt_help = " " ,
drawtype = " plantlike_rooted " ,
paramtype = " light " ,
paramtype2 = " meshoptions " ,
place_param2 = 1 ,
tiles = { " default_dirt.png " } ,
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_water = 0 , 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 = " mcl_core:dirt " ,
after_dig_node = function ( pos )
local node = minetest.get_node ( pos )
if minetest.get_item_group ( node.name , " dirt " ) == 0 then
minetest.set_node ( pos , { name = " mcl_core:dirt " } )
2022-07-28 18:28:09 +02:00
end
2022-07-29 13:35:09 +02:00
end ,
_mcl_hardness = 0 ,
_mcl_blast_resistance = 0 ,
_mcl_silk_touch_drop = true ,
} )
2022-07-28 18:28:09 +02:00
2022-07-29 13:35:09 +02:00
minetest.register_node ( " mcl_mangrove:propagule_mud " , {
description = " propagule_mud " ,
_doc_items_longdesc = " " ,
_tt_help = " " ,
drawtype = " plantlike_rooted " ,
paramtype = " light " ,
paramtype2 = " meshoptions " ,
place_param2 = 1 ,
tiles = { " mcl_mud.png " } ,
special_tiles = { { name = " mcl_mangrove_propagule_item.png " } } ,
inventory_image = " mcl_mangrove_propagule_item.png " ,
wield_image = " mcl_mangrove_propagule.png " ,
collision_box = {
type = " fixed " ,
fixed = { - 0.5 , - 0.5 , - 0.5 , 0.5 , 0.5 - 2 / 16 , 0.5 } ,
} ,
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_water = 0 , 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 = " mcl_mud:mud " ,
after_dig_node = function ( pos )
local node = minetest.get_node ( pos )
if minetest.get_item_group ( node.name , " dirt " ) == 0 then
minetest.set_node ( pos , { name = " mcl_mud:mud " } )
2022-07-28 18:28:09 +02:00
end
2022-07-29 13:35:09 +02:00
end ,
_mcl_hardness = 0 ,
_mcl_blast_resistance = 0 ,
_mcl_silk_touch_drop = true ,
} )
minetest.register_node ( " mcl_mangrove:propagule_dirt_with_grass " , {
description = " propagule_dirt_with_grass_ " ,
_doc_items_longdesc = " " ,
_tt_help = " " ,
drawtype = " plantlike_rooted " ,
paramtype = " meshoption " ,
paramtype2 = " color " ,
tiles = { " mcl_core_grass_block_top.png " , { name = " default_dirt.png " , color = " white " } } ,
overlay_tiles = { " mcl_core_grass_block_top.png " , " " , { name = " mcl_core_grass_block_side_overlay.png " , tileable_vertical = false } } ,
palette = " mcl_core_palette_grass.png " ,
palette_index = 0 ,
color = " #8EB971 " ,
special_tiles = { { name = " mcl_mangrove_propagule_item.png " } } ,
inventory_image = " mcl_mangrove_propagule_item.png " ,
wield_image = " mcl_mangrove_propagule.png " ,
collision_box = {
type = " fixed " ,
fixed = { - 0.5 , - 0.5 , - 0.5 , 0.5 , 0.5 - 2 / 16 , 0.5 } ,
} ,
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_water = 0 , 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 = " mcl_core:dirt_with_grass " ,
after_dig_node = function ( pos )
local node = minetest.get_node ( pos )
if minetest.get_item_group ( node.name , " dirt " ) == 0 then
minetest.set_node ( pos , { name = " mcl_core:dirt_with_grass " } )
end
end ,
_mcl_hardness = 0 ,
_mcl_blast_resistance = 0 ,
_mcl_silk_touch_drop = true ,
2022-07-28 18:28:09 +02:00
} )
2022-07-29 13:35:09 +02:00
local water_tex = " default_water_source_animated.png^[verticalframe:16:0 "
2022-07-28 18:28:09 +02:00
2022-07-29 12:48:37 +02:00
local wlroots = {
2022-07-28 18:28:09 +02:00
description = ( " water_logged_mangrove_roots " ) ,
_doc_items_entry_name = S ( " water_logged_roots " ) ,
_doc_items_longdesc =
( " Mangrove roots are decorative blocks that form as part of mangrove trees. " ) .. " \n \n " ..
( " Mangrove roots, despite being a full block, can be waterlogged and do not flow water out " ) .. " \n \n " ..
( " These cannot be crafted yet only occure when get in contact of water. " ) ,
_doc_items_hidden = false ,
tiles = {
" ( " .. water_tex .. " )^mcl_mangrove_roots_top.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_top.png " ,
" ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " ,
" ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_side.png "
} ,
sounds = mcl_sounds.node_sound_water_defaults ( ) ,
use_texture_alpha = USE_TEXTURE_ALPHA ,
is_ground_content = false ,
paramtype = " light " ,
walkable = true ,
pointable = true ,
diggable = true ,
buildable_to = flase ,
liquids_pointable = true ,
drop = " mcl_mangrove:mangrove_roots " ,
2022-07-29 13:35:09 +02:00
2022-07-28 18:28:09 +02:00
groups = {
2022-07-28 21:11:21 +02:00
handy = 1 , hoey = 1 , water = 3 , liquid = 3 , puts_out_fire = 1 , dig_by_piston = 1 , deco_block = 1 , not_in_creative_inventory = 1 } ,
2022-07-28 18:28:09 +02:00
_mcl_blast_resistance = 100 ,
2022-07-29 13:35:09 +02:00
_mcl_hardness = - 1 , -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
2022-07-28 18:28:09 +02:00
after_dig_node = function ( pos )
local node = minetest.get_node ( pos )
if minetest.get_item_group ( node.name , " water " ) == 0 then
minetest.set_node ( pos , { name = " mcl_core:water_source " } )
end
end ,
2022-07-29 12:48:37 +02:00
}
minetest.register_node ( " mcl_mangrove:water_logged_roots " , wlroots )
local rwlroots = table.copy ( wlroots )
water_tex = " default_river_water_source_animated.png^[verticalframe:16:0 "
rwlroots.tiles = {
" ( " .. water_tex .. " )^mcl_mangrove_roots_top.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_top.png " ,
" ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " ,
" ( " .. water_tex .. " )^mcl_mangrove_roots_side.png " , " ( " .. water_tex .. " )^mcl_mangrove_roots_side.png "
}
minetest.register_node ( " mcl_mangrove:river_water_logged_roots " , rwlroots )
2022-07-28 18:28:09 +02:00
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_top.png " ,
" mcl_mud.png^mcl_mangrove_roots_side.png " , " mcl_mud.png^mcl_mangrove_roots_side.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 ,
} )
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 ' ,
2022-07-29 13:35:09 +02:00
mesh = ' propagule_hanging.obj ' ,
2022-07-28 18:28:09 +02:00
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 " ,
} )
2022-07-29 13:35:09 +02:00
mcl_doors : register_door ( " mcl_mangrove:mangrove_door " , {
description = ( " Mangrove Door " ) ,
_doc_items_longdesc = " " ,
_doc_items_usagehelp = " " ,
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 " , " mcl_mangrove_planks.png " } ,
tiles_top = { " mcl_mangrove_door_top.png " , " mcl_mangrove_planks.png " } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
} )
mcl_doors : register_trapdoor ( " :mcl_doors: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_planks.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 Plank Fence " ) ,
" 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_core:stair_mangrove " ,
{ 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_core:slab_mangrove " ,
{ 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 ( {
output = " mcl_doors: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_doors:trapdoor_mangrove 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_doors:trapdoor_mangrove " ,
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 ( {
type = " fuel " ,
recipe = " group:fence_wood " ,
burntime = 15 ,
} )
2022-07-28 21:11:21 +02:00
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 " } ,
2022-07-29 12:48:37 +02:00
neighbors = { " group:water " } ,
2022-07-28 21:11:21 +02:00
interval = 5 ,
chance = 5 ,
action = function ( pos , value )
for _ , v in pairs ( adjacents ) do
2022-07-29 12:48:37 +02:00
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
2022-07-28 21:11:21 +02:00
end
end
end
} )
2022-07-28 18:28:09 +02:00
local propagule_nodes = {
" mcl_mangrove:propagule_dirt " ,
" mcl_mangrove:propagule_mud " ,
" mcl_mangrove:propagule_dirt_with_grass "
}
--minetest.register_abm({
-- label = "Mangrove_tree_growth",
-- nodenames = propagule_nodes,
-- interval = 2,
-- chance = 1,
-- action = function(pos,value)
-- local path = minetest.get_modpath("mcl_mangrove") .. --"/schematics/mcl_mangrove_tree_1.mts",
-- minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 4}, --path, -"random", nil, false)
--end
--})