diff --git a/biomes.lua b/biomes.lua index 11bb74f..4942f50 100644 --- a/biomes.lua +++ b/biomes.lua @@ -30,6 +30,10 @@ local c_cobble_fungus = minetest.get_content_id("dfcaverns:cobble_with_floor_fun -- Coal Dust local test_biome_floor = function(area, data, ai, vi, bi, param2_data) + if data[bi] ~= c_stone then + return + end + if math.random() < 0.25 then data[bi] = c_dirt else @@ -48,6 +52,8 @@ end local test_biome_ceiling = function(area, data, ai, vi, bi) if subterrane:vertically_consistent_random(vi, area) < 0.002 then subterrane:stalactite(vi, area, data, 6, 20, c_stone, c_stone, c_stone) + elseif math.random() < 0.03 then + dfcaverns.glow_worm_ceiling(area, data, ai, vi, bi) end end diff --git a/glow_worms.lua b/glow_worms.lua new file mode 100644 index 0000000..ccfc8de --- /dev/null +++ b/glow_worms.lua @@ -0,0 +1,47 @@ +-- internationalization boilerplate +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +minetest.register_node("dfcaverns:glow_worm", { + description = S("Glow Worms"), + tiles = {"dfcaverns_glow_worm.png"}, + inventory_image = "dfcaverns_glow_worm.png", + wield_image = "dfcaverns_glow_worm.png", + is_ground_content = true, + groups = {oddly_breakable_by_hand=3}, + light_source = 9, + paramtype = "light", + drawtype = "plantlike", + walkable = false, + buildable_to = true, + visual_scale = 1.0, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5}, + }, +}) + +local c_air = minetest.get_content_id("air") +local c_worm = minetest.get_content_id("dfcaverns:glow_worm") + +dfcaverns.glow_worm_ceiling = function(area, data, ai, vi, bi) + if data[vi] == c_air and data[bi] == c_air then + data[vi] = c_worm + data[bi] = c_worm + if math.random(2) == 1 then + local pos = area:position(vi) + pos.y = pos.y-2 + local bbi = area:indexp(pos) + if data[bbi] == c_air then + data[bbi] = c_worm + if math.random(2) == 1 then + pos.y = pos.y-1 + local bbbi = area:indexp(pos) + if data[bbbi] == c_air then + data[bbbi] = c_worm + end + end + end + end + end +end \ No newline at end of file diff --git a/init.lua b/init.lua index 256e5d9..39ac30f 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,7 @@ local modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(modpath.."/config.lua") dofile(modpath.."/ground_cover.lua") +dofile(modpath.."/glow_worms.lua") -- Plants dofile(modpath.."/plants.lua") -- general functions diff --git a/textures/dfcaverns_glow_worm.png b/textures/dfcaverns_glow_worm.png new file mode 100644 index 0000000..56cbeba Binary files /dev/null and b/textures/dfcaverns_glow_worm.png differ diff --git a/textures/license.txt b/textures/license.txt index 65a68bb..8272b90 100644 --- a/textures/license.txt +++ b/textures/license.txt @@ -8,4 +8,5 @@ dftrees_tower_cap - derived from default dead coral dftrees_tower_cap_gills - from caverealms mushroom gills dftrees_cave_wheat - derived from farming wheat dftrees_tunnel_tube - derived from moretrees palm tree bark -dfcaverns_fungi - copied from caverealms \ No newline at end of file +dfcaverns_fungi - copied from caverealms +dfcaverns_glow_worm - copied from caverealms \ No newline at end of file