From a5eef1c5de77fa7770877802e66c3e1c53f9a0da Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Wed, 24 Apr 2019 18:59:36 -0400 Subject: update castles, areas, homedecor, plantlife, gloopblocks, hotbar, inspector, maptools, mesecons, moreblocks, moreores, technic, teleport_request, and worldedit switched to caverealms_lite (with minor fixes by me) switched to CWz's fork of player_textures The homedecor update brings in the big split, and will require you to re-enable all modpack components in order to avoid loss of content. --- caverealms_lite/plants.lua | 188 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 caverealms_lite/plants.lua (limited to 'caverealms_lite/plants.lua') diff --git a/caverealms_lite/plants.lua b/caverealms_lite/plants.lua new file mode 100644 index 0000000..1ebeff7 --- /dev/null +++ b/caverealms_lite/plants.lua @@ -0,0 +1,188 @@ +-- Lichen biome + +-- glowing fungi +minetest.register_node("caverealms:fungus", { + description = "Glowing Fungus", + tiles = {"caverealms_fungi.png"}, + inventory_image = "caverealms_fungi.png", + wield_image = "caverealms_fungi.png", + is_ground_content = true, + groups = {oddly_breakable_by_hand = 3, attached_node = 1}, + light_source = 5, + 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, -5/16, 0.5}, + }, +}) + +-- mycena mushroom +minetest.register_node("caverealms:mycena", { + description = "Mycena Mushroom", + tiles = {"caverealms_mycena.png"}, + inventory_image = "caverealms_mycena.png", + wield_image = "caverealms_mycena.png", + is_ground_content = true, + groups = {oddly_breakable_by_hand = 3, attached_node = 1}, + light_source = 6, + 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, -5/16, 0.5}, + }, +}) + +-- giant mushroom +if minetest.get_modpath("ethereal") then + minetest.register_alias("caverealms:mushroom_cap", "ethereal:mushroom") + minetest.register_alias("caverealms:mushroom_stem", "ethereal:mushroom_trunk") +else + -- stem + minetest.register_node("caverealms:mushroom_stem", { + description = "Giant Mushroom Stem", + tiles = {"caverealms_mushroom_stem.png"}, + is_ground_content = true, + groups = {choppy=2, oddly_breakable_by_hand=1}, + }) + + -- cap + minetest.register_node("caverealms:mushroom_cap", { + description = "Giant Mushroom Cap", + tiles = {"caverealms_mushroom_cap.png"}, + is_ground_content = true, + groups = {choppy=2, oddly_breakable_by_hand=1,}, + drop = { + max_items = 1, + items = { + {items = {"caverealms:mushroom_sapling"}, rarity = 20}, + {items = {"caverealms:mushroom_cap"}} + } + }, + }) + + -- sapling + minetest.register_node("caverealms:mushroom_sapling", { + description = "Mushroom Tree Sapling", + drawtype = "plantlike", + tiles = {"caverealms_mushroom_sapling.png"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2}, + sounds = default.node_sound_leaves_defaults(), + }) +end + +-- gills +minetest.register_node("caverealms:mushroom_gills", { + description = "Giant Mushroom Gills", + tiles = {"caverealms_mushroom_gills.png"}, + is_ground_content = true, + light_source = 10, + groups = {choppy=2, oddly_breakable_by_hand=1}, + drawtype = "plantlike", + paramtype = "light", +}) + + +-- Saplings + +-- grow trees +local add_tree = function (pos, ofx, ofy, ofz, schem) + if not schem then + print ("Schematic not found") + return + end + minetest.swap_node(pos, {name = "air"}) + minetest.place_schematic( + {x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz}, + schem, 0, nil, false) +end + +local path = minetest.get_modpath("caverealms").."/schematics/" + +-- giant mushrooms +function grow_caverealms_mushroom(pos) + add_tree(pos, 5, 0, 5, path .. "shroom.mts") +end + +-- height check +local function enough_height(pos, height) + local nod = minetest.line_of_sight( + {x = pos.x, y = pos.y + 1, z = pos.z}, + {x = pos.x, y = pos.y + height, z = pos.z}) + if not nod then + return false + else + return true + end +end + +minetest.register_abm({ + label = "Caverealms grow sapling", + nodenames = {"ethereal:mushroom_sapling", "caverealms:mushroom_sapling"}, + interval = 10, + chance = 50, + catch_up = false, + action = function(pos, node) + local light_level = minetest.get_node_light(pos) + -- check light level + if not light_level or light_level > 10 then + return + end + -- get node under sapling + local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name + -- check if registered + if not minetest.registered_nodes[node.name] then + return + end + -- ethereal sapling on lichen stone + if node.name == "ethereal:mushroom_sapling" + and under == "caverealms:stone_with_lichen" + and enough_height(pos, 10) then + grow_caverealms_mushroom(pos) + -- caverealms sapling on lichen stone + elseif node.name == "caverealms:mushroom_sapling" + and under == "caverealms:stone_with_lichen" + and enough_height(pos, 10) then + grow_caverealms_mushroom(pos) + end + end, +}) + + +-- spread moss/lichen/algae to nearby cobblestone +minetest.register_abm({ + label = "Caverealms stone spread", + nodenames = { + "caverealms:stone_with_moss", + "caverealms:stone_with_lichen", + "caverealms:stone_with_algae", + }, + neighbors = {"air"}, + interval = 16, + chance = 50, + catch_up = false, + action = function(pos, node) + local num = minetest.find_nodes_in_area_under_air( + {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1}, + {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, + "default:cobble") + if #num > 0 then + minetest.set_node(num[math.random(#num)], {name = node.name}) + end + end, +}) -- cgit v1.2.3