From 4746e121e60c0c35c54cb3419a641956db4499a5 Mon Sep 17 00:00:00 2001 From: Bram van den Heuvel Date: Mon, 2 Sep 2024 02:53:54 +0200 Subject: [PATCH] Update + reformat based on VoxeLibre recommendations --- init.lua | 992 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 501 insertions(+), 491 deletions(-) diff --git a/init.lua b/init.lua index 1f5b132..801e05c 100644 --- a/init.lua +++ b/init.lua @@ -1,7 +1,7 @@ noordstar_dripstone = {} -- Constants -local speed_factor = 30 +local speed_factor = 60 local seconds_per_growth = 10 * speed_factor local seconds_per_water_trickle = 1 * speed_factor local seconds_per_lava_trickle = 6 * speed_factor @@ -42,623 +42,619 @@ local watered_dripstone_tiny = "noordstar_dripstone:tiny_watered_dripstone" local watered_dripstone_spike = "noordstar_dripstone:watered_dripstone_spike" local internal = { - -- Nodes that the mod should consider as sources to extract water from - water_nodes = - { "default:river_water_source" - , "default:water_source" - , "mcl_core:water_source" - , "mclx_core:river_water_source" - }, - - -- Nodes that the mod should consider as sources to extract lava from - lava_nodes = - { "default:lava_source" - , "mcl_core:lava_source" - }, + -- Nodes that the mod should consider as sources to extract water from + water_nodes = { + "default:river_water_source", + "default:water_source", + "mcl_core:water_source", + "mclx_core:river_water_source", + }, - -- Nodes that can catch a lava droplet instead of letting a spike grow on top - lava_cauldrons = { - { from = dry_dripstone_spike, to = molten_dripstone_spike }, - { from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1_lava" }, - { from = "mcl_cauldrons:cauldron_1_lava", to = "mcl_cauldrons:cauldron_2_lava" }, - { from = "mcl_cauldrons:cauldron_2_lava", to = "mcl_cauldrons:cauldron_3_lava" }, - }, + -- Nodes that the mod should consider as sources to extract lava from + lava_nodes = { + "default:lava_source", + "mcl_core:lava_source", + }, - -- Nodes that can catch a water droplet instead of letting a spike grow on top - water_cauldrons = { - { from = dry_dripstone_spike, to = watered_dripstone_spike }, - { from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1" }, - { from = "mcl_cauldrons:cauldron_1", to = "mcl_cauldrons:cauldron_2" }, - { from = "mcl_cauldrons:cauldron_2", to = "mcl_cauldrons:cauldron_3" }, - } + -- Nodes that can catch a lava droplet instead of letting a spike grow on top + lava_cauldrons = { + { from = dry_dripstone_spike, to = molten_dripstone_spike }, + }, + + -- Nodes that can catch a water droplet instead of letting a spike grow on top + water_cauldrons = { + { from = dry_dripstone_spike, to = watered_dripstone_spike }, + } } function noordstar_dripstone.add_lava_source(nodename) - table.insert(internal.lava_nodes) + table.insert(internal.lava_nodes) end function noordstar_dripstone.add_water_source(nodename) - table.insert(internal.water_nodes, nodename) + table.insert(internal.water_nodes, nodename) end function noordstar_dripstone.add_lava_catcher(nodename, newnodename) - table.insert(internal.lava_cauldrons, { from = nodename, to = newnodename }) + table.insert(internal.lava_cauldrons, { from = nodename, to = newnodename }) end function noordstar_dripstone.add_water_catcher(nodename, newnodename) - table.insert(internal.water_cauldrons, { from = nodename, to = newnodename }) + table.insert(internal.water_cauldrons, { from = nodename, to = newnodename }) end -- Create a node box for any given dripstone size. -- Size 8 is a normal block size local function nodebox_of_size(size) - if size >= 8 then - return nil - else - return { - type = "fixed", - fixed = { - { - size / 16, -0.5, - size / 16, size / 16, 0.5, size / 16 }, - }, - } - end + if size >= 8 then + return nil + else + return { + type = "fixed", + fixed = { + { - size / 16, -0.5, - size / 16, size / 16, 0.5, size / 16 }, + }, + } + end end -local function nodebox_type(size) - if size >= 8 then - return "normal" - else - return "nodebox" - end +local function drawtype_of_size(size) + if size >= 8 then + return "normal" + else + return "nodebox" + end end -- Sounds -local dripstone_sounds = nil -if mcl_sounds then - dripstone_sounds = mcl_sounds.node_sound_stone_defaults() +local dripstone_sounds +if minetest.get_modpath("mcl_sounds") then + dripstone_sounds = mcl_sounds.node_sound_stone_defaults() end -- Trickle down config local lava_trickle_down = { - { from = dry_dripstone_block, to = molten_dripstone_block }, - { from = dry_dripstone_huge, to = molten_dripstone_huge }, - { from = dry_dripstone_large, to = molten_dripstone_large }, - { from = dry_dripstone_great, to = molten_dripstone_great }, - { from = dry_dripstone_medium, to = molten_dripstone_medium }, - { from = dry_dripstone_small, to = molten_dripstone_small }, - { from = dry_dripstone_tiny, to = molten_dripstone_tiny }, - { from = dry_dripstone_spike, to = molten_dripstone_spike }, - { from = watered_dripstone_block, to = hardened_dripstone_block }, - { from = watered_dripstone_huge, to = hardened_dripstone_huge }, - { from = watered_dripstone_large, to = hardened_dripstone_large }, - { from = watered_dripstone_great, to = hardened_dripstone_great }, - { from = watered_dripstone_medium, to = hardened_dripstone_medium }, - { from = watered_dripstone_small, to = hardened_dripstone_small }, - { from = watered_dripstone_tiny, to = hardened_dripstone_tiny }, - { from = watered_dripstone_spike, to = hardened_dripstone_spike }, - { from = "air", to = dry_dripstone_spike }, + { from = dry_dripstone_block, to = molten_dripstone_block }, + { from = dry_dripstone_huge, to = molten_dripstone_huge }, + { from = dry_dripstone_large, to = molten_dripstone_large }, + { from = dry_dripstone_great, to = molten_dripstone_great }, + { from = dry_dripstone_medium, to = molten_dripstone_medium }, + { from = dry_dripstone_small, to = molten_dripstone_small }, + { from = dry_dripstone_tiny, to = molten_dripstone_tiny }, + { from = dry_dripstone_spike, to = molten_dripstone_spike }, + { from = watered_dripstone_block, to = hardened_dripstone_block }, + { from = watered_dripstone_huge, to = hardened_dripstone_huge }, + { from = watered_dripstone_large, to = hardened_dripstone_large }, + { from = watered_dripstone_great, to = hardened_dripstone_great }, + { from = watered_dripstone_medium, to = hardened_dripstone_medium }, + { from = watered_dripstone_small, to = hardened_dripstone_small }, + { from = watered_dripstone_tiny, to = hardened_dripstone_tiny }, + { from = watered_dripstone_spike, to = hardened_dripstone_spike }, + { from = "air", to = dry_dripstone_spike }, } local water_trickle_down = { - { from = dry_dripstone_block, to = watered_dripstone_block }, - { from = dry_dripstone_huge, to = watered_dripstone_huge }, - { from = dry_dripstone_large, to = watered_dripstone_large }, - { from = dry_dripstone_great, to = watered_dripstone_great }, - { from = dry_dripstone_medium, to = watered_dripstone_medium }, - { from = dry_dripstone_small, to = watered_dripstone_small }, - { from = dry_dripstone_tiny, to = watered_dripstone_tiny }, - { from = dry_dripstone_spike, to = watered_dripstone_spike }, - { from = molten_dripstone_block, to = hardened_dripstone_block }, - { from = molten_dripstone_huge, to = hardened_dripstone_huge }, - { from = molten_dripstone_large, to = hardened_dripstone_large }, - { from = molten_dripstone_great, to = hardened_dripstone_great }, - { from = molten_dripstone_medium, to = hardened_dripstone_medium }, - { from = molten_dripstone_small, to = hardened_dripstone_small }, - { from = molten_dripstone_tiny, to = hardened_dripstone_tiny }, - { from = molten_dripstone_spike, to = hardened_dripstone_spike }, - { from = "air", to = dry_dripstone_spike }, + { from = dry_dripstone_block, to = watered_dripstone_block }, + { from = dry_dripstone_huge, to = watered_dripstone_huge }, + { from = dry_dripstone_large, to = watered_dripstone_large }, + { from = dry_dripstone_great, to = watered_dripstone_great }, + { from = dry_dripstone_medium, to = watered_dripstone_medium }, + { from = dry_dripstone_small, to = watered_dripstone_small }, + { from = dry_dripstone_tiny, to = watered_dripstone_tiny }, + { from = dry_dripstone_spike, to = watered_dripstone_spike }, + { from = molten_dripstone_block, to = hardened_dripstone_block }, + { from = molten_dripstone_huge, to = hardened_dripstone_huge }, + { from = molten_dripstone_large, to = hardened_dripstone_large }, + { from = molten_dripstone_great, to = hardened_dripstone_great }, + { from = molten_dripstone_medium, to = hardened_dripstone_medium }, + { from = molten_dripstone_small, to = hardened_dripstone_small }, + { from = molten_dripstone_tiny, to = hardened_dripstone_tiny }, + { from = molten_dripstone_spike, to = hardened_dripstone_spike }, + { from = "air", to = dry_dripstone_spike }, } local lava_trickle_down_spike = { - { from = dry_dripstone_block, to = molten_dripstone_block }, - { from = dry_dripstone_huge, to = molten_dripstone_huge }, - { from = dry_dripstone_large, to = molten_dripstone_large }, - { from = dry_dripstone_great, to = molten_dripstone_great }, - { from = dry_dripstone_medium, to = molten_dripstone_medium }, - { from = dry_dripstone_small, to = molten_dripstone_small }, - { from = dry_dripstone_tiny, to = molten_dripstone_tiny }, - { from = dry_dripstone_spike, to = molten_dripstone_spike }, - { from = watered_dripstone_block, to = hardened_dripstone_block }, - { from = watered_dripstone_huge, to = hardened_dripstone_huge }, - { from = watered_dripstone_large, to = hardened_dripstone_large }, - { from = watered_dripstone_great, to = hardened_dripstone_great }, - { from = watered_dripstone_medium, to = hardened_dripstone_medium }, - { from = watered_dripstone_small, to = hardened_dripstone_small }, - { from = watered_dripstone_tiny, to = hardened_dripstone_tiny }, - { from = watered_dripstone_spike, to = hardened_dripstone_spike }, + { from = dry_dripstone_block, to = molten_dripstone_block }, + { from = dry_dripstone_huge, to = molten_dripstone_huge }, + { from = dry_dripstone_large, to = molten_dripstone_large }, + { from = dry_dripstone_great, to = molten_dripstone_great }, + { from = dry_dripstone_medium, to = molten_dripstone_medium }, + { from = dry_dripstone_small, to = molten_dripstone_small }, + { from = dry_dripstone_tiny, to = molten_dripstone_tiny }, + { from = dry_dripstone_spike, to = molten_dripstone_spike }, + { from = watered_dripstone_block, to = hardened_dripstone_block }, + { from = watered_dripstone_huge, to = hardened_dripstone_huge }, + { from = watered_dripstone_large, to = hardened_dripstone_large }, + { from = watered_dripstone_great, to = hardened_dripstone_great }, + { from = watered_dripstone_medium, to = hardened_dripstone_medium }, + { from = watered_dripstone_small, to = hardened_dripstone_small }, + { from = watered_dripstone_tiny, to = hardened_dripstone_tiny }, + { from = watered_dripstone_spike, to = hardened_dripstone_spike }, } local water_trickle_down_spike = { - { from = dry_dripstone_block, to = watered_dripstone_block }, - { from = dry_dripstone_huge, to = watered_dripstone_huge }, - { from = dry_dripstone_large, to = watered_dripstone_large }, - { from = dry_dripstone_great, to = watered_dripstone_great }, - { from = dry_dripstone_medium, to = watered_dripstone_medium }, - { from = dry_dripstone_small, to = watered_dripstone_small }, - { from = dry_dripstone_tiny, to = watered_dripstone_tiny }, - { from = dry_dripstone_spike, to = watered_dripstone_spike }, - { from = molten_dripstone_block, to = hardened_dripstone_block }, - { from = molten_dripstone_huge, to = hardened_dripstone_huge }, - { from = molten_dripstone_large, to = hardened_dripstone_large }, - { from = molten_dripstone_great, to = hardened_dripstone_great }, - { from = molten_dripstone_medium, to = hardened_dripstone_medium }, - { from = molten_dripstone_small, to = hardened_dripstone_small }, - { from = molten_dripstone_tiny, to = hardened_dripstone_tiny }, - { from = molten_dripstone_spike, to = hardened_dripstone_spike }, + { from = dry_dripstone_block, to = watered_dripstone_block }, + { from = dry_dripstone_huge, to = watered_dripstone_huge }, + { from = dry_dripstone_large, to = watered_dripstone_large }, + { from = dry_dripstone_great, to = watered_dripstone_great }, + { from = dry_dripstone_medium, to = watered_dripstone_medium }, + { from = dry_dripstone_small, to = watered_dripstone_small }, + { from = dry_dripstone_tiny, to = watered_dripstone_tiny }, + { from = dry_dripstone_spike, to = watered_dripstone_spike }, + { from = molten_dripstone_block, to = hardened_dripstone_block }, + { from = molten_dripstone_huge, to = hardened_dripstone_huge }, + { from = molten_dripstone_large, to = hardened_dripstone_large }, + { from = molten_dripstone_great, to = hardened_dripstone_great }, + { from = molten_dripstone_medium, to = hardened_dripstone_medium }, + { from = molten_dripstone_small, to = hardened_dripstone_small }, + { from = molten_dripstone_tiny, to = hardened_dripstone_tiny }, + { from = molten_dripstone_spike, to = hardened_dripstone_spike }, } -- Tiles for dripstone -local dry_dripstone_tiles = - { "noordstar_dripstone_dripstone_top.png" - , "noordstar_dripstone_dripstone_top.png" - , "noordstar_dripstone_dripstone_side.png" - } -local hardened_dripstone_tiles = - { "noordstar_dripstone_hardened_dripstone_top.png" - , "noordstar_dripstone_hardened_dripstone_top.png" - , "noordstar_dripstone_hardened_dripstone_side.png" - } -local molten_dripstone_tiles = - { "noordstar_dripstone_molten_dripstone_top.png" - , "noordstar_dripstone_molten_dripstone_top.png" - , "noordstar_dripstone_molten_dripstone_side.png" - } -local watered_dripstone_tiles = - { "noordstar_dripstone_watered_dripstone_top.png" - , "noordstar_dripstone_watered_dripstone_top.png" - , "noordstar_dripstone_watered_dripstone_side.png" - } +local dry_dripstone_tiles = { + "noordstar_dripstone_dripstone_top.png", + "noordstar_dripstone_dripstone_top.png", + "noordstar_dripstone_dripstone_side.png", +} +local hardened_dripstone_tiles = { + "noordstar_dripstone_hardened_dripstone_top.png", + "noordstar_dripstone_hardened_dripstone_top.png", + "noordstar_dripstone_hardened_dripstone_side.png", +} +local molten_dripstone_tiles = { + "noordstar_dripstone_molten_dripstone_top.png", + "noordstar_dripstone_molten_dripstone_top.png", + "noordstar_dripstone_molten_dripstone_side.png", +} +local watered_dripstone_tiles = { + "noordstar_dripstone_watered_dripstone_top.png", + "noordstar_dripstone_watered_dripstone_top.png", + "noordstar_dripstone_watered_dripstone_side.png", +} -- Register dripstone nodes local function make_dripstone(name, desc, longdesc, tiles, drop, size) - local sunlight_propagates = nil - if size < 8 then - sunlight_propagates = true - end + local sunlight_propagates = nil + if size < 8 then + sunlight_propagates = true + end - minetest.register_node(name, - { description = desc - , _doc_items_longdesc = longdesc - , tiles = tiles - , groups = { pickaxey=2, material_stone=1, fall_damage_add_percent = math.max(4 - size, 0) / 4 * 100 } - , is_ground_content = true - , drop = { - max_items = math.floor((size + 1) / 2), - items = { - { rarity = 1 - , items = { drop } - }, - { rarity = 2 - , items = { drop } - }, - { rarity = 4 - , items = { drop } - }, - { rarity = 4 - , items = { drop } - }, - } - } - , sounds = dripstone_sounds - , drawtype = nodebox_type(size) - , paramtype = "light" - , sunlight_propagates = sunlight_propagates - , node_box = nodebox_of_size(size) - , _mcl_hardness = 1.0 + size / 8 - , _mcl_blast_resistance = 1 + size / 2 - , _mcl_silk_touch_drop = true - } - ) + minetest.register_node(name, { + description = desc, + _doc_items_longdesc = longdesc, + tiles = tiles, + groups = { + pickaxey=2, + material_stone=1, + fall_damage_add_percent = math.max(4 - size, 0) / 4 * 100 + }, + is_ground_content = true, + drop = { + max_items = math.floor((size + 1) / 2), + items = { + { rarity = 1 + , items = { drop } + }, + { rarity = 2 + , items = { drop } + }, + { rarity = 4 + , items = { drop } + }, + { rarity = 4 + , items = { drop } + }, + } + }, + sounds = dripstone_sounds, + drawtype = drawtype_of_size(size), + paramtype = "light", + sunlight_propagates = sunlight_propagates, + node_box = nodebox_of_size(size), + _mcl_hardness = 1.0 + size / 8, + _mcl_blast_resistance = 1 + size / 2, + _mcl_silk_touch_drop = true, + }) end -- BASE BLOCKS -- These blocks are able to absorb water or lava from above them. make_dripstone( - dry_dripstone_block, - "Dripstone block", - "Dripstone block that can suck up liquids above it and creates stalactites below it.", - dry_dripstone_tiles, - dry_dripstone_spike, - 8 + dry_dripstone_block, + "Dripstone block", + "Dripstone block that can suck up liquids above it and creates stalactites below it.", + dry_dripstone_tiles, + dry_dripstone_spike, + 8 ) make_dripstone( - hardened_dripstone_block, - "Hardened dripstone block", - "Dripstone block that is no longer able to absorb liquids above it.", - hardened_dripstone_tiles, - dry_dripstone_spike, - 8 + hardened_dripstone_block, + "Hardened dripstone block", + "Dripstone block that is no longer able to absorb liquids above it.", + hardened_dripstone_tiles, + dry_dripstone_spike, + 8 ) make_dripstone( - molten_dripstone_block, - "Molten dripstone block", - "A dripstone block that has absorbed some lava, allowing it to form a stalactite.", - molten_dripstone_tiles, - dry_dripstone_spike, - 8 + molten_dripstone_block, + "Molten dripstone block", + "A dripstone block that has absorbed some lava, allowing it to form a stalactite.", + molten_dripstone_tiles, + dry_dripstone_spike, + 8 ) make_dripstone( -watered_dripstone_block, - "Watered dripstone block", - "A dripstone block that has absorbed some water, allowing it to form a stalactite.", - watered_dripstone_tiles, - dry_dripstone_spike, - 8 + watered_dripstone_block, + "Watered dripstone block", + "A dripstone block that has absorbed some water, allowing it to form a stalactite.", + watered_dripstone_tiles, + dry_dripstone_spike, + 8 ) -- HUGE DRIPSTONE -- This is the largest form a non-block can get. make_dripstone( - dry_dripstone_huge, - "Huge dripstone", - "Dripstone in the largest shape it can reach.", - dry_dripstone_tiles, - dry_dripstone_spike, - 7 + dry_dripstone_huge, + "Huge dripstone", + "Dripstone in the largest shape it can reach.", + dry_dripstone_tiles, + dry_dripstone_spike, + 7 ) make_dripstone( - hardened_dripstone_huge, - "Huge hardened dripstone", - "Dripstone in the largest shape it can reach. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 7 + hardened_dripstone_huge, + "Huge hardened dripstone", + "Dripstone in the largest shape it can reach. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 7 ) make_dripstone( - molten_dripstone_huge, - "Huge molten dripstone", - "Dripstone in the largest shape it can reach. It has absorbed some lava, but it can no longer grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 7 + molten_dripstone_huge, + "Huge molten dripstone", + "Dripstone in the largest shape it can reach. It has absorbed some lava, but it can no longer grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 7 ) make_dripstone( - watered_dripstone_huge, - "Huge watered dripstone", - "Dripstone in the largest shape it can reach. It has absorbed some water, but it can no longer grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 7 + watered_dripstone_huge, + "Huge watered dripstone", + "Dripstone in the largest shape it can reach. It has absorbed some water, but it can no longer grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 7 ) -- LARGE DRIPSTONE make_dripstone( - dry_dripstone_large, - "Large dripstone", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 6 + dry_dripstone_large, + "Large dripstone", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 6 ) make_dripstone( - hardened_dripstone_large, - "Large hardened dripstone", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 6 + hardened_dripstone_large, + "Large hardened dripstone", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 6 ) make_dripstone( - molten_dripstone_large, - "Large molten dripstone", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 6 + molten_dripstone_large, + "Large molten dripstone", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 6 ) make_dripstone( - watered_dripstone_large, - "Large watered dripstone", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 6 + watered_dripstone_large, + "Large watered dripstone", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 6 ) -- GREAT DRIPSTONE make_dripstone( - dry_dripstone_great, - "Great dripstone", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 5 + dry_dripstone_great, + "Great dripstone", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 5 ) make_dripstone( - hardened_dripstone_great, - "Great hardened dripstone", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 5 + hardened_dripstone_great, + "Great hardened dripstone", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 5 ) make_dripstone( - molten_dripstone_great, - "Great molten dripstone", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 5 + molten_dripstone_great, + "Great molten dripstone", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 5 ) make_dripstone( - watered_dripstone_great, - "Great watered dripstone", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 5 + watered_dripstone_great, + "Great watered dripstone", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 5 ) -- MEDIUM DRIPSTONE make_dripstone( - dry_dripstone_medium, - "Medium dripstone", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 4 + dry_dripstone_medium, + "Medium dripstone", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 4 ) make_dripstone( - hardened_dripstone_medium, - "Medium hardened dripstone", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 4 + hardened_dripstone_medium, + "Medium hardened dripstone", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 4 ) make_dripstone( - molten_dripstone_medium, - "Medium molten dripstone", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 4 + molten_dripstone_medium, + "Medium molten dripstone", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 4 ) make_dripstone( - watered_dripstone_medium, - "Medium watered dripstone", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 4 + watered_dripstone_medium, + "Medium watered dripstone", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 4 ) -- SMALL DRIPSTONE make_dripstone( - dry_dripstone_small, - "Small dripstone", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 3 + dry_dripstone_small, + "Small dripstone", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 3 ) make_dripstone( - hardened_dripstone_small, - "Small hardened dripstone", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 3 + hardened_dripstone_small, + "Small hardened dripstone", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 3 ) make_dripstone( - molten_dripstone_small, - "Small molten dripstone", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 3 + molten_dripstone_small, + "Small molten dripstone", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 3 ) make_dripstone( - watered_dripstone_small, - "Small watered dripstone", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 3 + watered_dripstone_small, + "Small watered dripstone", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 3 ) -- TINY DRIPSTONE make_dripstone( - dry_dripstone_tiny, - "Tiny dripstone", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 2 + dry_dripstone_tiny, + "Tiny dripstone", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 2 ) make_dripstone( - hardened_dripstone_tiny, - "Tiny hardened dripstone", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 2 + hardened_dripstone_tiny, + "Tiny hardened dripstone", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 2 ) make_dripstone( - molten_dripstone_tiny, - "Tiny molten dripstone", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 2 + molten_dripstone_tiny, + "Tiny molten dripstone", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 2 ) make_dripstone( - watered_dripstone_tiny, - "Tiny watered dripstone", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 2 + watered_dripstone_tiny, + "Tiny watered dripstone", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 2 ) -- DRIPSTONE SPIKE make_dripstone( - dry_dripstone_spike, - "Dripstone spike", - "A thick layer of dripstone.", - dry_dripstone_tiles, - dry_dripstone_spike, - 1 + dry_dripstone_spike, + "Dripstone spike", + "A thick layer of dripstone.", + dry_dripstone_tiles, + dry_dripstone_spike, + 1 ) make_dripstone( - hardened_dripstone_spike, - "Hardened dripstone spike", - "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", - hardened_dripstone_tiles, - hardened_dripstone_spike, - 1 + hardened_dripstone_spike, + "Hardened dripstone spike", + "A thick layer of dripstone. It is no longer able to grow or absorb liquids.", + hardened_dripstone_tiles, + hardened_dripstone_spike, + 1 ) make_dripstone( - molten_dripstone_spike, - "Molten dripstone spike", - "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", - molten_dripstone_tiles, - dry_dripstone_spike, - 1 + molten_dripstone_spike, + "Molten dripstone spike", + "A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.", + molten_dripstone_tiles, + dry_dripstone_spike, + 1 ) make_dripstone( - watered_dripstone_spike, - "Watered dripstone spike", - "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", - watered_dripstone_tiles, - dry_dripstone_spike, - 1 + watered_dripstone_spike, + "Watered dripstone spike", + "A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.", + watered_dripstone_tiles, + dry_dripstone_spike, + 1 ) -- ACTIONS local function absorb_liquid(pos, node, aoc, aocw) - local node_above = minetest.get_node({ x = pos.x, y = pos.y + 1, z = pos.z }) or {} - local na_name = node_above.name + local node_above = minetest.get_node(vector.offset(pos, 0, 1, 0)) or {} + local na_name = node_above.name - for _, water in pairs(noordstar_dripstone.water_nodes) do - if water == na_name then - -- Make block watery - node.name = watered_dripstone_block - minetest.set_node(pos, node) - return - end - end + for _, water in pairs(internal.water_nodes) do + if water == na_name then + -- Make block watery + node.name = watered_dripstone_block + minetest.set_node(pos, node) + return + end + end - for _, lava in pairs(noordstar_dripstone.lava_nodes) do - if lava == na_name then - -- Make block molten - node.name = molten_dripstone_block - minetest.set_node(pos, node) - return - end - end + for _, lava in pairs(internal.lava_nodes) do + if lava == na_name then + -- Make block molten + node.name = molten_dripstone_block + minetest.set_node(pos, node) + return + end + end end local function drop_down_to(options, dry_up_node_name) - return function(pos, node, aoc, aocw) - for i = 1, 25 do - local pos_rel = { x = pos.x, y = pos.y - i, z = pos.z } - local node_rel = minetest.get_node(pos_rel) or {} - local node_name = node_rel.name or "" + return function(pos, node, aoc, aocw) + for i = 1, 25 do + local pos_rel = vector.offset(pos, 0, -i, 0) + local node_rel = minetest.get_node(pos_rel) or {} + local node_name = node_rel.name or "" - if node_name == "air" then - else - -- Non-air node has been found! - -- Check if it reacts to the dripstone and if it can be - -- activated. - for _, option in pairs(options) do - if node_name == option.from then - node_rel.name = option.to - node.name = dry_up_node_name + if minetest.get_item_group(node_name, "air") ~= 0 then + -- Non-air node has been found! + -- Check if it reacts to the dripstone and if it can be + -- activated. + for _, option in pairs(options) do + if node_name == option.from then + node_rel.name = option.to + node.name = dry_up_node_name - minetest.set_node(pos, node) - minetest.set_node(pos_rel, node_rel) - return - end - end + minetest.set_node(pos, node) + minetest.set_node(pos_rel, node_rel) + return + end + end - -- The node cannot be changed and hence a new spike starts on top - -- of it. - if i > 1 then - pos_rel = { x = pos.x, y = pos.y - i + 1, z = pos.z } - minetest.set_node(pos_rel, { name = dry_dripstone_spike }) + -- The node cannot be changed and hence a new spike starts on top + -- of it. + if i > 1 then + pos_rel = vector.offset(pos, 0, 1-i, 0) + minetest.set_node(pos_rel, { name = dry_dripstone_spike }) - node.name = dry_up_node_name - minetest.set_node(pos, node) - end - return - end - end - end + node.name = dry_up_node_name + minetest.set_node(pos, node) + end + return + end + end + end end local function grow_to(dry_grown_node_name) - return function(pos, node, aoc, aocw) - node.name = dry_grown_node_name - minetest.set_node(pos, node) - end + return function(pos, node, aoc, aocw) + node.name = dry_grown_node_name + minetest.set_node(pos, node) + end end local function harden(harden_nodes_func) - return function(pos, node, aoc, aocw) - local node_above = minetest.get_node({ x = pos.x, y = pos.y + 1, z = pos.z }) or {} - local na_name = node_above.name + return function(pos, node, aoc, aocw) + local node_above = minetest.get_node(vector.offset(pos, 0, 1, 0)) or {} + local na_name = node_above.name - for _, hardener in pairs(harden_nodes_func()) do - if hardener == na_name then - -- Harden dripstone block - node.name = hardened_dripstone_block - minetest.set_node(pos, node) - return - end - end - end + for _, hardener in pairs(harden_nodes_func()) do + if hardener == na_name then + -- Harden dripstone block + node.name = hardened_dripstone_block + minetest.set_node(pos, node) + return + end + end + end end local function trickle_down(options, dry_up_node_name) - return function(pos, node, aoc, aocw) - local pos_below = { x = pos.x, y = pos.y - 1, z = pos.z } - local node_below = minetest.get_node(pos_below) or {} - local nb_name = node_below.name or "" + return function(pos, node, aoc, aocw) + local pos_below = vector.offset(pos, 0, -1, 0) + local node_below = minetest.get_node(pos_below) or {} + local nb_name = node_below.name or "" - for _, option in pairs(options) do - local expected_node_name = option.from or nil - local resulted_node_name = option.to + for _, option in pairs(options) do + local expected_node_name = option.from or nil + local resulted_node_name = option.to - if nb_name == expected_node_name then - node.name = dry_up_node_name - node_below.name = resulted_node_name + if nb_name == expected_node_name then + node.name = dry_up_node_name + node_below.name = resulted_node_name - minetest.set_node(pos, node) - minetest.set_node(pos_below, node_below) - return - end - end - end + minetest.set_node(pos, node) + minetest.set_node(pos_below, node_below) + return + end + end + end end local function make_abm(nodename, expected_duration, action) - minetest.register_abm( - { nodenames = { nodename } - , interval = expected_duration / samples_per_interval - , chance = samples_per_interval - , catch_up = true - , action = action - } + minetest.register_abm( + { nodenames = { nodename } + , interval = expected_duration / samples_per_interval + , chance = samples_per_interval + , catch_up = true + , action = action + } ) end @@ -666,10 +662,10 @@ end make_abm(dry_dripstone_block, seconds_per_water_trickle, absorb_liquid) make_abm(molten_dripstone_block, seconds_per_lava_trickle, harden(function () - return noordstar_dripstone.water_nodes + return internal.water_nodes end)) make_abm(watered_dripstone_block, seconds_per_water_trickle, harden(function () - return noordstar_dripstone.lava_nodes + return internal.lava_nodes end)) -- TRICKLE DOWN @@ -708,43 +704,57 @@ make_abm(watered_dripstone_spike, seconds_per_growth*(4*4 - 2*2), grow_to(dry_dr -- DROP DOWN -make_abm(molten_dripstone_spike, seconds_per_lava_trickle, drop_down_to(lava_drop_down, dry_dripstone_spike)) -make_abm(watered_dripstone_spike, seconds_per_water_trickle, drop_down_to(water_drop_down, dry_dripstone_spike)) +make_abm(molten_dripstone_spike, seconds_per_lava_trickle, drop_down_to(internal.lava_cauldrons, dry_dripstone_spike)) +make_abm(watered_dripstone_spike, seconds_per_water_trickle, drop_down_to(internal.water_cauldrons, dry_dripstone_spike)) -- CRATING RECIPES -local function gapple_recipe(gold, apple, gapple) - minetest.register_craft({ - output = gapple, - recipe = { - { gold, gold, gold }, - { gold, apple, gold }, - { gold, gold, gold }, - } - }) +local function make_recipe(border, middle, output) + minetest.register_craft({ + output = output, + recipe = { + { border, border, border }, + { border, middle, border }, + { border, border, border }, + } + }) end -gapple_recipe(dry_dripstone_spike, dry_dripstone_spike, dry_dripstone_tiny) -gapple_recipe(dry_dripstone_spike, dry_dripstone_tiny, dry_dripstone_small) -gapple_recipe(dry_dripstone_spike, dry_dripstone_small, dry_dripstone_medium) -gapple_recipe(dry_dripstone_spike, dry_dripstone_medium, dry_dripstone_great) -gapple_recipe(dry_dripstone_spike, dry_dripstone_great, dry_dripstone_large) -gapple_recipe(dry_dripstone_spike, dry_dripstone_large, dry_dripstone_huge) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_spike, hardened_dripstone_tiny) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_tiny, hardened_dripstone_small) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_small, hardened_dripstone_medium) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_medium, hardened_dripstone_great) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_great, hardened_dripstone_large) -gapple_recipe(hardened_dripstone_spike, hardened_dripstone_large, hardened_dripstone_huge) -gapple_recipe(molten_dripstone_spike, molten_dripstone_spike, molten_dripstone_tiny) -gapple_recipe(molten_dripstone_spike, molten_dripstone_tiny, molten_dripstone_small) -gapple_recipe(molten_dripstone_spike, molten_dripstone_small, molten_dripstone_medium) -gapple_recipe(molten_dripstone_spike, molten_dripstone_medium, molten_dripstone_great) -gapple_recipe(molten_dripstone_spike, molten_dripstone_great, molten_dripstone_large) -gapple_recipe(molten_dripstone_spike, molten_dripstone_large, molten_dripstone_huge) -gapple_recipe(watered_dripstone_spike, watered_dripstone_spike, watered_dripstone_tiny) -gapple_recipe(watered_dripstone_spike, watered_dripstone_tiny, watered_dripstone_small) -gapple_recipe(watered_dripstone_spike, watered_dripstone_small, watered_dripstone_medium) -gapple_recipe(watered_dripstone_spike, watered_dripstone_medium, watered_dripstone_great) -gapple_recipe(watered_dripstone_spike, watered_dripstone_great, watered_dripstone_large) -gapple_recipe(watered_dripstone_spike, watered_dripstone_large, watered_dripstone_huge) +make_recipe(dry_dripstone_spike, dry_dripstone_spike, dry_dripstone_tiny) +make_recipe(dry_dripstone_spike, dry_dripstone_tiny, dry_dripstone_small) +make_recipe(dry_dripstone_spike, dry_dripstone_small, dry_dripstone_medium) +make_recipe(dry_dripstone_spike, dry_dripstone_medium, dry_dripstone_great) +make_recipe(dry_dripstone_spike, dry_dripstone_great, dry_dripstone_large) +make_recipe(dry_dripstone_spike, dry_dripstone_large, dry_dripstone_huge) +make_recipe(hardened_dripstone_spike, hardened_dripstone_spike, hardened_dripstone_tiny) +make_recipe(hardened_dripstone_spike, hardened_dripstone_tiny, hardened_dripstone_small) +make_recipe(hardened_dripstone_spike, hardened_dripstone_small, hardened_dripstone_medium) +make_recipe(hardened_dripstone_spike, hardened_dripstone_medium, hardened_dripstone_great) +make_recipe(hardened_dripstone_spike, hardened_dripstone_great, hardened_dripstone_large) +make_recipe(hardened_dripstone_spike, hardened_dripstone_large, hardened_dripstone_huge) +make_recipe(molten_dripstone_spike, molten_dripstone_spike, molten_dripstone_tiny) +make_recipe(molten_dripstone_spike, molten_dripstone_tiny, molten_dripstone_small) +make_recipe(molten_dripstone_spike, molten_dripstone_small, molten_dripstone_medium) +make_recipe(molten_dripstone_spike, molten_dripstone_medium, molten_dripstone_great) +make_recipe(molten_dripstone_spike, molten_dripstone_great, molten_dripstone_large) +make_recipe(molten_dripstone_spike, molten_dripstone_large, molten_dripstone_huge) +make_recipe(watered_dripstone_spike, watered_dripstone_spike, watered_dripstone_tiny) +make_recipe(watered_dripstone_spike, watered_dripstone_tiny, watered_dripstone_small) +make_recipe(watered_dripstone_spike, watered_dripstone_small, watered_dripstone_medium) +make_recipe(watered_dripstone_spike, watered_dripstone_medium, watered_dripstone_great) +make_recipe(watered_dripstone_spike, watered_dripstone_great, watered_dripstone_large) +make_recipe(watered_dripstone_spike, watered_dripstone_large, watered_dripstone_huge) + +noordstar_dripstone.add_lava_catcher("mcl_cauldrons:cauldron", "mcl_cauldrons:cauldron_1_lava") +noordstar_dripstone.add_lava_catcher("mcl_cauldrons:cauldron_1_lava", "mcl_cauldrons:cauldron_2_lava") +noordstar_dripstone.add_lava_catcher("mcl_cauldrons:cauldron_2_lava", "mcl_cauldrons:cauldron_3_lava") + +noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron", "mcl_cauldrons:cauldron_1") +noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron_1", "mcl_cauldrons:cauldron_2") +noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron_2", "mcl_cauldrons:cauldron_3") + +if minetest.get_modpath("mclx_core") then + noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron", "mcl_cauldrons:cauldron_1r") + noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron_1r", "mcl_cauldrons:cauldron_2r") + noordstar_dripstone.add_water_catcher("mcl_cauldrons:cauldron_2r", "mcl_cauldrons:cauldron_3r") +end \ No newline at end of file