diff --git a/mods/MAPGEN/mcl_lush_caves/init.lua b/mods/MAPGEN/mcl_lush_caves/init.lua new file mode 100644 index 000000000..c482e2fb3 --- /dev/null +++ b/mods/MAPGEN/mcl_lush_caves/init.lua @@ -0,0 +1,278 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +local pr = PseudoRandom(minetest.get_mapgen_setting("seed")) +local adjacents = { + vector.new(1,0,0), + vector.new(-1,0,0), + vector.new(0,0,1), + vector.new(0,0,-1), + vector.new(0,-1,0) +} +local vector_distance_xz = function(a, b) + return vector.distance( + { x=a.x, y=0, z=a.z }, + { x=b.x, y=0, z=b.z } + ) +end + +local function makelake(pos) + local p1 = vector.offset(pos,-5,-10,-5) + local p2 = vector.offset(pos,5,10,5) + local nn = minetest.find_nodes_in_area_under_air(p1,p2,{"group:stone","mcl_lush_caves:moss"}) + table.sort(nn,function(a, b) + return vector_distance_xz(pos, a) < vector_distance_xz(pos, b) + end) + if not nn[1] then return end + local y = nn[1].y + for i=1,math.random(#nn) do + if nn[i].y == y then + minetest.set_node(nn[i],{name="mcl_core:water_source"}) + end + end + local nnn = minetest.find_nodes_in_area_under_air(p1,p2,{"mcl_core:water_source","group:water"}) + for k,v in pairs(nnn) do + for kk,vv in pairs(adjacents) do + local pp = vector.add(v,vv) + local an = minetest.get_node(pp) + if an.name ~= "mcl_core:water_source" then + minetest.set_node(pp,{name="mcl_core:clay"}) + if pr:next(1,10) == 1 then + minetest.set_node(vector.offset(pp,0,1,0),{name="mcl_lush_caves:moss_carpet"}) + end + end + end + end +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: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}, + 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.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: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_decoration({ + decoration = "mcl_lush_caves:moss", + deco_type = "simple", + place_on = {"group:stone","mcl_core:gravel"}, + sidelen = 80, + fill_ratio = 0.5, + flags = "place_center_x, place_center_z, force_placement, all_floors, all_ceilings", + --biomes = get_ocean_biomes(), + y_max=-10, +}) +minetest.register_decoration({ + decoration = "mcl_lush_caves:moss_carpet", + deco_type = "simple", + place_on = {"group:stone","mcl_core:gravel"}, + sidelen = 80, + fill_ratio = 0.5, + flags = "place_center_x, place_center_z, force_placement, all_floors", + --biomes = get_ocean_biomes(), + y_max=-10, +}) +minetest.register_decoration({ + decoration = "mcl_lush_caves:rooted_dirt", + deco_type = "simple", + place_on = {"group:stone","mcl_core:gravel"}, + sidelen = 80, + fill_ratio = 0.3, + flags = "place_center_x, place_center_z, force_placement, all_ceilings", + --biomes = get_ocean_biomes(), + y_max=-10, +}) +minetest.register_decoration({ + decoration = "mcl_lush_caves:hanging_roots", + deco_type = "simple", + place_on = {"mcl_lush_caves:rooted_dirt",}, + sidelen = 80, + fill_ratio = 0.1, + flags = "place_center_x, place_center_z, force_placement, all_ceilings", + --biomes = get_ocean_biomes(), + y_max=-10, +}) + +minetest.register_decoration({ + decoration = "mcl_lush_caves:cave_vines_lit", + deco_type = "simple", + place_on = {"mcl_lush_caves:moss"}, + sidelen = 80, + fill_ratio = 0.1, + flags = "place_center_x, place_center_z, force_placement, all_ceilings", + --biomes = get_ocean_biomes(), + y_max=-10, +}) + +minetest.register_decoration({ + decoration = "mcl_lush_caves:lake_structblock", + deco_type = "simple", + place_on = {"group:stone","mcl_core:gravel","mcl_lush_caves:moss"}, + sidelen = 80, + fill_ratio = 0.1, + flags = "place_center_x, place_center_z, force_placement, all_floors", + --biomes = get_ocean_biomes(), + y_max=-10, +}) + +minetest.register_abm({ + label = "Cave vines grow", + nodenames = {"mcl_lush_caves:cave_vines_lit"}, + interval = 5, + chance = 2, + action = function(pos, node, active_object_count, active_object_count_wider) + local pu = vector.offset(pos,0,1,0) + local pun = minetest.get_node(pu).name + local pd = vector.offset(pos,0,-1,0) + local pd2 = minetest.get_node(vector.offset(pos,0,-2,0)).name + if pun ~= "mcl_lush_caves:cave_vines_lit" and pun ~= "mcl_lush_caves:moss" then + minetest.set_node(pos,{name="air"}) + return + end + if minetest.get_node(pd).name == "air" and pd2 == "air" then + minetest.set_node(pd,{name=node.name}) + end + end +}) + +minetest.register_lbm({ + name = "mcl_lush_caves:make_lakes", + run_at_every_load = true, + nodenames = {"mcl_lush_caves:lake_structblock"}, + action = function(pos, node) + minetest.set_node(pos,{name="air"}) + makelake(pos) + end +}) + +minetest.register_chatcommand("makelake",{func=function(n,p) + local pl = minetest.get_player_by_name(n) + local pos = pl:get_pos() + makelake(pos) +end}) diff --git a/mods/MAPGEN/mcl_lush_caves/mod.conf b/mods/MAPGEN/mcl_lush_caves/mod.conf new file mode 100644 index 000000000..b4b37b001 --- /dev/null +++ b/mods/MAPGEN/mcl_lush_caves/mod.conf @@ -0,0 +1,2 @@ +name = mcl_lush_caves +depends = mcl_sounds diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_leaves.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_leaves.png new file mode 100644 index 000000000..6cb34fb11 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_leaves.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_plant.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_plant.png new file mode 100644 index 000000000..b368bddf5 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_plant.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_side.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_side.png new file mode 100644 index 000000000..a0419e499 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_side.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_top.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_top.png new file mode 100644 index 000000000..03a5f05a1 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_azalea_top.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_side.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_side.png new file mode 100644 index 000000000..3b381dd45 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_side.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_stem.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_stem.png new file mode 100644 index 000000000..5c2baeb9a Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_stem.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_tip.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_tip.png new file mode 100644 index 000000000..4d44be20b Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_tip.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_top.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_top.png new file mode 100644 index 000000000..22fa3ce31 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_big_dripleaf_top.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines.png new file mode 100644 index 000000000..f9daf587a Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit.png new file mode 100644 index 000000000..42322c04f Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e.png new file mode 100644 index 000000000..766cef41d Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e_s.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e_s.png new file mode 100644 index 000000000..0c648a820 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_lit_e_s.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant.png new file mode 100644 index 000000000..d45bcfe3d Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit.png new file mode 100644 index 000000000..f6d18d681 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e.png new file mode 100644 index 000000000..cb6bcfedc Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e_s.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e_s.png new file mode 100644 index 000000000..ab3be093b Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_cave_vines_plant_lit_e_s.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries.png new file mode 100644 index 000000000..a1b4b949f Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e.png new file mode 100644 index 000000000..f147e0a3b Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e_s.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e_s.png new file mode 100644 index 000000000..da0717b77 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_glow_berries_e_s.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_hanging_roots.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_hanging_roots.png new file mode 100644 index 000000000..a078f2a7f Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_hanging_roots.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss.png new file mode 100644 index 000000000..119cc2bca Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_block.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_block.png new file mode 100644 index 000000000..1fed6df9e Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_block.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet.png new file mode 100644 index 000000000..f146cf694 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet_side.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet_side.png new file mode 100644 index 000000000..4c9f06cf9 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_moss_carpet_side.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_rooted_dirt.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_rooted_dirt.png new file mode 100644 index 000000000..d9af7c5a0 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_rooted_dirt.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_side.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_side.png new file mode 100644 index 000000000..0fa1c2373 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_side.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_bottom.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_bottom.png new file mode 100644 index 000000000..58be33615 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_bottom.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_top.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_top.png new file mode 100644 index 000000000..3637a0438 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_stem_top.png differ diff --git a/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_top.png b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_top.png new file mode 100644 index 000000000..c95f998c2 Binary files /dev/null and b/mods/MAPGEN/mcl_lush_caves/textures/mcl_lush_caves_small_dripleaf_top.png differ