Skip to content
Snippets Groups Projects
Commit b6d45be7 authored by Chris N's avatar Chris N
Browse files

Large scale cleanup, calling it Version 0.2.8

Lots of values moved to config.lua, split nodes and functions into their
own files.
parent 1df55930
No related branches found
No related tags found
No related merge requests found
......@@ -20,5 +20,26 @@ local function setting(stype, name, default)
caverealms.config[name] = value
end
setting("number", "ymin", -33000)
setting("number", "ymax", -700)
--generation settings
setting("number", "ymin", -33000) --bottom realm limit
setting("number", "ymax", -700) --top realm limit
setting("number", "chuint", 2) --vertical chunk interval between caves
--falling icicles
setting("bool", "falling_icicles", true) --enable/disable falling icicles
setting("number", "fallcha", 0.33) --chance of icicles falling when dug
--decoration chances
setting("number", "stagcha", 0.002) --chance of stalagmites
setting("number", "stalcha", 0.003) --chance of stalactites
setting("number", "h_lag", 15) --max height for stalagmites
setting("number", "h_lac", 20) --...stalactites
setting("number", "crystal", 0.007) --chance of glow crystal formations
setting("number", "h_cry", 9) --max height of glow crystals
setting("number", "h_clac", 13) --max height of glow crystal stalactites
setting("number", "gemcha", 0.03) --chance of small glow gems
setting("number", "mushcha", 0.04) --chance of mushrooms
setting("number", "myccha", 0.03) --chance of mycena mushrooms
setting("number", "wormcha", 0.03) --chance of glow worms
setting("number", "giantcha", 0.001) --chance of giant mushrooms
setting("number", "icicha", 0.035) --chance of icicles
--caverealms crafting.lua
--CaveRealms crafting.lua
--CRAFT ITEMS--
......@@ -33,4 +33,11 @@ minetest.register_craft({
output = "default:mese_crystal_fragment 8",
type = "shapeless",
recipe = {"caverealms:glow_mese"}
})
--thin ice to water
minetest.register_craft({
output = "default:water_source",
type = "shapeless",
recipe = {"caverealms:thin_ice"}
})
\ No newline at end of file
--CaveRealms functions.lua
--FUNCTIONS--
local H_LAG = caverealms.config.h_lag --15 --max height for stalagmites
local H_LAC = caverealms.config.h_lac --20 --...stalactites
local H_CRY = caverealms.config.h_cry --9 --max height of glow crystals
local H_CLAC = caverealms.config.h_clac --13 --max height of glow crystal stalactites
--stalagmite spawner
function caverealms:stalagmite(x,y,z, area, data)
--contest ids
local c_stone = minetest.get_content_id("default:stone")
local top = math.random(6,H_LAG) --grab a random height for the stalagmite
for j = 0, top do --y
for k = -3, 3 do
for l = -3, 3 do
if j == 0 then
if k*k + l*l <= 9 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
elseif j <= top/5 then
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
elseif j <= top/5 * 3 then
if k*k + l*l <= 1 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
else
local vi = area:index(x, y+j, z-3)
data[vi] = c_stone
end
end
end
end
end
--stalactite spawner
function caverealms:stalactite(x,y,z, area, data)
--contest ids
local c_stone = minetest.get_content_id("default:stone")--("caverealms:limestone")
local bot = math.random(-H_LAC, -6) --grab a random height for the stalagmite
for j = bot, 0 do --y
for k = -3, 3 do
for l = -3, 3 do
if j >= -1 then
if k*k + l*l <= 9 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
elseif j >= bot/5 then
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
elseif j >= bot/5 * 3 then
if k*k + l*l <= 1 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
else
local vi = area:index(x, y+j, z-3)
data[vi] = c_stone
end
end
end
end
end
--glowing crystal stalagmite spawner
function caverealms:crystal_stalagmite(x,y,z, area, data, biome)
--contest ids
local c_stone = minetest.get_content_id("default:stone")
local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
local c_crystore = minetest.get_content_id("caverealms:glow_ore")
local c_emerald = minetest.get_content_id("caverealms:glow_emerald")
local c_emore = minetest.get_content_id("caverealms:glow_emerald_ore")
local c_mesecry = minetest.get_content_id("caverealms:glow_mese")
local c_meseore = minetest.get_content_id("default:stone_with_mese")
local c_ice = minetest.get_content_id("default:ice")
local c_thinice = minetest.get_content_id("caverealms:thin_ice")
--for randomness
local mode = 1
if math.random(15) == 1 then
mode = 2
end
if biome == 3 then
if math.random(25) == 1 then
mode = 2
else
mode = 1
end
end
if biome == 4 or biome == 5 then
if math.random(3) == 1 then
mode = 2
end
end
local top = math.random(5,H_CRY) --grab a random height for the stalagmite
for j = 0, top do --y
for k = -3, 3 do
for l = -3, 3 do
if j == 0 then
if k*k + l*l <= 9 then
if (biome == 4 or biome == 5) and mode == 1 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_ice
else
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
end
elseif j <= top/5 then
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+j, z+l-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emore
else
data[vi] = c_crystore
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystore
else
data[vi] = c_emore
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_meseore
else
data[vi] = c_emore
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystore
else
data[vi] = c_ice
end
end
end
elseif j <= top/5 * 3 then
if k*k + l*l <= 1 then
local vi = area:index(x+k, y+j, z+l-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emerald
else
data[vi] = c_crystal
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_emerald
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_mesecry
else
data[vi] = c_emerald
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_thinice
end
end
end
else
local vi = area:index(x, y+j, z-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emerald
else
data[vi] = c_crystal
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_emerald
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_mesecry
else
data[vi] = c_emerald
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_thinice
end
end
end
end
end
end
end
--crystal stalactite spawner
function caverealms:crystal_stalactite(x,y,z, area, data, biome)
--contest ids
local c_stone = minetest.get_content_id("default:stone")
local c_crystore = minetest.get_content_id("caverealms:glow_ore")
local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
local c_emerald = minetest.get_content_id("caverealms:glow_emerald")
local c_emore = minetest.get_content_id("caverealms:glow_emerald_ore")
local c_mesecry = minetest.get_content_id("caverealms:glow_mese")
local c_meseore = minetest.get_content_id("default:stone_with_mese")
local c_ice = minetest.get_content_id("default:ice")
local c_thinice = minetest.get_content_id("caverealms:hanging_thin_ice")
--for randomness
local mode = 1
if math.random(15) == 1 then
mode = 2
end
if biome == 3 then
if math.random(25) == 1 then
mode = 2
else
mode = 1
end
end
if biome == 4 or biome == 5 then
if math.random(3) == 1 then
mode = 2
end
end
local bot = math.random(-H_CLAC, -6) --grab a random height for the stalagmite
for j = bot, 0 do --y
for k = -3, 3 do
for l = -3, 3 do
if j >= -1 then
if k*k + l*l <= 9 then
if (biome == 4 or biome == 5) and mode == 1 then
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_ice
else
local vi = area:index(x+k, y+j, z+l-3)
data[vi] = c_stone
end
end
elseif j >= bot/5 then
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+j, z+l-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emore
else
data[vi] = c_crystore
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystore
else
data[vi] = c_emore
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_meseore
else
data[vi] = c_emore
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystore
else
data[vi] = c_ice
end
end
end
elseif j >= bot/5 * 3 then
if k*k + l*l <= 1 then
local vi = area:index(x+k, y+j, z+l-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emerald
else
data[vi] = c_crystal
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_emerald
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_mesecry
else
data[vi] = c_emerald
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_thinice
end
end
end
else
local vi = area:index(x, y+j, z-3)
if biome == 1 then
if mode == 2 then
data[vi] = c_emerald
else
data[vi] = c_crystal
end
elseif biome == 2 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_emerald
end
elseif biome == 3 then
if mode == 2 then
data[vi] = c_mesecry
else
data[vi] = c_emerald
end
elseif biome == 4 or biome == 5 then
if mode == 2 then
data[vi] = c_crystal
else
data[vi] = c_thinice
end
end
end
end
end
end
end
--function to create giant 'shrooms
function caverealms:giant_shroom(x, y, z, area, data)
--as usual, grab the content ID's
local c_stem = minetest.get_content_id("caverealms:mushroom_stem")
local c_cap = minetest.get_content_id("caverealms:mushroom_cap")
local c_gills = minetest.get_content_id("caverealms:mushroom_gills")
z = z - 5
--cap
for k = -5, 5 do
for l = -5, 5 do
if k*k + l*l <= 25 then
local vi = area:index(x+k, y+5, z+l)
data[vi] = c_cap
end
if k*k + l*l <= 16 then
local vi = area:index(x+k, y+6, z+l)
data[vi] = c_cap
vi = area:index(x+k, y+5, z+l)
data[vi] = c_gills
end
if k*k + l*l <= 9 then
local vi = area:index(x+k, y+7, z+l)
data[vi] = c_cap
end
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+8, z+l)
data[vi] = c_cap
end
end
end
--stem
for j = 0, 5 do
for k = -1,1 do
local vi = area:index(x+k, y+j, z)
data[vi] = c_stem
if k == 0 then
local ai = area:index(x, y+j, z+1)
data[ai] = c_stem
ai = area:index(x, y+j, z-1)
data[ai] = c_stem
end
end
end
end
function caverealms:legacy_giant_shroom(x, y, z, area, data) --leftovers :P
--as usual, grab the content ID's
local c_stem = minetest.get_content_id("caverealms:mushroom_stem")
local c_cap = minetest.get_content_id("caverealms:mushroom_cap")
z = z - 4
--cap
for k = -4, 4 do
for l = -4, 4 do
if k*k + l*l <= 16 then
local vi = area:index(x+k, y+5, z+l)
data[vi] = c_cap
end
if k*k + l*l <= 9 then
local vi = area:index(x+k, y+4, z+l)
data[vi] = c_cap
vi = area:index(x+k, y+6, z+l)
data[vi] = c_cap
end
if k*k + l*l <= 4 then
local vi = area:index(x+k, y+7, z+l)
data[vi] = c_cap
end
end
end
--stem
for j = 0, 4 do
for k = -1,1 do
local vi = area:index(x+k, y+j, z)
data[vi] = c_stem
if k == 0 then
local ai = area:index(x, y+j, z+1)
data[ai] = c_stem
ai = area:index(x, y+j, z-1)
data[ai] = c_stem
end
end
end
end
\ No newline at end of file
This diff is collapsed.
nodes.lua 0 → 100644
-- CaveRealms nodes.lua
--NODES--
--glowing crystal
minetest.register_node("caverealms:glow_crystal", {
description = "Glow Crystal",
tiles = {"caverealms_glow_crystal.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
light_source = 13,
paramtype = "light",
use_texture_alpha = true,
drawtype = "glasslike",
sunlight_propagates = true,
})
--glowing emerald
minetest.register_node("caverealms:glow_emerald", {
description = "Glow Emerald",
tiles = {"caverealms_glow_emerald.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
light_source = 13,
paramtype = "light",
use_texture_alpha = true,
drawtype = "glasslike",
sunlight_propagates = true,
})
--glowing mese crystal blocks
minetest.register_node("caverealms:glow_mese", {
description = "Mese Crystal Block",
tiles = {"caverealms_glow_mese.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
light_source = 13,
paramtype = "light",
use_texture_alpha = true,
drawtype = "glasslike",
sunlight_propagates = true,
})
--embedded crystal
minetest.register_node("caverealms:glow_ore", {
description = "Glow Crystal Ore",
tiles = {"caverealms_glow_ore.png"},
is_ground_content = true,
groups = {cracky=2},
sounds = default.node_sound_glass_defaults(),
light_source = 10,
paramtype = "light",
})
--embedded emerald
minetest.register_node("caverealms:glow_emerald_ore", {
description = "Glow Emerald Ore",
tiles = {"caverealms_glow_emerald_ore.png"},
is_ground_content = true,
groups = {cracky=2},
sounds = default.node_sound_glass_defaults(),
light_source = 10,
paramtype = "light",
})
--thin (transparent) ice
minetest.register_node("caverealms:thin_ice", {
description = "Thin Ice",
tiles = {"caverealms_thin_ice.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
use_texture_alpha = true,
drawtype = "glasslike",
sunlight_propagates = true,
freezemelt = "default:water_source",
})
--alternate version for stalactites
minetest.register_node("caverealms:hanging_thin_ice", {
description = "Thin Ice",
tiles = {"caverealms_thin_ice.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
use_texture_alpha = true,
drawtype = "glasslike",
sunlight_propagates = true,
drop = "caverealms:thin_ice",
freezemelt = "default:water_flowing",
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if FALLING_ICICLES then
if math.random() <= FALLCHA then
obj = minetest.add_entity(pos, "caverealms:falling_ice")
obj:get_luaentity():set_node(oldnode)
for y = -13, 13 do
for x = -3, 3 do
for z = -3, 3 do
local npos = {x=pos.x+x, y=pos.y+y, z=pos.z+z}
if minetest.get_node(npos).name == "caverealms:hanging_thin_ice" then
nobj = minetest.add_entity(npos, "caverealms:falling_ice")
nobj:get_luaentity():set_node(oldnode)
minetest.remove_node(npos)
end
end
end
end
minetest.remove_node(pos)
else
return 1
end
else
return 1
end
end,
})
--glowing crystal gem
minetest.register_node("caverealms:glow_gem", {
description = "Glow Gem",
tiles = {"caverealms_glow_gem.png"},
inventory_image = "caverealms_glow_gem.png",
wield_image = "caverealms_glow_gem.png",
is_ground_content = true,
groups = {cracky=3, oddly_breakable_by_hand=1},
sounds = default.node_sound_glass_defaults(),
light_source = 11,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--upward pointing icicle
minetest.register_node("caverealms:icicle_up", {
description = "Icicle",
tiles = {"caverealms_icicle_up.png"},
inventory_image = "caverealms_icicle_up.png",
wield_image = "caverealms_icicle_up.png",
is_ground_content = true,
groups = {cracky=3, oddly_breakable_by_hand=1},
sounds = default.node_sound_glass_defaults(),
light_source = 8,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--downward pointing icicle
minetest.register_node("caverealms:icicle_down", {
description = "Icicle",
tiles = {"caverealms_icicle_down.png"},
inventory_image = "caverealms_icicle_down.png",
wield_image = "caverealms_icicle_down.png",
is_ground_content = true,
groups = {cracky=3, oddly_breakable_by_hand=1},
sounds = default.node_sound_glass_defaults(),
light_source = 8,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--cave mossy cobble - bluish?
minetest.register_node("caverealms:stone_with_moss", {
description = "Cave Stone with Moss",
tiles = {"default_cobble.png^caverealms_moss.png", "default_cobble.png", "default_cobble.png^caverealms_moss_side.png"},
is_ground_content = true,
groups = {crumbly=3},
drop = 'default:cobble',
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.25},
}),
})
--cave lichen-covered cobble - purple-ish
minetest.register_node("caverealms:stone_with_lichen", {
description = "Cave Stone with Lichen",
tiles = {"default_cobble.png^caverealms_lichen.png", "default_cobble.png", "default_cobble.png^caverealms_lichen_side.png"},
is_ground_content = true,
groups = {crumbly=3},
drop = 'default:cobble',
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.25},
}),
})
--cave algae-covered cobble - yellow-ish
minetest.register_node("caverealms:stone_with_algae", {
description = "Cave Stone with Algae",
tiles = {"default_cobble.png^caverealms_algae.png", "default_cobble.png", "default_cobble.png^caverealms_algae_side.png"},
is_ground_content = true,
groups = {crumbly=3},
drop = 'default:cobble',
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.25},
}),
})
--glow worms
minetest.register_node("caverealms:glow_worm", {
description = "Glow Worms",
tiles = {"caverealms_glow_worm.png"},
inventory_image = "caverealms_glow_worm.png",
wield_image = "caverealms_glow_worm.png",
is_ground_content = true,
groups = {oddly_breakable_by_hand=3},
light_source = 9,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5},
},
})
--cave plants go here
--glowing fungi
minetest.register_node("caverealms:fungus", {
description = "Glowing Fungus",
tiles = {"caverealms_fungi.png"},
inventory_image = "caverealms_fungi.png",
wield_image = "caverealms_fungi.png",
is_ground_content = true,
groups = {oddly_breakable_by_hand=3},
light_source = 5,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--mycena mushroom
minetest.register_node("caverealms:mycena", {
description = "Mycena Mushroom",
tiles = {"caverealms_mycena.png"},
inventory_image = "caverealms_mycena.png",
wield_image = "caverealms_mycena.png",
is_ground_content = true,
groups = {oddly_breakable_by_hand=3},
light_source = 6,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
visual_scale = 1.0,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--giant mushroom
--stem
minetest.register_node("caverealms:mushroom_stem", {
description = "Giant Mushroom Stem",
tiles = {"caverealms_mushroom_stem.png"},
is_ground_content = true,
groups = {oddly_breakable_by_hand=1},
})
--cap
minetest.register_node("caverealms:mushroom_cap", {
description = "Giant Mushroom Cap",
tiles = {"caverealms_mushroom_cap.png"},
is_ground_content = true,
groups = {oddly_breakable_by_hand=1},
})
--gills
minetest.register_node("caverealms:mushroom_gills", {
description = "Giant Mushroom Gills",
tiles = {"caverealms_mushroom_gills.png"},
is_ground_content = true,
groups = {oddly_breakable_by_hand=1},
drawtype = "plantlike",
})
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment