Files
modolith/mods/livingcaves/decor.lua
T

2037 lines
62 KiB
Lua

local S = minetest.get_translator("livingcaves")
local modname = "livingcaves"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
--- stone cave
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_ceilings",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_ceilings",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_floors",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_floors",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb4.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_floors",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb5.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:stone"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,all_floors",
place_offset_y = -1,
biomes = {"coniferous_forest_under", "coniferous_forest", "deciduous_forest_under", "deciduous_forest", "savanna", "savanna_under", "sandstone_desert_under", "rainforest", "rainforest_under", "rainforest_swamp", "rainforest_under", "naturalbiomes:alpine", "naturalbiomes:mediterranean", "naturalbiomes:wetsavanna", "livingjungle:jungle", "livingfloatlands:coldgiantforest", "livingfloatlands:giantforest", "livingfloatlands:paleojungle"},
y_max = -5,
y_min = -25,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_spiderweb6.mts",
rotation = "random",
})
--- moss cave
minetest.register_decoration({
name = "livingcaves:moss",
deco_type = "simple",
place_on = {"livingcaves:mushcave_bottom"},
sidelen = 16,
fill_ratio = 0.085,
flags = "all_floors",
y_max = -30,
y_min = -90,
decoration = "livingcaves:moss",
})
minetest.register_node("livingcaves:moss", {
description = S"Cave Moss",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_moss.png"},
inventory_image = "livingcaves_moss.png",
wield_image = "livingcaves_moss.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom"},
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.1,
spread = {x = 100, y = 100, z = 100},
seed = 3602,
octaves = 7,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_lichycaverock.mts",
rotation = "random",
})
minetest.register_node("livingcaves:lichen", {
description = S"Cave Lichen",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_mushroom3.png"},
inventory_image = "livingcaves_mushroom3.png",
wield_image = "livingcaves_mushroom3.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_node("livingcaves:hangingmoss", {
description = S("Hanging Moss"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_hangingmoss.png"},
inventory_image = "livingcaves_hangingmoss.png",
wield_image = "livingcaves_hangingmoss.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:hangingmossend", {
description = S("Hanging Moss"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_hangingmoss_top.png"},
inventory_image = "livingcaves_hangingmoss_top.png",
wield_image = "livingcaves_hangingmoss_top.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom2"},
sidelen = 16,
fill_ratio = 0.09,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -30,
y_min = -90,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmoss.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom2"},
sidelen = 16,
fill_ratio = 0.08,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -30,
y_min = -90,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmoss2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom2"},
sidelen = 16,
fill_ratio = 0.06,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmoss3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom2"},
sidelen = 16,
fill_ratio = 0.03,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmoss4.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom2"},
sidelen = 16,
fill_ratio = 0.01,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmoss5.mts",
rotation = "random",
})
minetest.register_node("livingcaves:glowshroom", {
description = S("Glowing Mushroom Stem"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_mushroom.png"},
inventory_image = "livingcaves_mushroom.png",
wield_image = "livingcaves_mushroom.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:glowshroom_top", {
description = S("Glowing Mushroom Hat"),
drawtype = "plantlike",
waving = 0,
light_source = 7,
tiles = {"livingcaves_mushroom_top.png"},
inventory_image = "livingcaves_mushroom_top.png",
wield_image = "livingcaves_mushroom_top.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom"},
sidelen = 16,
fill_ratio = 0.06,
flags = "place_center_x,place_center_z,force_placement,all_floors",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_glowshroom.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:mushcave_bottom"},
sidelen = 16,
fill_ratio = 0.06,
flags = "place_center_x,place_center_z,force_placement,all_floors",
y_max = -30,
y_min = -90,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_glowshroom2.mts",
rotation = "random",
})
--- dripstone cave
minetest.register_node("livingcaves:stalagmitelarge", {
description = S("Large Stalagmite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstone.png"},
inventory_image = "livingcaves_dripstone.png",
wield_image = "livingcaves_dripstone.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagmitelargeend", {
description = S("Large Stalagmite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstone_top.png"},
inventory_image = "livingcaves_dripstone_top.png",
wield_image = "livingcaves_dripstone_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagmite", {
description = S("Stalagmite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstonesmall.png"},
inventory_image = "livingcaves_dripstonesmall.png",
wield_image = "livingcaves_dripstonesmall.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagmiteend", {
description = S("Stalagmite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstonesmall_top.png"},
inventory_image = "livingcaves_dripstonesmall_top.png",
wield_image = "livingcaves_dripstonesmall_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagtite", {
description = S("Stalagtite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstonesmall2.png"},
inventory_image = "livingcaves_dripstonesmall2.png",
wield_image = "livingcaves_dripstonesmall2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagtiteend", {
description = S("Stalagtite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstonesmall2_top.png"},
inventory_image = "livingcaves_dripstonesmall2_top.png",
wield_image = "livingcaves_dripstonesmall2_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagtitelarge", {
description = S("Large Stalagtite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstone2.png"},
inventory_image = "livingcaves_dripstone2.png",
wield_image = "livingcaves_dripstone2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:stalagtitelargeend", {
description = S("Large Stalagtite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_dripstone2_top.png"},
inventory_image = "livingcaves_dripstone2_top.png",
wield_image = "livingcaves_dripstone2_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.1,
spread = {x = 100, y = 100, z = 100},
seed = 3602,
octaves = 7,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -2,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_pool1.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.05,
spread = {x = 100, y = 100, z = 100},
seed = 4321,
octaves = 3,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -2,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_pool2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.02,
spread = {x = 100, y = 100, z = 100},
seed = 1368,
octaves = 5,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -3,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_pool3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.01,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_largestalagmitegroup.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.01,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_largestalagmitegroup2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.01,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_largestalagtitegroup.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.01,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_largestalagtitegroup2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmite.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmite2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmite3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmitesmall.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmitesmall2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagmitesmall3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtite.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtite2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtite3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtitesmall.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtitesmall2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:dripstonecave_bottom2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -90,
y_min = -200,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_stalagtitesmall3.mts",
rotation = "random",
})
minetest.register_node("livingcaves:water_source", {
description = S("Cave Water Source"),
drawtype = "liquid",
waving = 3,
light_source = 7,
tiles = {
{
name = "livingcaves_water_source_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
{
name = "livingcaves_water_source_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
use_texture_alpha = "blend",
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "source",
liquid_alternative_flowing = "livingcaves:water_flowing",
liquid_alternative_source = "livingcaves:water_source",
liquid_viscosity = 1,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
groups = {water = 3, liquid = 3, cools_lava = 1},
sounds = default.node_sound_water_defaults(),
})
minetest.register_node("livingcaves:water_flowing", {
description = S("Flowing Cave Water"),
drawtype = "flowingliquid",
waving = 3,
light_source = 7,
tiles = {"livingcaves_water_source_animated.png"},
special_tiles = {
{
name = "livingcaves_water_flowing_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.5,
},
},
{
name = "livingcaves_water_flowing_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.5,
},
},
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "flowingliquid",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "livingcaves:water_flowing",
liquid_alternative_source = "livingcaves:water_source",
liquid_viscosity = 1,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
cools_lava = 1},
sounds = default.node_sound_water_defaults(),
})
minetest.register_craft({
output = 'livingcaves:bucket_empty 1',
recipe = {
{'default_steel_ingot', '', 'livingcaves:dripstonecave_bottom'},
{'', 'group:wood', ''},
}
})
bucket_cave = {}
bucket_cave.liquids = {}
local function check_protection(pos, name, text)
if minetest.is_protected(pos, name) then
minetest.log("action", (name ~= "" and name or "A mod")
.. " tried to " .. text
.. " at protected position "
.. minetest.pos_to_string(pos)
.. " with a cave bucket")
minetest.record_protection_violation(pos, name)
return true
end
return false
end
-- Register a new liquid
-- source = name of the source node
-- flowing = name of the flowing node
-- itemname = name of the new bucket item (or nil if liquid is not takeable)
-- inventory_image = texture of the new bucket item (ignored if itemname == nil)
-- name = text description of the bucket item
-- groups = (optional) groups of the bucket item, for example {water_bucket = 1}
-- force_renew = (optional) bool. Force the liquid source to renew if it has a
-- source neighbour, even if defined as 'liquid_renewable = false'.
-- Needed to avoid creating holes in sloping rivers.
-- This function can be called from any mod (that depends on bucket).
function bucket_cave.register_liquid(source, flowing, itemname, inventory_image, name,
groups, force_renew)
bucket_cave.liquids[source] = {
source = source,
flowing = flowing,
itemname = itemname,
force_renew = force_renew,
}
bucket_cave.liquids[flowing] = bucket_cave.liquids[source]
if itemname ~= nil then
minetest.register_craftitem(itemname, {
description = name,
inventory_image = inventory_image,
stack_max = 1,
liquids_pointable = true,
groups = groups,
on_place = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
local node = minetest.get_node_or_nil(pointed_thing.under)
local ndef = node and minetest.registered_nodes[node.name]
-- Call on_rightclick if the pointed node defines it
if ndef and ndef.on_rightclick and
not (user and user:is_player() and
user:get_player_control().sneak) then
return ndef.on_rightclick(
pointed_thing.under,
node, user,
itemstack)
end
local lpos
-- Check if pointing to a buildable node
if ndef and ndef.buildable_to then
-- buildable; replace the node
lpos = pointed_thing.under
else
-- not buildable to; place the liquid above
-- check if the node above can be replaced
lpos = pointed_thing.above
node = minetest.get_node_or_nil(lpos)
local above_ndef = node and minetest.registered_nodes[node.name]
if not above_ndef or not above_ndef.buildable_to then
-- do not remove the bucket with the liquid
return itemstack
end
end
if check_protection(lpos, user
and user:get_player_name()
or "", "place "..source) then
return
end
minetest.set_node(lpos, {name = source})
return ItemStack("livingcaves:bucket_empty")
end
})
end
end
minetest.register_craftitem("livingcaves:bucket_empty", {
description = S"Empty Cave Bucket",
inventory_image = "bucket_cave.png",
stack_max = 99,
liquids_pointable = true,
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "object" then
pointed_thing.ref:punch(user, 1.0, { full_punch_interval=1.0 }, nil)
return user:get_wielded_item()
elseif pointed_thing.type ~= "node" then
-- do nothing if it's neither object nor node
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local liquiddef = bucket_cave.liquids[node.name]
local item_count = user:get_wielded_item():get_count()
if liquiddef ~= nil
and liquiddef.itemname ~= nil
and node.name == liquiddef.source then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then
return
end
-- default set to return filled bucket
local giving_back = liquiddef.itemname
-- check if holding more than 1 empty bucket
if item_count > 1 then
-- if space in inventory add filled bucked, otherwise drop as item
local inv = user:get_inventory()
if inv:room_for_item("main", {name=liquiddef.itemname}) then
inv:add_item("main", liquiddef.itemname)
else
local pos = user:get_pos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, liquiddef.itemname)
end
-- set to return empty buckets minus 1
giving_back = "livingcaves:bucket_empty "..tostring(item_count-1)
end
-- force_renew requires a source neighbour
local source_neighbor = false
if liquiddef.force_renew then
source_neighbor =
minetest.find_node_near(pointed_thing.under, 1, liquiddef.source)
end
if not (source_neighbor and liquiddef.force_renew) then
minetest.add_node(pointed_thing.under, {name = "air"})
end
return ItemStack(giving_back)
else
-- non-liquid nodes will have their on_punch triggered
local node_def = minetest.registered_nodes[node.name]
if node_def then
node_def.on_punch(pointed_thing.under, node, user, pointed_thing)
end
return user:get_wielded_item()
end
end,
})
bucket_cave.register_liquid(
"livingcaves:water_source",
"livingcaves:water_flowing",
"livingcaves:bucket_cavewater",
"bucket_cave_cavewater.png",
S"Cave Water Bucket",
{water_bucket_cave = 1}
)
-- River water source is 'liquid_renewable = false' to avoid horizontal spread
-- of water sources in sloping rivers that can cause water to overflow
-- riverbanks and cause floods.
-- River water source is instead made renewable by the 'force renew' option
-- used here.
bucket_cave.register_liquid(
"default:water_source",
"default:water_flowing",
"livingcaves:bucket_water",
"bucket_cave_water.png",
S"Water Bucket",
{water_bucket_cave = 1}
)
bucket_cave.register_liquid(
"default:river_water_source",
"default:river_water_flowing",
"livingcaves:bucket_river_water",
"bucket_cave_river_water.png",
S"River Water Bucket",
{water_bucket_cave = 1},
true
)
--- bacteria cave
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 3789,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -3,
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/bacteriacave_trap.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 8734,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -2,
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/bacteriacave_pool.mts",
rotation = "random",
})
minetest.register_node("livingcaves:hangingmold", {
description = S("Hanging Mold"),
drawtype = "plantlike",
waving = 0,
light_source = 3,
tiles = {"livingcaves_hangingmold.png"},
inventory_image = "livingcaves_hangingmold.png",
wield_image = "livingcaves_hangingmold.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:hangingmoldend", {
description = S("Hanging Mold"),
drawtype = "plantlike",
waving = 0,
light_source = 3,
tiles = {"livingcaves_hangingmold_top.png"},
inventory_image = "livingcaves_hangingmold_top.png",
wield_image = "livingcaves_hangingmold_top.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom2"},
sidelen = 16,
fill_ratio = 0.07,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmold.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom2"},
sidelen = 16,
fill_ratio = 0.05,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmold2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom2"},
sidelen = 16,
fill_ratio = 0.03,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -200,
y_mint = -400,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingmold3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
fill_ratio = 0.065,
flags = "all_floors",
y_max = -100,
y_min = -200,
decoration = "livingcaves:bacteriacave_mold",
})
minetest.register_node("livingcaves:bacteriacave_mold", {
description = S"Bacteria with Mold",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_bacteriacave_mold.png"},
inventory_image = "livingcaves_bacteriacave_mold.png",
wield_image = "livingcaves_bacteriacave_mold.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
fill_ratio = 0.065,
flags = "all_floors",
y_max = -200,
y_mint = -400,
decoration = "livingcaves:bacteriacave_mold2",
})
minetest.register_node("livingcaves:bacteriacave_mold2", {
description = S"Bacteria Colony",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_bacteriacave_mold2.png"},
inventory_image = "livingcaves_bacteriacave_mold2.png",
wield_image = "livingcaves_bacteriacave_mold2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
fill_ratio = 0.065,
flags = "all_floors",
y_max = -200,
y_mint = -400,
decoration = "livingcaves:bacteriacave_mold3",
})
minetest.register_node("livingcaves:bacteriacave_mold3", {
description = S"Bacteria Colony",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_bacteriacave_mold3.png"},
inventory_image = "livingcaves_bacteriacave_mold3.png",
wield_image = "livingcaves_bacteriacave_mold3.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_node("livingcaves:mushroom_edible", {
description = S("Smelly Mushroom"),
drawtype = "allfaces_optional",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_mushroom2.png"},
special_tiles = {"livingcaves_mushroom2.png"},
paramtype = "light",
on_use = minetest.item_eat(5),
is_ground_content = false,
groups = {food = 1, snappy = 3, leafdecay = 3, flammable = 2},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingcaves:mushroom_edible'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingcaves:mushroom_edible'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
fill_ratio = 0.02,
flags = "all_floors",
y_max = -200,
y_mint = -400,
decoration = "livingcaves:mushroom_edible",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -2,
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/bacteriacave_nest.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:bacteriacave_bottom"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -1,
y_max = -200,
y_mint = -400,
schematic = minetest.get_modpath("livingcaves").."/schematics/bacteriacave_nest2.mts",
rotation = "random",
})
--- rootcave
minetest.register_node("livingcaves:rootcave_hangingroot", {
description = S("Hanging Roots"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_rootcave_hangingroot.png"},
inventory_image = "livingcaves_rootcave_hangingroot.png",
wield_image = "livingcaves_rootcave_hangingroot.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:rootcave_hangingroot2", {
description = S("Hanging Roots"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_rootcave_hangingroot_top.png"},
inventory_image = "livingcaves_rootcave_hangingroot_top.png",
wield_image = "livingcaves_rootcave_hangingroot_top.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:rootdirt"},
sidelen = 16,
fill_ratio = 0.1,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingroot.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:rootdirt"},
sidelen = 16,
fill_ratio = 0.09,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingroot2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:rootdirt"},
sidelen = 16,
fill_ratio = 0.07,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
place_offset_y=-1,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_hangingroot3.mts",
rotation = "random",
})
minetest.register_decoration({
name = "livingcaves:rootcave_smallroot",
deco_type = "simple",
place_on = {"livingcaves:rootdirt2"},
sidelen = 16,
offset = -0.03,
scale = 0.5,
spread = {x = 100, y = 100, z = 100},
seed = 7123,
octaves = 7,
persist = 1,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
decoration = "livingcaves:rootcave_smallroot",
})
minetest.register_node("livingcaves:rootcave_smallroot", {
description = S"Small Cave Roots",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_rootcave_smallroot.png"},
inventory_image = "livingcaves_rootcave_smallroot.png",
wield_image = "livingcaves_rootcave_smallroot.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingcaves:rootcave_smallroot2",
deco_type = "simple",
place_on = {"livingcaves:rootdirt2"},
sidelen = 16,
offset = -0.03,
scale = 0.5,
spread = {x = 100, y = 100, z = 100},
seed = 5123,
octaves = 7,
persist = 1,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
decoration = "livingcaves:rootcave_smallroot2",
})
minetest.register_node("livingcaves:rootcave_smallroot2", {
description = S"Small Cave Roots",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_rootcave_smallroot2.png"},
inventory_image = "livingcaves_rootcave_smallroot2.png",
wield_image = "livingcaves_rootcave_smallroot2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingcaves:rootcave_bigroot",
deco_type = "simple",
place_on = {"livingcaves:rootdirt2"},
sidelen = 16,
fill_ratio = 0.07,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
decoration = "livingcaves:rootcave_bigroot",
})
minetest.register_node("livingcaves:rootcave_bigroot", {
description = S"Big Cave Roots",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_rootcave_bigroot.png"},
inventory_image = "livingcaves_rootcave_bigroot.png",
wield_image = "livingcaves_rootcave_bigroot.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingcaves:rootcave_bigroot2",
deco_type = "simple",
place_on = {"livingcaves:rootdirt2"},
sidelen = 16,
fill_ratio = 0.05,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
y_max = -0,
y_min = -30,
decoration = "livingcaves:rootcave_bigroot2",
})
minetest.register_node("livingcaves:rootcave_bigroot2", {
description = S"Big Cave Roots",
drawtype = "plantlike",
waving = 0,
visual_scale = 1.0,
tiles = {"livingcaves_rootcave_bigroot2.png"},
inventory_image = "livingcaves_rootcave_bigroot2.png",
wield_image = "livingcaves_rootcave_bigroot2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
--- ice cave
minetest.register_node("livingcaves:icestalagmitelarge", {
description = S("Large Ice Stalagmite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespikelarge.png"},
inventory_image = "livingcaves_icecave_icespikelarge.png",
wield_image = "livingcaves_icecave_icespikelarge.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagmitelargeend", {
description = S("Large Ice Stalagmite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespikelarge_top.png"},
inventory_image = "livingcaves_icecave_icespikelarge_top.png",
wield_image = "livingcaves_icecave_icespikelarge_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagmite", {
description = S("Ice Stalagmite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike2.png"},
inventory_image = "livingcaves_icecave_icespike2.png",
wield_image = "livingcaves_icecave_icespike2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagmiteend", {
description = S("Ice Stalagmite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike2_top.png"},
inventory_image = "livingcaves_icecave_icespike2_top.png",
wield_image = "livingcaves_icecave_icespike2_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagtite", {
description = S("Ice Stalagtite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike.png"},
inventory_image = "livingcaves_icecave_icespike.png",
wield_image = "livingcaves_icecave_icespike.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagtiteend", {
description = S("Stalagtite Ice Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike_top.png"},
inventory_image = "livingcaves_icecave_icespike_top.png",
wield_image = "livingcaves_icecave_icespike_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagtitelarge", {
description = S("Large Ice Stalagtite"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike2large.png"},
inventory_image = "livingcaves_icecave_icespike2large.png",
wield_image = "livingcaves_icecave_icespike2large.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingcaves:icestalagtitelargeend", {
description = S("Large Ice Stalagtite Spike"),
drawtype = "plantlike",
waving = 0,
tiles = {"livingcaves_icecave_icespike2large_top.png"},
inventory_image = "livingcaves_icecave_icespike2large_top.png",
wield_image = "livingcaves_icecave_icespike2large_top.png",
paramtype = "light",
damage_per_second = 4,
sunlight_propagates = true,
walkable = true,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {cracky = 3, cools_lava = 1, slippery = 3},
sounds = default.node_sound_ice_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmite.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmite2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmite3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmitesmall.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmitesmall2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = 0,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmitesmall3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtite.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtite2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.02,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtite3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtitesmall.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtitesmall2.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice2"},
sidelen = 16,
fill_ratio = 0.04,
flags = "place_center_x,place_center_z,force_placement,all_ceilings",
place_offset_y = -1,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagtitesmall3.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 0405,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -5,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmitegroup.mts",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"livingcaves:icecave_ice"},
sidelen = 16,
noise_params = {
scale = 0.01,
spread = {x = 40, y = 40, z = 40},
seed = 1053,
octaves = 6,
persist = 1,
},
flags = "place_center_x,place_center_z,force_placement,all_floors",
place_offset_y = -5,
y_max = -0,
y_min = -30,
schematic = minetest.get_modpath("livingcaves").."/schematics/livingcaves_icestalagmitegroup2.mts",
rotation = "random",
})