diff --git a/mods/ITEMS/mcl_lush_caves/dripleaf.lua b/mods/ITEMS/mcl_lush_caves/dripleaf.lua new file mode 100644 index 000000000..6cab77d9a --- /dev/null +++ b/mods/ITEMS/mcl_lush_caves/dripleaf.lua @@ -0,0 +1,266 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +local plane_adjacents = { + vector.new(1,0,0), + vector.new(-1,0,0), + vector.new(0,0,1), + vector.new(0,0,-1) +} + +local function find_top(pos,node) + local p = pos + repeat + p = vector.offset(p,0,1,0) + until minetest.get_node(p).name ~= node.name + return p +end + +local function get_height(pos,node) + local p = pos + local i = 0 + repeat + i = i + 1 + p = vector.offset(p,0,-1,0) + until minetest.get_node(p).name ~= node.name + return i - 1 +end + +function mcl_lush_caves.dripleaf_grow(pos, node) + local t = find_top(pos,node) + local h = get_height(t,node) + local target = vector.offset(t,0,1,0) + if minetest.get_node(target).name ~= "air" then return end + if h >= 5 then return end + minetest.set_node(t,node) + minetest.set_node(target,{name = "mcl_lush_caves:dripleaf_big"}) +end + +minetest.register_node("mcl_lush_caves:dripleaf_big_waterroot", { + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "leveled", + place_param2 = 16, + tiles = { "default_clay.png" }, + special_tiles = { + { name = "mcl_lush_caves_big_dripleaf_stem.png", + animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, + tileable_vertical = true, + } + }, + inventory_image = "mcl_lush_caves_big_dripleaf_stem.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 = { handy = 1, dig_immediate = 3, not_in_creative_inventory = 1 }, + drop = "", + node_placement_prediction = "", + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, + _on_bone_meal = function(itemstack,placer, pointed_thing, pos, node) + return mcl_lush_caves.dripleaf_grow(pos,node) + end +}) +minetest.register_node("mcl_lush_caves:dripleaf_big_stem", { + description = S("Dripleaf stem"), + _doc_items_create_entry = S("Dripleaf stem"), + _doc_items_entry_name = S("Dripleaf stem"), + _doc_items_longdesc = S("Dripleaf stem"), + paramtype = "light", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + tiles = {"mcl_lush_caves_big_dripleaf_stem.png"}, + inventory_image = "mcl_lush_caves_big_dripleaf_stem.png", + wield_image = "mcl_lush_caves_big_dripleaf_stem.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + }, + drop = "", + groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, destroy_by_lava_flow=1, dig_by_piston=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, + on_construct = function(pos) + local p = pos + local l = 0 + local in_water = false + for _,a in pairs(plane_adjacents) do + if minetest.get_item_group(minetest.get_node(vector.add(pos,a)).name,"water") > 0 then + in_water = true + end + end + if not in_water then return end + repeat + l = l + 1 + p = vector.offset(p,0,1,0) + until minetest.get_item_group(minetest.get_node(p).name,"water") <= 0 + minetest.set_node(p,{name = "mcl_lush_caves:dripleaf_big"}) + minetest.set_node(vector.offset(pos,0,-1,0),{ name = "mcl_lush_caves:dripleaf_big_waterroot", param2 = l * 16}) + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if itemstack:get_name() ~= "mcl_dye:white" then return itemstack end + itemstack:take_item(1) + mcl_lush_caves.dripleaf_grow(pos,node) + end +}) +local dripleaf = { + description = S("Dripleaf"), + _doc_items_create_entry = S("Dripleaf"), + _doc_items_entry_name = S("Dripleaf"), + _doc_items_longdesc = S("Dripleaf"), + paramtype = "light", + place_param2 = 0, + sunlight_propagates = true, + walkable = true, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + tiles = {"mcl_lush_caves_big_dripleaf_top.png"}, + inventory_image = "mcl_lush_caves_big_dripleaf_top.png", + wield_image = "mcl_lush_caves_big_dripleaf_top.png", + use_texture_alpha = "clip", + selection_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if itemstack:get_name() ~= "mcl_dye:white" then return itemstack end + itemstack:take_item(1) + mcl_lush_caves.dripleaf_grow(vector.offset(pos,0,-1,0),{name = "mcl_lush_caves:dripleaf_big_stem" }) + end +} +local dripleaf_tipped = table.copy(dripleaf) +dripleaf_tipped.walkable = false +dripleaf_tipped.tiles = {"mcl_lush_caves_big_dripleaf_tip.png"} +dripleaf_tipped.on_timer = function(p,e) + minetest.swap_node(p,{name="mcl_lush_caves:dripleaf_big"}) +end + +dripleaf.mesecons = {effector = { + action_on = function(pos, node) + node.param2 = 1 + minetest.swap_node(pos, node) + end, + action_off = function(pos, node) + node.param2 = 0 + minetest.swap_node(pos, node) + end, + rules = mesecon.rules.alldirs, +}} +local player_dripleaf = {} +minetest.register_globalstep(function(dtime) + for _,p in pairs(minetest.get_connected_players()) do + local pos = p:get_pos() + local n = minetest.get_node(pos) + if n.name == "mcl_lush_caves:dripleaf_big" and n.param2 == 0 then + if not player_dripleaf[p] then player_dripleaf[p] = 0 end + player_dripleaf[p] = player_dripleaf[p] + dtime + if player_dripleaf[p] > 1 then + minetest.swap_node(pos,{name = "mcl_lush_caves:dripleaf_big_tipped"}) + player_dripleaf[p] = nil + local t = minetest.get_node_timer(pos) + t:start(3) + end + end + end +end) + + +minetest.register_node("mcl_lush_caves:dripleaf_big",dripleaf) +minetest.register_node("mcl_lush_caves:dripleaf_big_tipped",dripleaf_tipped) + +minetest.register_node("mcl_lush_caves:dripleaf_small_stem", { + description = S("Small dripleaf stem"), + _doc_items_create_entry = S("Small dripleaf stem"), + _doc_items_entry_name = S("Small dripleaf stem"), + _doc_items_longdesc = S("Small dripleaf stem"), + paramtype = "light", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + tiles = {"mcl_lush_caves_small_dripleaf_stem_top.png"}, + inventory_image = "mcl_lush_caves_small_dripleaf_stem_top.png", + wield_image = "mcl_lush_caves_small_dripleaf_stem_top.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + }, + groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, +}) + +minetest.register_node("mcl_lush_caves:dripleaf_small", { + description = S("Dripleaf"), + _doc_items_create_entry = S("Dripleaf"), + _doc_items_entry_name = S("Dripleaf"), + _doc_items_longdesc = S("Dripleaf"), + paramtype = "light", + place_param2 = 3, + sunlight_propagates = true, + walkable = true, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + tiles = {"mcl_lush_caves_small_dripleaf_top.png"}, + inventory_image = "mcl_lush_caves_small_dripleaf_top.png", + wield_image = "mcl_lush_caves_small_dripleaf_top.png", + use_texture_alpha = "clip", + selection_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, +}) + + +local player_dripleaf = {} +minetest.register_globalstep(function(dtime) + for _,p in pairs(minetest.get_connected_players()) do + local pos = p:get_pos() + local n = minetest.get_node(pos) + if n.name == "mcl_lush_caves:dripleaf_big" and n.param2 == 0 then + if not player_dripleaf[p] then player_dripleaf[p] = 0 end + player_dripleaf[p] = player_dripleaf[p] + dtime + if player_dripleaf[p] > 1 then + minetest.swap_node(pos,{name = "mcl_lush_caves:dripleaf_big_tipped"}) + player_dripleaf[p] = nil + local t = minetest.get_node_timer(pos) + t:start(3) + end + end + end +end) diff --git a/mods/ITEMS/mcl_lush_caves/init.lua b/mods/ITEMS/mcl_lush_caves/init.lua index b21dfa0a1..24c03dd76 100644 --- a/mods/ITEMS/mcl_lush_caves/init.lua +++ b/mods/ITEMS/mcl_lush_caves/init.lua @@ -1,6 +1,6 @@ +mcl_lush_caves = {} local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local S = minetest.get_translator(modname) local adjacents = { vector.new(1,0,0), @@ -9,47 +9,16 @@ local adjacents = { vector.new(0,0,-1), vector.new(0,-1,0) } -local plane_adjacents = { - vector.new(1,0,0), - vector.new(-1,0,0), - vector.new(0,0,1), - vector.new(0,0,-1) -} + local function vector_distance_xz(a, b) return vector.distance( { x=a.x, y=0, z=a.z }, { x=b.x, y=0, z=b.z } ) end -mcl_lush_caves = {} -local function find_top(pos,node) - local p = pos - repeat - p = vector.offset(p,0,1,0) - until minetest.get_node(p).name ~= node.name - return p -end - -local function get_height(pos,node) - local p = pos - local i = 0 - repeat - i = i + 1 - p = vector.offset(p,0,-1,0) - until minetest.get_node(p).name ~= node.name - return i - 1 -end - -local function dripleaf_grow(pos, node) - local t = find_top(pos,node) - local h = get_height(t,node) - local target = vector.offset(t,0,1,0) - if minetest.get_node(target).name ~= "air" then return end - if h >= 5 then return end - minetest.set_node(t,node) - minetest.set_node(target,{name = "mcl_lush_caves:dripleaf_big"}) -end +dofile(modpath.."/nodes.lua") +dofile(modpath.."/dripleaf.lua") function mcl_lush_caves.makelake(pos,def,pr) local p1 = vector.offset(pos,-5,-2,-5) @@ -84,7 +53,7 @@ function mcl_lush_caves.makelake(pos,def,pr) minetest.set_node(vector.offset(d,0,-1,0),{name="mcl_lush_caves:dripleaf_big_waterroot"}) minetest.registered_nodes["mcl_lush_caves:dripleaf_big_stem"].on_construct(d) for ii = 1, pr:next(1,4) do - dripleaf_grow(d,{name = "mcl_lush_caves:dripleaf_big_stem"}) + mcl_lush_caves.dripleaf_grow(d,{name = "mcl_lush_caves:dripleaf_big_stem"}) end end end @@ -119,504 +88,7 @@ function mcl_lush_caves.makeazalea(pos,def,pr) return true end -minetest.register_node("mcl_lush_caves:lake_structblock", {drawtype="airlike",walkable = false,pointable=false,groups = {structblock=1,not_in_creative_inventory=1},}) -minetest.register_node("mcl_lush_caves:azalea_structblock", {drawtype="airlike",walkable = false,pointable=false,groups = {structblock=1,not_in_creative_inventory=1},}) -minetest.register_node("mcl_lush_caves:moss", { - description = S("Moss"), - _doc_items_longdesc = S("Moss is a green block found in lush caves"), - _doc_items_entry_name = "moss", - _doc_items_hidden = false, - tiles = {"mcl_lush_caves_moss_block.png"}, - is_ground_content = false, - groups = {handy=1, hoey=2, dirt=1, soil=1, soil_sapling=2, enderman_takable=1, building_block=1,flammable=1,fire_encouragement=60, fire_flammability=20, grass_block_no_snow = 1 }, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.1, - _mcl_hardness = 0.1, -}) - -minetest.register_node("mcl_lush_caves:moss_carpet", { - description = S("Moss carpet"), - _doc_items_longdesc = S("Moss carpet"), - _doc_items_entry_name = "moss_carpet", - - is_ground_content = false, - tiles = {"mcl_lush_caves_moss_carpet.png"}, - wield_image ="mcl_lush_caves_moss_carpet.png", - wield_scale = { x=1, y=1, z=0.5 }, - groups = {handy=1, carpet=1,supported_node=1,flammable=1,fire_encouragement=60, fire_flammability=20, deco_block=1, dig_by_water=1 }, - sounds = mcl_sounds.node_sound_wool_defaults(), - paramtype = "light", - sunlight_propagates = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, - }, - }, - _mcl_hardness = 0.1, - _mcl_blast_resistance = 0.1, -}) - -minetest.register_node("mcl_lush_caves:hanging_roots", { - description = S("Hanging roots"), - _doc_items_create_entry = S("Hanging roots"), - _doc_items_entry_name = S("Hanging roots"), - _doc_items_longdesc = S("Hanging roots"), - paramtype = "light", - --paramtype2 = "meshoptions", - place_param2 = 3, - sunlight_propagates = true, - walkable = false, - drawtype = "plantlike", - --drop = "mcl_farming:wheat_seeds", - tiles = {"mcl_lush_caves_hanging_roots.png"}, - inventory_image = "mcl_lush_caves_hanging_roots.png", - wield_image = "mcl_lush_caves_hanging_roots.png", - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - }, - }, - groups = { shearsy = 1, dig_immediate=3, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, cultivatable=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, -}) - -minetest.register_node("mcl_lush_caves:cave_vines", { - description = S("Cave vines"), - _doc_items_create_entry = S("Cave vines"), - _doc_items_entry_name = S("Cave vines"), - _doc_items_longdesc = S("Cave vines"), - paramtype = "light", - --paramtype2 = "meshoptions", - place_param2 = 3, - sunlight_propagates = true, - walkable = false, - drawtype = "plantlike", - --drop = "mcl_farming:wheat_seeds", - tiles = {"mcl_lush_caves_cave_vines.png"}, - inventory_image = "mcl_lush_caves_cave_vines.png", - wield_image = "mcl_lush_caves_cave_vines.png", - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - }, - }, - groups = { shearsy = 1, dig_immediate=3, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, cultivatable=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, -}) - -minetest.register_node("mcl_lush_caves:cave_vines_lit", { - description = S("Cave vines"), - _doc_items_create_entry = S("Cave vines"), - _doc_items_entry_name = S("Cave vines"), - _doc_items_longdesc = S("Cave vines"), - paramtype = "light", - --paramtype2 = "meshoptions", - place_param2 = 3, - sunlight_propagates = true, - walkable = false, - drawtype = "plantlike", - --drop = "mcl_farming:wheat_seeds", - light_source = 9, - tiles = {"mcl_lush_caves_cave_vines_lit.png"}, - inventory_image = "mcl_lush_caves_cave_vines_lit.png", - wield_image = "mcl_lush_caves_cave_vines_lit.png", - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - }, - }, - groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 1, - drop = "mcl_lush_caves:glow_berry", - on_dig = function(pos) - minetest.add_item(pos,"mcl_lush_caves:glow_berry") - minetest.set_node(pos,{name="mcl_lush_caves:cave_vines"}) - end, -}) - -minetest.register_node("mcl_lush_caves:dripleaf_big_waterroot", { - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "leveled", - place_param2 = 16, - tiles = { "default_clay.png" }, - special_tiles = { - { name = "mcl_lush_caves_big_dripleaf_stem.png", - animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, - tileable_vertical = true, - } - }, - inventory_image = "mcl_lush_caves_big_dripleaf_stem.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 = { handy = 1, dig_immediate = 3, not_in_creative_inventory = 1 }, - drop = "", - node_placement_prediction = "", - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if itemstack:get_name() ~= "mcl_dye:white" then return itemstack end - itemstack:take_item(1) - --dripleaf_grow(pos,node) - end -}) -minetest.register_node("mcl_lush_caves:dripleaf_big_stem", { - description = S("Dripleaf stem"), - _doc_items_create_entry = S("Dripleaf stem"), - _doc_items_entry_name = S("Dripleaf stem"), - _doc_items_longdesc = S("Dripleaf stem"), - paramtype = "light", - place_param2 = 3, - sunlight_propagates = true, - walkable = false, - drawtype = "plantlike", - tiles = {"mcl_lush_caves_big_dripleaf_stem.png"}, - inventory_image = "mcl_lush_caves_big_dripleaf_stem.png", - wield_image = "mcl_lush_caves_big_dripleaf_stem.png", - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - }, - }, - drop = "", - groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, destroy_by_lava_flow=1, dig_by_piston=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, - on_construct = function(pos) - local p = pos - local l = 0 - local in_water = false - for _,a in pairs(plane_adjacents) do - if minetest.get_item_group(minetest.get_node(vector.add(pos,a)).name,"water") > 0 then - in_water = true - end - end - if not in_water then return end - repeat - l = l + 1 - p = vector.offset(p,0,1,0) - until minetest.get_item_group(minetest.get_node(p).name,"water") <= 0 - minetest.set_node(p,{name = "mcl_lush_caves:dripleaf_big"}) - minetest.set_node(vector.offset(pos,0,-1,0),{ name = "mcl_lush_caves:dripleaf_big_waterroot", param2 = l * 16}) - end, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if itemstack:get_name() ~= "mcl_dye:white" then return itemstack end - itemstack:take_item(1) - dripleaf_grow(pos,node) - end -}) -local dripleaf = { - description = S("Dripleaf"), - _doc_items_create_entry = S("Dripleaf"), - _doc_items_entry_name = S("Dripleaf"), - _doc_items_longdesc = S("Dripleaf"), - paramtype = "light", - place_param2 = 0, - sunlight_propagates = true, - walkable = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, - }, - }, - tiles = {"mcl_lush_caves_big_dripleaf_top.png"}, - inventory_image = "mcl_lush_caves_big_dripleaf_top.png", - wield_image = "mcl_lush_caves_big_dripleaf_top.png", - use_texture_alpha = "clip", - selection_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, - }, - }, - groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if itemstack:get_name() ~= "mcl_dye:white" then return itemstack end - itemstack:take_item(1) - dripleaf_grow(vector.offset(pos,0,-1,0),{name = "mcl_lush_caves:dripleaf_big_stem" }) - end -} -local dripleaf_tipped = table.copy(dripleaf) -dripleaf_tipped.walkable = false -dripleaf_tipped.tiles = {"mcl_lush_caves_big_dripleaf_tip.png"} -dripleaf_tipped.on_timer = function(p,e) - minetest.swap_node(p,{name="mcl_lush_caves:dripleaf_big"}) -end - -dripleaf.mesecons = {effector = { - action_on = function(pos, node) - node.param2 = 1 - minetest.swap_node(pos, node) - end, - action_off = function(pos, node) - node.param2 = 0 - minetest.swap_node(pos, node) - end, - rules = mesecon.rules.alldirs, -}} - - -minetest.register_node("mcl_lush_caves:dripleaf_big",dripleaf) -minetest.register_node("mcl_lush_caves:dripleaf_big_tipped",dripleaf_tipped) - -minetest.register_node("mcl_lush_caves:dripleaf_small_stem", { - description = S("Small dripleaf stem"), - _doc_items_create_entry = S("Small dripleaf stem"), - _doc_items_entry_name = S("Small dripleaf stem"), - _doc_items_longdesc = S("Small dripleaf stem"), - paramtype = "light", - place_param2 = 3, - sunlight_propagates = true, - walkable = false, - drawtype = "plantlike", - tiles = {"mcl_lush_caves_small_dripleaf_stem_top.png"}, - inventory_image = "mcl_lush_caves_small_dripleaf_stem_top.png", - wield_image = "mcl_lush_caves_small_dripleaf_stem_top.png", - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - }, - }, - groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, -}) - -minetest.register_node("mcl_lush_caves:dripleaf_small", { - description = S("Dripleaf"), - _doc_items_create_entry = S("Dripleaf"), - _doc_items_entry_name = S("Dripleaf"), - _doc_items_longdesc = S("Dripleaf"), - paramtype = "light", - place_param2 = 3, - sunlight_propagates = true, - walkable = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, - }, - }, - tiles = {"mcl_lush_caves_small_dripleaf_top.png"}, - inventory_image = "mcl_lush_caves_small_dripleaf_top.png", - wield_image = "mcl_lush_caves_small_dripleaf_top.png", - use_texture_alpha = "clip", - selection_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, - }, - }, - groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, - _mcl_blast_hardness = 0, -}) - -minetest.register_node("mcl_lush_caves:rooted_dirt", { - description = S("Rooted dirt"), - _doc_items_longdesc = S("Rooted dirt"), - _doc_items_hidden = false, - tiles = {"mcl_lush_caves_rooted_dirt.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, dirt=1, building_block=1, path_creation_possible=1}, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -minetest.register_craftitem("mcl_lush_caves:glow_berry", { - description = S("Glow berry"), - _doc_items_longdesc = S("This is a food item which can be eaten."), - stack_max = 64, - inventory_image = "mcl_lush_caves_glow_berries.png", - on_place = minetest.item_eat(2), - on_secondary_use = minetest.item_eat(2), - groups = {food = 2, eatable = 2, compostability = 50}, - _mcl_saturation = 1.2, -}) - -minetest.register_node("mcl_lush_caves:azalea_leaves", { - description = description, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "allfaces_optional", - waving = 2, - place_param2 = 1, -- Prevent leafdecay for placed nodes - tiles = { "mcl_lush_caves_azalea_leaves.png" }, - paramtype = "light", - groups = { - hoey = 1, shearsy = 1, dig_by_piston = 1, - leaves = 1, leafdecay = 5, deco_block = 1, - flammable = 2, fire_encouragement = 30, fire_flammability = 60, - compostability = 30 - }, - drop = { - max_items = 1, - items = { - --{ - -- items = {sapling}, - -- rarity = 10 - --}, - { - items = {"mcl_core:stick 1"}, - rarity = 3 - }, - { - items = {"mcl_core:stick 2"}, - rarity = 6 - }, - } - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - _mcl_shears_drop = true, - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_lush_caves:azalea_leaves_flowering", { - description = description, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "allfaces_optional", - waving = 2, - place_param2 = 1, -- Prevent leafdecay for placed nodes - tiles = { "mcl_lush_caves_azalea_leaves_flowering.png" }, - paramtype = "light", - groups = { - hoey = 1, shearsy = 1, dig_by_piston = 1, - leaves = 1, leafdecay = 5, deco_block = 1, - flammable = 2, fire_encouragement = 30, fire_flammability = 60, - compostability = 30 - }, - drop = { - max_items = 1, - items = { - --{ - -- items = {sapling}, - -- rarity = 10 - --}, - { - items = {"mcl_core:stick 1"}, - rarity = 3 - }, - { - items = {"mcl_core:stick 2"}, - rarity = 6 - }, - } - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - _mcl_shears_drop = true, - _mcl_silk_touch_drop = true, -}) - ---[[ -minetest.register_node("mcl_lush_caves:spore_blossom", { - description = S("Spore blossom"), - _doc_items_longdesc = S("Spore blossom"), - _doc_items_hidden = false, - tiles = {"mcl_lush_caves_spore_blossom.png"}, - drawtype = "plantlike", - param2type = "light", - is_ground_content = true, - stack_max = 64, - groups = {handy = 1, plant = 1}, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - - -minetest.register_node("mcl_lush_caves:azalea", { - description = S("Azalea"), - inventory_image = "mcl_lush_caves_azalea_plant.png", - drawtype = "allfaces_optional", --- drawtype = "nodebox", --- node_box = { --- type = "fixed", --- fixed = { --- { -16/16, -0/16, -16/16, 16/16, 16/16, 16/16 }, --- { -2/16, -16/16, -2/16, 2/16, 0/16, 2/16 }, --- } --- }, - --tiles = { "blank.png" }, - tiles = { - "mcl_lush_caves_azalea_top.png", - "mcl_lush_caves_azalea_top.png", - "mcl_lush_caves_azalea_side.png", - "mcl_lush_caves_azalea_side.png", - "mcl_lush_caves_azalea_side.png", - "mcl_lush_caves_azalea_side.png", - }, - is_ground_content = false, - groups = { handy=1 }, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - use_texture_alpha = "clip", -}) - -minetest.register_node("mcl_lush_caves:azalea_flowering", { - description = S("Flowering azalea"), - inventory_image = "mcl_lush_caves_azalea_flowering_top.png", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - { -16/16, -4/16, -16/16, 16/16, 16/16, 16/16 }, - { -2/16, -16/16, -2/16, 2/16, -4/16, 2/16 }, - } - }, - --tiles = { "blank.png" }, - tiles = { - "mcl_lush_caves_azalea_flowering_top.png", - "mcl_lush_caves_azalea_flowering_top.png", - "mcl_lush_caves_azalea_flowering_side.png", - "mcl_lush_caves_azalea_flowering_side.png", - "mcl_lush_caves_azalea_flowering_side.png", - "mcl_lush_caves_azalea_flowering_side.png", - }, - is_ground_content = false, - groups = { handy=1 }, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - use_texture_alpha = "clip", -}) ---]] local lushcaves = { "LushCaves", "LushCaves_underground", "LushCaves_ocean", "LushCaves_deep_ocean"} minetest.register_abm({ @@ -645,23 +117,7 @@ minetest.register_abm({ end }) -local player_dripleaf = {} -minetest.register_globalstep(function(dtime) - for _,p in pairs(minetest.get_connected_players()) do - local pos = p:get_pos() - local n = minetest.get_node(pos) - if n.name == "mcl_lush_caves:dripleaf_big" and n.param2 == 0 then - if not player_dripleaf[p] then player_dripleaf[p] = 0 end - player_dripleaf[p] = player_dripleaf[p] + dtime - if player_dripleaf[p] > 1 then - minetest.swap_node(pos,{name = "mcl_lush_caves:dripleaf_big_tipped"}) - player_dripleaf[p] = nil - local t = minetest.get_node_timer(pos) - t:start(3) - end - end - end -end) + mcl_structures.register_structure("clay_pool",{ place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"}, diff --git a/mods/ITEMS/mcl_lush_caves/nodes.lua b/mods/ITEMS/mcl_lush_caves/nodes.lua new file mode 100644 index 000000000..4ca454453 --- /dev/null +++ b/mods/ITEMS/mcl_lush_caves/nodes.lua @@ -0,0 +1,303 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +minetest.register_node("mcl_lush_caves:moss", { + description = S("Moss"), + _doc_items_longdesc = S("Moss is a green block found in lush caves"), + _doc_items_entry_name = "moss", + _doc_items_hidden = false, + tiles = {"mcl_lush_caves_moss_block.png"}, + is_ground_content = false, + groups = {handy=1, hoey=2, dirt=1, soil=1, soil_sapling=2, enderman_takable=1, building_block=1,flammable=1,fire_encouragement=60, fire_flammability=20, grass_block_no_snow = 1 }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_blast_resistance = 0.1, + _mcl_hardness = 0.1, +}) + +minetest.register_node("mcl_lush_caves:moss_carpet", { + description = S("Moss carpet"), + _doc_items_longdesc = S("Moss carpet"), + _doc_items_entry_name = "moss_carpet", + + is_ground_content = false, + tiles = {"mcl_lush_caves_moss_carpet.png"}, + wield_image ="mcl_lush_caves_moss_carpet.png", + wield_scale = { x=1, y=1, z=0.5 }, + groups = {handy=1, carpet=1,supported_node=1,flammable=1,fire_encouragement=60, fire_flammability=20, deco_block=1, dig_by_water=1 }, + sounds = mcl_sounds.node_sound_wool_defaults(), + paramtype = "light", + sunlight_propagates = true, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + _mcl_hardness = 0.1, + _mcl_blast_resistance = 0.1, +}) + +minetest.register_node("mcl_lush_caves:hanging_roots", { + description = S("Hanging roots"), + _doc_items_create_entry = S("Hanging roots"), + _doc_items_entry_name = S("Hanging roots"), + _doc_items_longdesc = S("Hanging roots"), + paramtype = "light", + --paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + --drop = "mcl_farming:wheat_seeds", + tiles = {"mcl_lush_caves_hanging_roots.png"}, + inventory_image = "mcl_lush_caves_hanging_roots.png", + wield_image = "mcl_lush_caves_hanging_roots.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + }, + groups = { shearsy = 1, dig_immediate=3, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, cultivatable=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, +}) + +minetest.register_node("mcl_lush_caves:cave_vines", { + description = S("Cave vines"), + _doc_items_create_entry = S("Cave vines"), + _doc_items_entry_name = S("Cave vines"), + _doc_items_longdesc = S("Cave vines"), + paramtype = "light", + --paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + --drop = "mcl_farming:wheat_seeds", + tiles = {"mcl_lush_caves_cave_vines.png"}, + inventory_image = "mcl_lush_caves_cave_vines.png", + wield_image = "mcl_lush_caves_cave_vines.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + }, + groups = { shearsy = 1, dig_immediate=3, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, cultivatable=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 0, +}) + +minetest.register_node("mcl_lush_caves:cave_vines_lit", { + description = S("Cave vines"), + _doc_items_create_entry = S("Cave vines"), + _doc_items_entry_name = S("Cave vines"), + _doc_items_longdesc = S("Cave vines"), + paramtype = "light", + --paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + --drop = "mcl_farming:wheat_seeds", + light_source = 9, + tiles = {"mcl_lush_caves_cave_vines_lit.png"}, + inventory_image = "mcl_lush_caves_cave_vines_lit.png", + wield_image = "mcl_lush_caves_cave_vines_lit.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + }, + groups = { shearsy = 1, handy = 1, plant=1, supported_node=0, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + _mcl_blast_hardness = 1, + drop = "mcl_lush_caves:glow_berry", + on_dig = function(pos) + minetest.add_item(pos,"mcl_lush_caves:glow_berry") + minetest.set_node(pos,{name="mcl_lush_caves:cave_vines"}) + end, +}) + +minetest.register_node("mcl_lush_caves:rooted_dirt", { + description = S("Rooted dirt"), + _doc_items_longdesc = S("Rooted dirt"), + _doc_items_hidden = false, + tiles = {"mcl_lush_caves_rooted_dirt.png"}, + is_ground_content = true, + stack_max = 64, + groups = {handy=1,shovely=1, dirt=1, building_block=1, path_creation_possible=1}, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + +minetest.register_craftitem("mcl_lush_caves:glow_berry", { + description = S("Glow berry"), + _doc_items_longdesc = S("This is a food item which can be eaten."), + stack_max = 64, + inventory_image = "mcl_lush_caves_glow_berries.png", + on_place = minetest.item_eat(2), + on_secondary_use = minetest.item_eat(2), + groups = {food = 2, eatable = 2, compostability = 50}, + _mcl_saturation = 1.2, +}) + +minetest.register_node("mcl_lush_caves:azalea_leaves", { + description = S("Azalea Leaves"), + _doc_items_longdesc = S("Leaves of an Azalea tree"), + _doc_items_hidden = false, + drawtype = "allfaces_optional", + waving = 2, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = { "mcl_lush_caves_azalea_leaves.png" }, + paramtype = "light", + groups = { + hoey = 1, shearsy = 1, dig_by_piston = 1, + leaves = 1, leafdecay = 5, deco_block = 1, + flammable = 2, fire_encouragement = 30, fire_flammability = 60, + compostability = 30 + }, + drop = { + max_items = 1, + items = { + --{ + -- items = {sapling}, + -- rarity = 10 + --}, + { + items = {"mcl_core:stick 1"}, + rarity = 3 + }, + { + items = {"mcl_core:stick 2"}, + rarity = 6 + }, + } + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0.2, + _mcl_hardness = 0.2, + _mcl_shears_drop = true, + _mcl_silk_touch_drop = true, +}) + +minetest.register_node("mcl_lush_caves:azalea_leaves_flowering", { + description = S("Flowering Azalea Leaves"), + _doc_items_longdesc = S("The Flowering Leaves of an Azalea tree"), + _doc_items_hidden = false, + drawtype = "allfaces_optional", + waving = 2, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = { "mcl_lush_caves_azalea_leaves_flowering.png" }, + paramtype = "light", + groups = { + hoey = 1, shearsy = 1, dig_by_piston = 1, + leaves = 1, leafdecay = 5, deco_block = 1, + flammable = 2, fire_encouragement = 30, fire_flammability = 60, + compostability = 30 + }, + drop = { + max_items = 1, + items = { + --{ + -- items = {sapling}, + -- rarity = 10 + --}, + { + items = {"mcl_core:stick 1"}, + rarity = 3 + }, + { + items = {"mcl_core:stick 2"}, + rarity = 6 + }, + } + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0.2, + _mcl_hardness = 0.2, + _mcl_shears_drop = true, + _mcl_silk_touch_drop = true, +}) + +--[[ +minetest.register_node("mcl_lush_caves:spore_blossom", { + description = S("Spore blossom"), + _doc_items_longdesc = S("Spore blossom"), + _doc_items_hidden = false, + tiles = {"mcl_lush_caves_spore_blossom.png"}, + drawtype = "plantlike", + param2type = "light", + is_ground_content = true, + stack_max = 64, + groups = {handy = 1, plant = 1}, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + + +minetest.register_node("mcl_lush_caves:azalea", { + description = S("Azalea"), + inventory_image = "mcl_lush_caves_azalea_plant.png", + drawtype = "allfaces_optional", +-- drawtype = "nodebox", +-- node_box = { +-- type = "fixed", +-- fixed = { +-- { -16/16, -0/16, -16/16, 16/16, 16/16, 16/16 }, +-- { -2/16, -16/16, -2/16, 2/16, 0/16, 2/16 }, +-- } +-- }, + --tiles = { "blank.png" }, + tiles = { + "mcl_lush_caves_azalea_top.png", + "mcl_lush_caves_azalea_top.png", + "mcl_lush_caves_azalea_side.png", + "mcl_lush_caves_azalea_side.png", + "mcl_lush_caves_azalea_side.png", + "mcl_lush_caves_azalea_side.png", + }, + is_ground_content = false, + groups = { handy=1 }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + use_texture_alpha = "clip", +}) + +minetest.register_node("mcl_lush_caves:azalea_flowering", { + description = S("Flowering azalea"), + inventory_image = "mcl_lush_caves_azalea_flowering_top.png", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + { -16/16, -4/16, -16/16, 16/16, 16/16, 16/16 }, + { -2/16, -16/16, -2/16, 2/16, -4/16, 2/16 }, + } + }, + --tiles = { "blank.png" }, + tiles = { + "mcl_lush_caves_azalea_flowering_top.png", + "mcl_lush_caves_azalea_flowering_top.png", + "mcl_lush_caves_azalea_flowering_side.png", + "mcl_lush_caves_azalea_flowering_side.png", + "mcl_lush_caves_azalea_flowering_side.png", + "mcl_lush_caves_azalea_flowering_side.png", + }, + is_ground_content = false, + groups = { handy=1 }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + use_texture_alpha = "clip", +}) +--]]