2022-05-26 20:47:35 +03:00
local modname = minetest.get_current_modname ( )
local S = minetest.get_translator ( modname )
local modpath = minetest.get_modpath ( modname )
-- Warped and Crimson fungus
-- by debiankaios
-- adapted for mcl2 by cora
2022-04-29 13:24:29 +03:00
2022-05-26 20:47:35 +03:00
local function generate_warped_tree ( pos )
2022-06-19 01:17:43 +03:00
minetest.place_schematic ( pos , modpath .. " /schematics/warped_fungus_1.mts " , " random " , nil , false , " place_center_x,place_center_z " )
2022-05-26 20:47:35 +03:00
end
2022-04-29 13:24:29 +03:00
2022-05-26 20:47:35 +03:00
function generate_crimson_tree ( pos )
2022-06-19 01:17:43 +03:00
minetest.place_schematic ( pos , modpath .. " /schematics/crimson_fungus_1.mts " , " random " , nil , false , " place_center_x,place_center_z " )
2022-05-26 20:47:35 +03:00
end
2022-04-29 13:24:29 +03:00
2022-09-15 05:31:35 +03:00
function grow_vines ( pos , moreontop , vine , dir )
if dir == nil then dir = 1 end
local n
repeat
pos = vector.offset ( pos , 0 , dir , 0 )
n = minetest.get_node ( pos )
if n.name == " air " then
for i = 0 , math.max ( moreontop , 1 ) do
2022-11-28 12:19:45 +02:00
if minetest.get_node ( pos ) . name == " air " then
minetest.set_node ( vector.offset ( pos , 0 , i * dir , 0 ) , { name = vine } )
end
2022-06-19 14:27:12 +03:00
end
2022-09-15 05:31:35 +03:00
break
end
until n.name ~= " air " and n.name ~= vine
2022-06-19 14:27:12 +03:00
end
2022-09-15 06:02:48 +03:00
local nether_plants = {
[ " mcl_crimson:crimson_nylium " ] = {
" mcl_crimson:crimson_roots " ,
" mcl_crimson:crimson_fungus " ,
" mcl_crimson:warped_fungus " ,
} ,
[ " mcl_crimson:warped_nylium " ] = {
" mcl_crimson:warped_roots " ,
" mcl_crimson:warped_fungus " ,
" mcl_crimson:twisting_vines " ,
" mcl_crimson:nether_sprouts " ,
} ,
}
local function has_nylium_neighbor ( pos )
local p = minetest.find_node_near ( pos , 1 , { " mcl_crimson:warped_nylium " , " mcl_crimson:crimson_nylium " } )
if p then
return minetest.get_node ( p )
end
end
local function spread_nether_plants ( pos , node )
local n = node.name
local nn = minetest.find_nodes_in_area_under_air ( vector.offset ( pos , - 5 , - 3 , - 5 ) , vector.offset ( pos , 5 , 3 , 5 ) , { n } )
table.shuffle ( nn )
nn [ 1 ] = pos
for i = 1 , math.random ( 1 , math.min ( # nn , 12 ) ) do
2022-09-19 15:19:49 +03:00
local p = vector.offset ( nn [ i ] , 0 , 1 , 0 )
if minetest.get_node ( p ) . name == " air " then
minetest.set_node ( p , { name = nether_plants [ n ] [ math.random ( # nether_plants [ n ] ) ] } )
mcl_dye.add_bone_meal_particle ( vector.offset ( nn [ i ] , 0 , 1 , 0 ) )
end
2022-09-15 06:02:48 +03:00
end
end
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_fungus " , {
2022-05-04 01:24:09 +03:00
description = S ( " Warped Fungus Mushroom " ) ,
2022-04-29 13:24:29 +03:00
drawtype = " plantlike " ,
tiles = { " farming_warped_fungus.png " } ,
inventory_image = " farming_warped_fungus.png " ,
wield_image = " farming_warped_fungus.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
groups = { dig_immediate = 3 , mushroom = 1 , attached_node = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , enderman_takable = 1 , deco_block = 1 } ,
light_source = 1 ,
selection_box = {
type = " fixed " ,
fixed = { - 3 / 16 , - 0.5 , - 3 / 16 , 3 / 16 , - 2 / 16 , 3 / 16 } ,
} ,
node_placement_prediction = " " ,
on_rightclick = function ( pos , node , pointed_thing , player , itemstack )
2022-05-04 13:23:08 +03:00
if pointed_thing : get_wielded_item ( ) : get_name ( ) == " mcl_dye:white " then
local nodepos = minetest.get_node ( { x = pos.x , y = pos.y - 1 , z = pos.z } )
if nodepos.name == " mcl_crimson:warped_nylium " or nodepos.name == " mcl_nether:netherrack " then
local random = math.random ( 1 , 5 )
if random == 1 then
2022-09-19 15:19:49 +03:00
minetest.remove_node ( pos )
2022-05-04 13:23:08 +03:00
generate_warped_tree ( pos )
end
end
2022-05-04 01:24:09 +03:00
end
end ,
2022-04-29 13:24:29 +03:00
_mcl_blast_resistance = 0 ,
2021-07-19 11:11:16 +03:00
} )
2022-11-13 19:44:21 +02:00
mcl_flowerpots.register_potted_flower ( " mcl_crimson:warped_fungus " , {
name = " warped fungus " ,
desc = S ( " Warped Fungus Mushroom " ) ,
image = " farming_warped_fungus.png " ,
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:twisting_vines " , {
2022-05-04 01:24:09 +03:00
description = S ( " Twisting Vines " ) ,
2021-07-19 11:11:16 +03:00
drawtype = " plantlike " ,
tiles = { " twisting_vines_plant.png " } ,
inventory_image = " twisting_vines.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
climbable = true ,
buildable_to = true ,
groups = { dig_immediate = 3 , vines = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , deco_block = 1 , shearsy = 1 } ,
selection_box = {
type = " fixed " ,
fixed = { - 3 / 16 , - 0.5 , - 3 / 16 , 3 / 16 , 0.5 , 3 / 16 } ,
} ,
node_placement_prediction = " " ,
2022-11-28 12:43:09 +02:00
on_rightclick = function ( pos , node , clicker , itemstack , pointed_thing )
local pn = clicker : get_player_name ( )
2022-11-29 13:19:27 +02:00
if clicker : is_player ( ) and minetest.is_protected ( vector.offset ( pos , 0 , 1 , 0 ) , pn or " " ) then
2022-11-28 12:43:09 +02:00
minetest.record_protection_violation ( vector.offset ( pos , 0 , 1 , 0 ) , pn )
return itemstack
end
if clicker : get_wielded_item ( ) : get_name ( ) == " mcl_crimson:twisting_vines " then
2022-11-29 13:19:27 +02:00
if not minetest.is_creative_enabled ( clicker : get_player_name ( ) ) then
itemstack : take_item ( )
end
2022-09-15 05:31:35 +03:00
grow_vines ( pos , 1 , " mcl_crimson:twisting_vines " )
2022-11-28 12:43:09 +02:00
elseif clicker : get_wielded_item ( ) : get_name ( ) == " mcl_dye:white " then
2022-11-29 13:19:27 +02:00
if not minetest.is_creative_enabled ( clicker : get_player_name ( ) ) then
itemstack : take_item ( )
end
2022-09-15 05:31:35 +03:00
grow_vines ( pos , math.random ( 1 , 3 ) , " mcl_crimson:twisting_vines " )
2022-05-04 13:23:08 +03:00
end
2022-11-28 12:43:09 +02:00
return itemstack
2021-07-19 11:11:16 +03:00
end ,
drop = {
2022-05-04 13:23:08 +03:00
max_items = 1 ,
items = {
2022-05-04 01:12:53 +03:00
{ items = { " mcl_crimson:twisting_vines " } , rarity = 3 } ,
2022-05-04 13:23:08 +03:00
} ,
2021-07-19 11:11:16 +03:00
} ,
_mcl_shears_drop = true ,
_mcl_silk_touch_drop = true ,
2022-05-04 13:23:08 +03:00
_mcl_fortune_drop = {
items = {
{ items = { " mcl_crimson:twisting_vines " } , rarity = 3 } ,
} ,
items = {
{ items = { " mcl_crimson:twisting_vines " } , rarity = 1.8181818181818181 } ,
} ,
" mcl_crimson:twisting_vines " ,
" mcl_crimson:twisting_vines " ,
} ,
2022-05-04 01:24:09 +03:00
_mcl_blast_resistance = 0 ,
2021-07-19 11:11:16 +03:00
} )
2022-09-15 05:30:58 +03:00
minetest.register_node ( " mcl_crimson:weeping_vines " , {
description = S ( " Weeping Vines " ) ,
drawtype = " plantlike " ,
tiles = { " mcl_crimson_weeping_vines.png " } ,
inventory_image = " mcl_crimson_weeping_vines.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
climbable = true ,
buildable_to = true ,
groups = { dig_immediate = 3 , vines = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , deco_block = 1 , shearsy = 1 } ,
selection_box = {
type = " fixed " ,
fixed = { - 3 / 16 , - 0.5 , - 3 / 16 , 3 / 16 , 0.5 , 3 / 16 } ,
} ,
node_placement_prediction = " " ,
2022-11-28 12:43:09 +02:00
on_rightclick = function ( pos , node , clicker , itemstack , pointed_thing )
local pn = clicker : get_player_name ( )
2022-11-29 13:19:27 +02:00
if clicker : is_player ( ) and minetest.is_protected ( vector.offset ( pos , 0 , 1 , 0 ) , pn or " " ) then
2022-11-28 12:43:09 +02:00
minetest.record_protection_violation ( vector.offset ( pos , 0 , 1 , 0 ) , pn )
return itemstack
end
if clicker : get_wielded_item ( ) : get_name ( ) == " mcl_crimson:weeping_vines " then
2022-11-29 13:19:27 +02:00
if not minetest.is_creative_enabled ( clicker : get_player_name ( ) ) then
itemstack : take_item ( )
end
2022-09-15 05:30:58 +03:00
grow_vines ( pos , 1 , " mcl_crimson:weeping_vines " , - 1 )
2022-11-28 12:43:09 +02:00
elseif clicker : get_wielded_item ( ) : get_name ( ) == " mcl_dye:white " then
2022-11-29 13:19:27 +02:00
if not minetest.is_creative_enabled ( clicker : get_player_name ( ) ) then
itemstack : take_item ( )
end
2022-09-15 05:30:58 +03:00
grow_vines ( pos , math.random ( 1 , 3 ) , " mcl_crimson:weeping_vines " , - 1 )
end
2022-11-28 12:43:09 +02:00
return itemstack
2022-09-15 05:30:58 +03:00
end ,
drop = {
max_items = 1 ,
items = {
{ items = { " mcl_crimson:weeping_vines " } , rarity = 3 } ,
} ,
} ,
_mcl_shears_drop = true ,
_mcl_silk_touch_drop = true ,
_mcl_fortune_drop = {
items = {
{ items = { " mcl_crimson:weeping_vines " } , rarity = 3 } ,
} ,
items = {
{ items = { " mcl_crimson:weeping_vines " } , rarity = 1.8181818181818181 } ,
} ,
" mcl_crimson:weeping_vines " ,
" mcl_crimson:weeping_vines " ,
} ,
_mcl_blast_resistance = 0 ,
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:nether_sprouts " , {
2022-05-04 01:24:09 +03:00
description = S ( " Nether Sprouts " ) ,
2021-07-19 11:11:16 +03:00
drawtype = " plantlike " ,
tiles = { " nether_sprouts.png " } ,
inventory_image = " nether_sprouts.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
buildable_to = true ,
groups = { dig_immediate = 3 , vines = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , deco_block = 1 , shearsy = 1 } ,
selection_box = {
type = " fixed " ,
fixed = { - 4 / 16 , - 0.5 , - 4 / 16 , 4 / 16 , 0 , 4 / 16 } ,
} ,
node_placement_prediction = " " ,
drop = " " ,
_mcl_shears_drop = true ,
_mcl_silk_touch_drop = false ,
2022-05-04 01:24:09 +03:00
_mcl_blast_resistance = 0 ,
2021-07-19 11:11:16 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_roots " , {
2022-05-04 01:24:09 +03:00
description = S ( " Warped Roots " ) ,
2021-07-19 11:11:16 +03:00
drawtype = " plantlike " ,
tiles = { " warped_roots.png " } ,
inventory_image = " warped_roots.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
buildable_to = true ,
groups = { dig_immediate = 3 , vines = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , deco_block = 1 , shearsy = 1 } ,
selection_box = {
type = " fixed " ,
fixed = { - 6 / 16 , - 0.5 , - 6 / 16 , 6 / 16 , - 4 / 16 , 6 / 16 } ,
} ,
node_placement_prediction = " " ,
_mcl_silk_touch_drop = false ,
2022-05-04 01:24:09 +03:00
_mcl_blast_resistance = 0 ,
2022-04-29 13:24:29 +03:00
} )
2022-11-13 19:44:21 +02:00
mcl_flowerpots.register_potted_flower ( " mcl_crimson:warped_roots " , {
name = " warped roots " ,
desc = S ( " Warped Roots " ) ,
image = " warped_roots.png " ,
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_wart_block " , {
2022-05-04 01:24:09 +03:00
description = S ( " Warped Wart Block " ) ,
tiles = { " warped_wart_block.png " } ,
2022-05-04 13:23:08 +03:00
groups = { handy = 1 , hoe = 7 , swordy = 1 , deco_block = 1 } ,
2022-05-04 01:24:09 +03:00
_mcl_hardness = 2 ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:shroomlight " , {
2022-05-04 01:24:09 +03:00
description = S ( " Shroomlight " ) ,
tiles = { " shroomlight.png " } ,
2022-11-02 14:03:29 +02:00
groups = { handy = 1 , hoe = 7 , swordy = 1 , deco_block = 1 } ,
2022-06-17 16:54:36 +03:00
light_source = minetest.LIGHT_MAX ,
2022-05-04 13:23:08 +03:00
_mcl_hardness = 2 ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_hyphae " , {
2022-04-20 03:29:44 +03:00
description = S ( " Warped Hyphae " ) ,
_doc_items_longdesc = S ( " The stem of a warped hyphae " ) ,
_doc_items_hidden = false ,
tiles = {
" warped_hyphae.png " ,
2022-05-04 01:24:09 +03:00
" warped_hyphae.png " ,
" warped_hyphae_side.png " ,
" warped_hyphae_side.png " ,
" warped_hyphae_side.png " ,
" warped_hyphae_side.png " ,
} ,
2022-04-20 03:29:44 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
2022-05-04 13:23:08 +03:00
groups = { handy = 1 , axey = 1 , tree = 1 , building_block = 1 , material_wood = 1 } ,
2022-04-20 03:29:44 +03:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
2022-05-04 01:12:53 +03:00
_mcl_stripped_variant = " mcl_crimson:stripped_warped_hyphae " ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_nylium " , {
2022-05-04 01:24:09 +03:00
description = S ( " Warped Nylium " ) ,
2022-05-04 13:23:08 +03:00
tiles = {
" warped_nylium.png " ,
" mcl_nether_netherrack.png " ,
" mcl_nether_netherrack.png^warped_nylium_side.png " ,
" mcl_nether_netherrack.png^warped_nylium_side.png " ,
" mcl_nether_netherrack.png^warped_nylium_side.png " ,
" mcl_nether_netherrack.png^warped_nylium_side.png " ,
} ,
2022-05-04 01:24:09 +03:00
paramtype2 = " facedir " ,
is_ground_content = true ,
drop = " mcl_nether:netherrack " ,
2022-05-04 13:23:08 +03:00
groups = { pickaxey = 1 , building_block = 1 , material_stone = 1 } ,
_mcl_hardness = 0.4 ,
_mcl_blast_resistance = 0.4 ,
2022-05-04 01:24:09 +03:00
_mcl_silk_touch_drop = true ,
2022-04-29 13:24:29 +03:00
} )
2022-04-20 00:11:01 +03:00
--Stem bark, stripped stem and bark
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_hyphae_bark " , {
2022-05-04 13:23:08 +03:00
description = S ( " Warped Hyphae Bark " ) ,
_doc_items_longdesc = S ( " This is a decorative block surrounded by the bark of an hyphae. " ) ,
tiles = { " warped_hyphae_side.png " } ,
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , bark = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
is_ground_content = false ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
_mcl_stripped_variant = " mcl_crimson:stripped_warped_hyphae_bark " ,
} )
2022-04-20 00:11:01 +03:00
minetest.register_craft ( {
2022-05-04 13:23:08 +03:00
output = " mcl_crimson:warped_hyphae_bark 3 " ,
recipe = {
{ " mcl_crimson:warped_hyphae " , " mcl_crimson:warped_hyphae " } ,
{ " mcl_crimson:warped_hyphae " , " mcl_crimson:warped_hyphae " } ,
} ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:stripped_warped_hyphae " , {
2022-11-05 03:12:46 +02:00
description = S ( " Stripped Warped Hyphae " ) ,
2022-06-18 02:48:33 +03:00
_doc_items_longdesc = S ( " The stripped hyphae of a warped fungus " ) ,
2022-05-04 13:23:08 +03:00
_doc_items_hidden = false ,
2022-06-18 15:28:05 +03:00
tiles = { " warped_stem_stripped_top.png " , " warped_stem_stripped_top.png " , " warped_stem_stripped_side.png " } ,
2022-05-04 13:23:08 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , tree = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:stripped_warped_hyphae_bark " , {
2022-11-05 03:12:46 +02:00
description = S ( " Stripped Warped Hyphae Bark " ) ,
2022-06-18 02:48:33 +03:00
_doc_items_longdesc = S ( " The stripped hyphae bark of a warped fungus " ) ,
2022-11-05 03:12:46 +02:00
tiles = { " warped_stem_stripped_side.png " } ,
2022-05-04 13:23:08 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , bark = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
is_ground_content = false ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
2022-04-20 00:11:01 +03:00
minetest.register_craft ( {
2022-05-04 13:23:08 +03:00
output = " mcl_crimson:stripped_warped_hyphae_bark 3 " ,
recipe = {
{ " mcl_crimson:stripped_warped_hyphae " , " mcl_crimson:stripped_warped_hyphae " } ,
{ " mcl_crimson:stripped_warped_hyphae " , " mcl_crimson:stripped_warped_hyphae " } ,
} ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:warped_hyphae_wood " , {
2022-05-04 01:24:09 +03:00
description = S ( " Warped Hyphae Wood " ) ,
tiles = { " warped_hyphae_wood.png " } ,
2022-05-04 13:23:08 +03:00
groups = { handy = 5 , axey = 1 , flammable = 3 , wood = 1 , building_block = 1 , material_wood = 1 , fire_encouragement = 5 , fire_flammability = 20 } ,
2022-11-26 13:54:34 +02:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2022-05-04 01:24:09 +03:00
_mcl_hardness = 2 ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
mcl_stairs.register_stair_and_slab_simple ( " warped_hyphae_wood " , " mcl_crimson:warped_hyphae_wood " , S ( " Warped Stair " ) , S ( " Warped Slab " ) , S ( " Double Warped Slab " ) )
2022-04-29 13:24:29 +03:00
minetest.register_craft ( {
2022-05-04 01:24:09 +03:00
output = " mcl_crimson:warped_hyphae_wood 4 " ,
recipe = {
2022-05-04 13:23:08 +03:00
{ " mcl_crimson:warped_hyphae " } ,
} ,
2022-04-29 13:24:29 +03:00
} )
minetest.register_craft ( {
2022-06-18 02:48:33 +03:00
output = " mcl_crimson:warped_nylium 2 " ,
2022-05-04 01:24:09 +03:00
recipe = {
2022-05-04 13:23:08 +03:00
{ " mcl_crimson:warped_wart_block " } ,
{ " mcl_nether:netherrack " } ,
} ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_fungus " , {
2022-05-04 01:24:09 +03:00
description = S ( " Crimson Fungus Mushroom " ) ,
2022-04-29 13:24:29 +03:00
drawtype = " plantlike " ,
tiles = { " farming_crimson_fungus.png " } ,
inventory_image = " farming_crimson_fungus.png " ,
wield_image = " farming_crimson_fungus.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
groups = { dig_immediate = 3 , mushroom = 1 , attached_node = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , enderman_takable = 1 , deco_block = 1 } ,
light_source = 1 ,
selection_box = {
type = " fixed " ,
fixed = { - 3 / 16 , - 0.5 , - 3 / 16 , 3 / 16 , - 2 / 16 , 3 / 16 } ,
} ,
node_placement_prediction = " " ,
on_rightclick = function ( pos , node , pointed_thing , player )
2022-05-04 13:23:08 +03:00
if pointed_thing : get_wielded_item ( ) : get_name ( ) == " mcl_dye:white " then
local nodepos = minetest.get_node ( vector.offset ( pos , 0 , - 1 , 0 ) )
if nodepos.name == " mcl_crimson:crimson_nylium " or nodepos.name == " mcl_nether:netherrack " then
local random = math.random ( 1 , 5 )
if random == 1 then
2022-09-19 15:19:49 +03:00
minetest.remove_node ( pos )
2022-05-04 13:23:08 +03:00
generate_crimson_tree ( pos )
end
end
2022-05-04 01:24:09 +03:00
end
end ,
2022-04-29 13:24:29 +03:00
_mcl_blast_resistance = 0 ,
} )
2022-11-13 19:44:21 +02:00
mcl_flowerpots.register_potted_flower ( " mcl_crimson:crimson_fungus " , {
name = " crimson fungus " ,
desc = S ( " Crimson Fungus Mushroom " ) ,
image = " farming_crimson_fungus.png " ,
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_roots " , {
2022-05-04 01:24:09 +03:00
description = S ( " Crimson Roots " ) ,
2021-07-19 11:11:16 +03:00
drawtype = " plantlike " ,
tiles = { " crimson_roots.png " } ,
inventory_image = " crimson_roots.png " ,
sunlight_propagates = true ,
paramtype = " light " ,
walkable = false ,
buildable_to = true ,
groups = { dig_immediate = 3 , vines = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , dig_by_piston = 1 , deco_block = 1 , shearsy = 1 } ,
selection_box = {
type = " fixed " ,
fixed = { - 6 / 16 , - 0.5 , - 6 / 16 , 6 / 16 , - 4 / 16 , 6 / 16 } ,
} ,
node_placement_prediction = " " ,
_mcl_silk_touch_drop = false ,
2022-05-04 01:24:09 +03:00
_mcl_blast_resistance = 0 ,
2021-07-19 11:11:16 +03:00
} )
2022-11-13 19:44:21 +02:00
mcl_flowerpots.register_potted_flower ( " mcl_crimson:crimson_roots " , {
name = " crimson roots " ,
desc = S ( " Crimson Roots " ) ,
image = " crimson_roots.png " ,
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_hyphae " , {
2022-04-20 03:29:44 +03:00
description = S ( " Crimson Hyphae " ) ,
_doc_items_longdesc = S ( " The stem of a crimson hyphae " ) ,
_doc_items_hidden = false ,
tiles = {
" crimson_hyphae.png " ,
2022-05-04 01:24:09 +03:00
" crimson_hyphae.png " ,
" crimson_hyphae_side.png " ,
" crimson_hyphae_side.png " ,
" crimson_hyphae_side.png " ,
" crimson_hyphae_side.png " ,
} ,
2022-04-20 03:29:44 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
2022-05-04 13:23:08 +03:00
groups = { handy = 1 , axey = 1 , tree = 1 , building_block = 1 , material_wood = 1 } ,
2022-04-20 03:29:44 +03:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
2022-06-18 15:28:05 +03:00
_mcl_stripped_variant = " mcl_crimson:stripped_crimson_hyphae " ,
2022-04-29 13:24:29 +03:00
} )
2022-04-20 00:11:01 +03:00
--Stem bark, stripped stem and bark
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_hyphae_bark " , {
2022-05-04 13:23:08 +03:00
description = S ( " Crimson Hyphae Bark " ) ,
_doc_items_longdesc = S ( " This is a decorative block surrounded by the bark of an hyphae. " ) ,
tiles = { " crimson_hyphae_side.png " } ,
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , bark = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
is_ground_content = false ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
_mcl_stripped_variant = " mcl_crimson:stripped_crimson_hyphae_bark " ,
} )
2022-04-20 00:11:01 +03:00
minetest.register_craft ( {
2022-05-04 13:23:08 +03:00
output = " mcl_crimson:crimson_hyphae_bark 3 " ,
recipe = {
{ " mcl_crimson:crimson_hyphae " , " mcl_crimson:crimson_hyphae " } ,
{ " mcl_crimson:crimson_hyphae " , " mcl_crimson:crimson_hyphae " } ,
} ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:stripped_crimson_hyphae " , {
2022-05-04 13:23:08 +03:00
description = S ( " Stripped Crimson Hyphae " ) ,
_doc_items_longdesc = S ( " The stripped stem of a crimson hyphae " ) ,
_doc_items_hidden = false ,
2022-06-18 02:48:33 +03:00
tiles = { " crimson_stem_stripped_top.png " , " crimson_stem_stripped_top.png " , " crimson_stem_stripped_side.png " } ,
2022-05-04 13:23:08 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , tree = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:stripped_crimson_hyphae_bark " , {
2022-05-04 13:23:08 +03:00
description = S ( " Stripped Crimson Hyphae Bark " ) ,
_doc_items_longdesc = S ( " The stripped wood of a crimson hyphae " ) ,
2022-06-18 02:48:33 +03:00
tiles = { " crimson_stem_stripped_side.png " } ,
2022-05-04 13:23:08 +03:00
paramtype2 = " facedir " ,
on_place = mcl_util.rotate_axis ,
groups = { handy = 1 , axey = 1 , bark = 1 , building_block = 1 , material_wood = 1 } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
is_ground_content = false ,
_mcl_blast_resistance = 2 ,
_mcl_hardness = 2 ,
} )
2022-04-20 00:11:01 +03:00
minetest.register_craft ( {
2022-05-04 13:23:08 +03:00
output = " mcl_crimson:stripped_crimson_hyphae_bark 3 " ,
recipe = {
{ " mcl_crimson:stripped_crimson_hyphae " , " mcl_crimson:stripped_crimson_hyphae " } ,
{ " mcl_crimson:stripped_crimson_hyphae " , " mcl_crimson:stripped_crimson_hyphae " } ,
} ,
} )
2022-04-20 00:11:01 +03:00
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_hyphae_wood " , {
2022-05-04 01:24:09 +03:00
description = S ( " Crimson Hyphae Wood " ) ,
tiles = { " crimson_hyphae_wood.png " } ,
2022-05-04 13:23:08 +03:00
groups = { handy = 5 , axey = 1 , wood = 1 , building_block = 1 , material_wood = 1 } ,
2022-11-26 13:54:34 +02:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2022-05-04 01:24:09 +03:00
_mcl_hardness = 2 ,
2022-04-29 13:24:29 +03:00
} )
2022-05-04 01:12:53 +03:00
minetest.register_node ( " mcl_crimson:crimson_nylium " , {
2022-05-04 01:24:09 +03:00
description = S ( " Crimson Nylium " ) ,
2022-05-04 13:23:08 +03:00
tiles = {
" crimson_nylium.png " ,
" mcl_nether_netherrack.png " ,
" mcl_nether_netherrack.png^crimson_nylium_side.png " ,
" mcl_nether_netherrack.png^crimson_nylium_side.png " ,
" mcl_nether_netherrack.png^crimson_nylium_side.png " ,
" mcl_nether_netherrack.png^crimson_nylium_side.png " ,
} ,
groups = { pickaxey = 1 , building_block = 1 , material_stone = 1 } ,
2022-05-04 01:24:09 +03:00
paramtype2 = " facedir " ,
is_ground_content = true ,
drop = " mcl_nether:netherrack " ,
2022-05-04 13:23:08 +03:00
_mcl_hardness = 0.4 ,
_mcl_blast_resistance = 0.4 ,
2022-05-04 01:24:09 +03:00
_mcl_silk_touch_drop = true ,
2022-04-29 13:24:29 +03:00
} )
minetest.register_craft ( {
2022-05-04 01:24:09 +03:00
output = " mcl_crimson:crimson_hyphae_wood 4 " ,
recipe = {
2022-05-04 13:23:08 +03:00
{ " mcl_crimson:crimson_hyphae " } ,
} ,
2022-04-29 13:24:29 +03:00
} )
minetest.register_craft ( {
2022-06-18 02:48:33 +03:00
output = " mcl_crimson:crimson_nylium 2 " ,
2022-05-04 01:24:09 +03:00
recipe = {
2022-05-04 13:23:08 +03:00
{ " mcl_nether:nether_wart " } ,
{ " mcl_nether:netherrack " } ,
} ,
2022-04-29 13:24:29 +03:00
} )
2022-08-24 08:26:09 +03:00
mcl_stairs.register_stair_and_slab_simple ( " crimson_hyphae_wood " , " mcl_crimson:crimson_hyphae_wood " , S ( " Crimson Stair " ) , S ( " Crimson Slab " ) , S ( " Double Crimson Slab " ) )
2022-04-29 13:24:29 +03:00
2022-09-15 06:02:48 +03:00
mcl_dye.register_on_bone_meal_apply ( function ( pt , user )
if not pt.type == " node " then return end
local node = minetest.get_node ( pt.under )
if node.name == " mcl_nether:netherrack " then
local n = has_nylium_neighbor ( pt.under )
if n then
minetest.set_node ( pt.under , n )
end
elseif node.name == " mcl_crimson:warped_nylium " or node.name == " mcl_crimson:crimson_nylium " then
spread_nether_plants ( pt.under , node )
end
end )
2022-11-03 15:28:52 +02:00
mcl_doors : register_door ( " mcl_crimson:crimson_door " , {
description = S ( " Crimson 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_crimson_crimson_door.png " ,
groups = { handy = 1 , axey = 1 , material_wood = 1 , flammable =- 1 } ,
_mcl_hardness = 3 ,
_mcl_blast_resistance = 3 ,
tiles_bottom = { " mcl_crimson_crimson_door_bottom.png " , " crimson_hyphae_wood.png " } ,
tiles_top = { " mcl_crimson_crimson_door_top.png " , " crimson_hyphae_wood.png " } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
} )
mcl_doors : register_trapdoor ( " mcl_crimson:crimson_trapdoor " , {
description = S ( " Crimson 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_crimson_crimson_trapdoor.png " ,
tile_side = " crimson_hyphae_wood.png " ,
wield_image = " mcl_crimson_crimson_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 ( ) ,
} )
2022-11-03 23:08:15 +02:00
mcl_fences.register_fence_and_fence_gate (
" crimson_fence " ,
S ( " Crimson Fence " ) ,
S ( " Crimson Fence Gate " ) ,
" mcl_crimson_crimson_fence.png " ,
{ handy = 1 , axey = 1 , flammable = 2 , fence_wood = 1 , fire_encouragement = 5 , fire_flammability = 20 } ,
minetest.registered_nodes [ " mcl_crimson:crimson_hyphae " ] . _mcl_hardness ,
minetest.registered_nodes [ " mcl_crimson:crimson_hyphae " ] . _mcl_blast_resistance ,
{ " group:fence_wood " } ,
mcl_sounds.node_sound_wood_defaults ( ) )
2022-11-03 15:28:52 +02:00
mcl_doors : register_door ( " mcl_crimson:warped_door " , {
description = S ( " Warped 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_crimson_warped_door.png " ,
groups = { handy = 1 , axey = 1 , material_wood = 1 , flammable =- 1 } ,
_mcl_hardness = 3 ,
_mcl_blast_resistance = 3 ,
tiles_bottom = { " mcl_crimson_warped_door_bottom.png " , " warped_hyphae_wood.png " } ,
tiles_top = { " mcl_crimson_warped_door_top.png " , " warped_hyphae_wood.png " } ,
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
} )
mcl_doors : register_trapdoor ( " mcl_crimson:warped_trapdoor " , {
description = S ( " Warped 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_crimson_warped_trapdoor.png " ,
tile_side = " warped_hyphae_wood.png " ,
wield_image = " mcl_crimson_warped_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 ( ) ,
} )
2022-11-03 23:07:57 +02:00
mcl_fences.register_fence_and_fence_gate (
" warped_fence " ,
S ( " Warped Fence " ) ,
S ( " Warped Fence Gate " ) ,
" mcl_crimson_warped_fence.png " ,
{ handy = 1 , axey = 1 , flammable = 2 , fence_wood = 1 , fire_encouragement = 5 , fire_flammability = 20 } ,
minetest.registered_nodes [ " mcl_crimson:warped_hyphae " ] . _mcl_hardness ,
minetest.registered_nodes [ " mcl_crimson:warped_hyphae " ] . _mcl_blast_resistance ,
{ " group:fence_wood " } ,
mcl_sounds.node_sound_wood_defaults ( ) )
2022-11-05 03:07:07 +02:00
-- Door, Trapdoor, and Fence/Gate Crafting
local crimson_wood = " mcl_crimson:crimson_hyphae_wood "
local warped_wood = " mcl_crimson:warped_hyphae_wood "
minetest.register_craft ( {
output = " mcl_crimson:crimson_door 3 " ,
recipe = {
{ crimson_wood , crimson_wood } ,
{ crimson_wood , crimson_wood } ,
{ crimson_wood , crimson_wood }
}
} )
minetest.register_craft ( {
output = " mcl_crimson:warped_door 3 " ,
recipe = {
{ warped_wood , warped_wood } ,
{ warped_wood , warped_wood } ,
{ warped_wood , warped_wood }
}
} )
minetest.register_craft ( {
output = " mcl_crimson:crimson_trapdoor 2 " ,
recipe = {
{ crimson_wood , crimson_wood , crimson_wood } ,
{ crimson_wood , crimson_wood , crimson_wood } ,
}
} )
minetest.register_craft ( {
output = " mcl_crimson:warped_trapdoor 2 " ,
recipe = {
{ warped_wood , warped_wood , warped_wood } ,
{ warped_wood , warped_wood , warped_wood } ,
}
} )
minetest.register_craft ( {
output = " mcl_crimson:crimson_fence 3 " ,
recipe = {
{ crimson_wood , " mcl_core:stick " , crimson_wood } ,
{ crimson_wood , " mcl_core:stick " , crimson_wood } ,
}
} )
minetest.register_craft ( {
output = " mcl_crimson:warped_fence 3 " ,
recipe = {
{ warped_wood , " mcl_core:stick " , warped_wood } ,
{ warped_wood , " mcl_core:stick " , warped_wood } ,
}
} )
minetest.register_craft ( {
output = " mcl_crimson:crimson_fence_gate " ,
recipe = {
{ " mcl_core:stick " , crimson_wood , " mcl_core:stick " } ,
{ " mcl_core:stick " , crimson_wood , " mcl_core:stick " } ,
}
} )
minetest.register_craft ( {
output = " mcl_crimson:warped_fence_gate " ,
recipe = {
{ " mcl_core:stick " , warped_wood , " mcl_core:stick " } ,
{ " mcl_core:stick " , warped_wood , " mcl_core:stick " } ,
}
} )