summaryrefslogtreecommitdiff
path: root/caverealms_lite
diff options
context:
space:
mode:
authorVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>2019-04-24 18:59:36 -0400
committerVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>2019-04-24 18:59:36 -0400
commita5eef1c5de77fa7770877802e66c3e1c53f9a0da (patch)
tree0f36e64a58e5f5bb7d95be6ae692f58f2ebfe483 /caverealms_lite
parentdda854cf06f90a04a03844e19c4d4ad220e38fe4 (diff)
downloaddreambuilder_modpack-a5eef1c5de77fa7770877802e66c3e1c53f9a0da.tar
dreambuilder_modpack-a5eef1c5de77fa7770877802e66c3e1c53f9a0da.tar.gz
dreambuilder_modpack-a5eef1c5de77fa7770877802e66c3e1c53f9a0da.tar.bz2
dreambuilder_modpack-a5eef1c5de77fa7770877802e66c3e1c53f9a0da.tar.xz
dreambuilder_modpack-a5eef1c5de77fa7770877802e66c3e1c53f9a0da.zip
update castles, areas, homedecor, plantlife,
gloopblocks, hotbar, inspector, maptools, mesecons, moreblocks, moreores, technic, teleport_request, and worldedit switched to caverealms_lite (with minor fixes by me) switched to CWz's fork of player_textures The homedecor update brings in the big split, and will require you to re-enable all modpack components in order to avoid loss of content.
Diffstat (limited to 'caverealms_lite')
-rw-r--r--caverealms_lite/LICENSE.txt26
-rw-r--r--caverealms_lite/README.md31
-rw-r--r--caverealms_lite/config.lua53
-rw-r--r--caverealms_lite/crafting.lua145
-rw-r--r--caverealms_lite/depends.txt4
-rw-r--r--caverealms_lite/description.txt1
-rw-r--r--caverealms_lite/docs/caverealms_lite_biomes.txt19
-rw-r--r--caverealms_lite/dungeon_master.lua16
-rw-r--r--caverealms_lite/functions.lua409
-rw-r--r--caverealms_lite/init.lua333
-rw-r--r--caverealms_lite/mod.conf1
-rw-r--r--caverealms_lite/nodes.lua528
-rw-r--r--caverealms_lite/plants.lua188
-rw-r--r--caverealms_lite/schematics/shroom.mtsbin0 -> 220 bytes
-rw-r--r--caverealms_lite/screenshot.pngbin0 -> 156799 bytes
-rw-r--r--caverealms_lite/textures/Thumbs.dbbin0 -> 18944 bytes
-rw-r--r--caverealms_lite/textures/caverealms_algae.pngbin0 -> 739 bytes
-rw-r--r--caverealms_lite/textures/caverealms_algae_side.pngbin0 -> 446 bytes
-rw-r--r--caverealms_lite/textures/caverealms_angler_rod.pngbin0 -> 252 bytes
-rw-r--r--caverealms_lite/textures/caverealms_angler_rod_baited.pngbin0 -> 273 bytes
-rw-r--r--caverealms_lite/textures/caverealms_angler_rod_weild.pngbin0 -> 260 bytes
-rw-r--r--caverealms_lite/textures/caverealms_coal_dust.pngbin0 -> 288 bytes
-rw-r--r--caverealms_lite/textures/caverealms_dm_stone.pngbin0 -> 590 bytes
-rw-r--r--caverealms_lite/textures/caverealms_fire_vine.pngbin0 -> 554 bytes
-rw-r--r--caverealms_lite/textures/caverealms_fungi.pngbin0 -> 150 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_amethyst.pngbin0 -> 325 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_amethyst_ore.pngbin0 -> 329 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_bait.pngbin0 -> 168 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_crystal.pngbin0 -> 330 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_emerald.pngbin0 -> 330 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_emerald_ore.pngbin0 -> 329 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_gem.pngbin0 -> 248 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_mese.pngbin0 -> 330 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_obsidian.pngbin0 -> 162 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_obsidian2.pngbin0 -> 245 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_obsidian_brick.pngbin0 -> 2988 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_obsidian_brick_2.pngbin0 -> 3058 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_obsidian_glass.pngbin0 -> 2913 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_ore.pngbin0 -> 345 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_ruby.pngbin0 -> 330 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_ruby_ore.pngbin0 -> 329 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_worm.pngbin0 -> 406 bytes
-rw-r--r--caverealms_lite/textures/caverealms_glow_worm_green.pngbin0 -> 351 bytes
-rw-r--r--caverealms_lite/textures/caverealms_hot_cobble.pngbin0 -> 431 bytes
-rw-r--r--caverealms_lite/textures/caverealms_icicle_down.pngbin0 -> 161 bytes
-rw-r--r--caverealms_lite/textures/caverealms_icicle_up.pngbin0 -> 158 bytes
-rw-r--r--caverealms_lite/textures/caverealms_lichen.pngbin0 -> 925 bytes
-rw-r--r--caverealms_lite/textures/caverealms_lichen_side.pngbin0 -> 437 bytes
-rw-r--r--caverealms_lite/textures/caverealms_moss.pngbin0 -> 754 bytes
-rw-r--r--caverealms_lite/textures/caverealms_moss_side.pngbin0 -> 457 bytes
-rw-r--r--caverealms_lite/textures/caverealms_mushroom_cap.pngbin0 -> 172 bytes
-rw-r--r--caverealms_lite/textures/caverealms_mushroom_gills.pngbin0 -> 141 bytes
-rw-r--r--caverealms_lite/textures/caverealms_mushroom_sapling.pngbin0 -> 3700 bytes
-rw-r--r--caverealms_lite/textures/caverealms_mushroom_stem.pngbin0 -> 402 bytes
-rw-r--r--caverealms_lite/textures/caverealms_mycena.pngbin0 -> 240 bytes
-rw-r--r--caverealms_lite/textures/caverealms_salt_crystal.pngbin0 -> 402 bytes
-rw-r--r--caverealms_lite/textures/caverealms_salt_gem.pngbin0 -> 243 bytes
-rw-r--r--caverealms_lite/textures/caverealms_salty2.pngbin0 -> 330 bytes
-rw-r--r--caverealms_lite/textures/caverealms_spike.pngbin0 -> 248 bytes
-rw-r--r--caverealms_lite/textures/caverealms_stone_eyes.pngbin0 -> 662 bytes
-rw-r--r--caverealms_lite/textures/caverealms_thin_ice.pngbin0 -> 679 bytes
-rw-r--r--caverealms_lite/textures/fire_basic_flame.pngbin0 -> 719 bytes
-rw-r--r--caverealms_lite/textures/fire_basic_flame_animated.pngbin0 -> 1216 bytes
63 files changed, 1754 insertions, 0 deletions
diff --git a/caverealms_lite/LICENSE.txt b/caverealms_lite/LICENSE.txt
new file mode 100644
index 0000000..6e9767f
--- /dev/null
+++ b/caverealms_lite/LICENSE.txt
@@ -0,0 +1,26 @@
+Copyright (c) 2017, Craig Robbins and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of the FreeBSD Project.
diff --git a/caverealms_lite/README.md b/caverealms_lite/README.md
new file mode 100644
index 0000000..4ab76b8
--- /dev/null
+++ b/caverealms_lite/README.md
@@ -0,0 +1,31 @@
+# caverealms-lite
+
+Based on the original minetest-caverealms mod (https://github.com/HeroOfTheWinds/minetest-caverealms/).
+
+Adds underground realms to minetest.
+
+This caverealms fork provides all the biomes and decorations from the original caverealms, with several additions and without the overhead of generating caves. This lowers the server resources the mod requires, for example CPU and RAM. This also removes the large lava spills created by the original caverealms.
+
+It is specifically written to work with the mgvalleys mapgen, but will work using other mapgens as well. The mapgen used will determine the shape and size of individual caves. Mapgens that generate only smaller caves may be less suitable for use with this fork than mgvalleys.
+
+Note: For worlds where the original caverealms is already in use, this fork is not advised as a replacement. If used in this way, some unknown nodes and other minor issues should be expected.
+
+
+## License and Contributors
+
+Source code: FreeBSD License (Simplified)
+The original caverealms was licensed as WTFPL.
+
+Contributors:
+- Zeno, Shara RedCat - This rewrite
+- HeroOfTheWinds, Zeno - Original mod
+
+
+## Recommended Additions
+
+- VanessaE's HDX texturepacks provide alternative textures. For example,
+https://gitlab.com/VanessaE/hdx-128.
+- ethereal mod unlocks additional content (https://notabug.org/tenplus1/ethereal).
+- mobs_monster mod allows Dungeon Masters to spawn in the Dungeon Master's Lair biome (https://notabug.org/tenplus1/mobs_monster).
+- mobs_redo is required to run mobs_monster (https://notabug.org/tenplus1/mobs_redo).
+- abritorch adds coloured torches made with caverealms items (https://github.com/Ezhh/abritorch).
diff --git a/caverealms_lite/config.lua b/caverealms_lite/config.lua
new file mode 100644
index 0000000..a4c9a0f
--- /dev/null
+++ b/caverealms_lite/config.lua
@@ -0,0 +1,53 @@
+local CONFIG_FILE_PREFIX = "caverealms."
+
+caverealms.config = {}
+
+-- This function based on kaeza/minetest-irc/config.lua and used under the
+-- terms of BSD 2-clause license.
+local function setting(stype, name, default)
+ local value
+ if stype == "bool" then
+ value = minetest.setting_getbool(CONFIG_FILE_PREFIX..name)
+ elseif stype == "string" then
+ value = minetest.setting_get(CONFIG_FILE_PREFIX..name)
+ elseif stype == "number" then
+ value = tonumber(minetest.setting_get(CONFIG_FILE_PREFIX..name))
+ end
+ if value == nil then
+ value = default
+ end
+ caverealms.config[name] = value
+end
+
+--generation settings
+setting("number", "ymin", -33000) --bottom realm limit
+setting("number", "ymax", -1500) --top realm limit
+setting("number", "tcave", 0.75) --cave threshold
+
+--decoration chances
+setting("number", "stagcha", 0.003) --chance of stalagmites
+setting("number", "stalcha", 0.003) --chance of stalactites
+
+setting("number", "h_lag", 8) --max height for stalagmites
+setting("number", "h_lac", 8) --...stalactites
+setting("number", "crystal", 0.0002) --chance of glow crystal formations
+setting("number", "h_cry", 8) --max height of glow crystals
+setting("number", "h_clac", 8) --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.015) --chance of glow worms
+setting("number", "giantcha", 0.001) --chance of giant mushrooms
+setting("number", "icicha", 0.035) --chance of icicles
+setting("number", "flacha", 0.04) --chance of constant flames
+
+--realm limits for Dungeon Masters' Lair
+setting("number", "dm_top", -14000) --upper limit
+setting("number", "dm_bot", -16000) --lower limit
+
+--should DMs spawn in DM Lair?
+setting("bool", "dm_spawn", true)
+
+--Deep cave settings
+setting("number", "deep_cave", -7000) -- upper limit
diff --git a/caverealms_lite/crafting.lua b/caverealms_lite/crafting.lua
new file mode 100644
index 0000000..52da277
--- /dev/null
+++ b/caverealms_lite/crafting.lua
@@ -0,0 +1,145 @@
+--thin ice to water
+minetest.register_craft({
+ output = "default:water_source",
+ type = "shapeless",
+ recipe = {"caverealms:thin_ice"}
+})
+
+--use for coal dust
+minetest.register_craft({
+ output = "default:coalblock",
+ recipe = {
+ {"caverealms:coal_dust","caverealms:coal_dust","caverealms:coal_dust"},
+ {"caverealms:coal_dust","caverealms:coal_dust","caverealms:coal_dust"},
+ {"caverealms:coal_dust","caverealms:coal_dust","caverealms:coal_dust"}
+ }
+})
+
+-- DM statue
+minetest.register_craft({
+ output = "caverealms:dm_statue",
+ recipe = {
+ {"caverealms:glow_ore","caverealms:hot_cobble","caverealms:glow_ore"},
+ {"caverealms:hot_cobble","caverealms:hot_cobble","caverealms:hot_cobble"},
+ {"caverealms:hot_cobble","caverealms:hot_cobble","caverealms:hot_cobble"}
+ }
+})
+
+-- Glow obsidian brick
+minetest.register_craft({
+ output = "caverealms:glow_obsidian_brick 4",
+ recipe = {
+ {"caverealms:glow_obsidian", "caverealms:glow_obsidian"},
+ {"caverealms:glow_obsidian", "caverealms:glow_obsidian"}
+ }
+})
+
+minetest.register_craft({
+ output = "caverealms:glow_obsidian_brick_2 4",
+ recipe = {
+ {"caverealms:glow_obsidian_2", "caverealms:glow_obsidian_2"},
+ {"caverealms:glow_obsidian_2", "caverealms:glow_obsidian_2"}
+ }
+})
+
+-- Glow obsidian glass
+minetest.register_craft({
+ output = "caverealms:glow_obsidian_glass 5",
+ recipe = {
+ {"default:glass", "default:glass", "default:glass"},
+ {"default:glass", "default:glass", "caverealms:glow_obsidian"}
+ }
+})
+
+minetest.register_craft({
+ output = "caverealms:glow_obsidian_glass 5",
+ recipe = {
+ {"default:glass", "default:glass", "default:glass"},
+ {"default:glass", "default:glass", "caverealms:glow_obsidian_2"}
+ }
+})
+
+-- Requires ethereal:fish_raw
+if minetest.get_modpath("ethereal") then
+
+ -- Professional Fishing Rod
+ minetest.register_craftitem("caverealms:angler_rod", {
+ description = "Pro Fishing Rod",
+ inventory_image = "caverealms_angler_rod.png",
+ wield_image = "caverealms_angler_rod.png"
+ })
+
+ minetest.register_craft({
+ output = "caverealms:angler_rod",
+ recipe = {
+ {"","","default:steel_ingot"},
+ {"", "default:steel_ingot", "caverealms:mushroom_gills"},
+ {"default:steel_ingot", "", "caverealms:mushroom_gills"},
+ }
+ })
+
+ -- Glow Bait
+ minetest.register_craftitem("caverealms:glow_bait", {
+ description = "Glow Bait",
+ inventory_image = "caverealms_glow_bait.png",
+ wield_image = "caverealms_glow_bait.png",
+ })
+
+ minetest.register_craft({
+ output = "caverealms:glow_bait 9",
+ recipe = {
+ {"caverealms:glow_worm_green"},
+ }
+ })
+
+ -- default ethereal fish
+ local fish = {
+ {"ethereal:fish_raw"},
+ }
+
+ -- Pro Fishing Rod (Baited)
+ minetest.register_craftitem("caverealms:angler_rod_baited", {
+ description = "Baited Pro Fishing Rod",
+ inventory_image = "caverealms_angler_rod_baited.png",
+ wield_image = "caverealms_angler_rod_weild.png",
+ stack_max = 1,
+ liquids_pointable = true,
+
+ on_use = function (itemstack, user, pointed_thing)
+
+ if pointed_thing.type ~= "node" then
+ return
+ end
+
+ local node = minetest.get_node(pointed_thing.under).name
+
+ if (node == "default:water_source"
+ or node == "default:river_water_source")
+ and math.random(1, 100) < 35 then
+
+ local type = fish[math.random(1, #fish)][1]
+ local inv = user:get_inventory()
+
+ if inv:room_for_item("main", {name = type}) then
+
+ inv:add_item("main", {name = type})
+
+ if (math.random() < 0.6) then
+ return ItemStack("caverealms:angler_rod_baited")
+ else
+ return ItemStack("caverealms:angler_rod")
+ end
+ else
+ minetest.chat_send_player(user:get_player_name(),
+ "Inventory full, Fish Got Away!")
+ end
+ end
+ end,
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "caverealms:angler_rod_baited",
+ recipe = {"caverealms:angler_rod", "caverealms:glow_bait"},
+ })
+end
diff --git a/caverealms_lite/depends.txt b/caverealms_lite/depends.txt
new file mode 100644
index 0000000..3ad2748
--- /dev/null
+++ b/caverealms_lite/depends.txt
@@ -0,0 +1,4 @@
+default
+stairs
+ethereal?
+mobs? \ No newline at end of file
diff --git a/caverealms_lite/description.txt b/caverealms_lite/description.txt
new file mode 100644
index 0000000..2358750
--- /dev/null
+++ b/caverealms_lite/description.txt
@@ -0,0 +1 @@
+A mod for Minetest to add underground realms.
diff --git a/caverealms_lite/docs/caverealms_lite_biomes.txt b/caverealms_lite/docs/caverealms_lite_biomes.txt
new file mode 100644
index 0000000..d1591ee
--- /dev/null
+++ b/caverealms_lite/docs/caverealms_lite_biomes.txt
@@ -0,0 +1,19 @@
+Biome #, Biome name, "floor node"
+
+
+0, None
+1, Moss, "caverealms:stone_with_moss"
+2, Fungal, "caverealms:stone_with_lichen"
+3, Algae, "caverealms:stone_with_algae"
+4, Glaciated, "caverealms:thin_ice"
+
+The following are "deep realms"
+
+5, Deep Glaciated, "default:ice"
+6, DM, "caverealms:hot_cobble"
+7, Salt Crystal, "caverealms:stone_with_salt"
+8, Glow Obsidian, "caverealms:glow_obsidian"
+ OR "caverealms:glow_obsidian2"
+9, Coal, "default:coalblock"
+ OR "caverealms:coal_dust"
+ OR "default:desert_sand"
diff --git a/caverealms_lite/dungeon_master.lua b/caverealms_lite/dungeon_master.lua
new file mode 100644
index 0000000..e93ea8c
--- /dev/null
+++ b/caverealms_lite/dungeon_master.lua
@@ -0,0 +1,16 @@
+mobs:spawn({
+ name = "mobs_monster:dungeon_master",
+ nodes = {"caverealms:hot_cobble"},
+ max_light = 12,
+ min_light = 0,
+ chance = 7000,
+ active_object_count = 2,
+ max_height = -8000,
+ on_spawn = function(self, pos)
+ self.hp_max = 70
+ self.health = 70
+ self.damage = 5
+ self.shoot_interval = 1.5
+ self.dogshoot_switch = 0
+ end
+})
diff --git a/caverealms_lite/functions.lua b/caverealms_lite/functions.lua
new file mode 100644
index 0000000..2be9e10
--- /dev/null
+++ b/caverealms_lite/functions.lua
@@ -0,0 +1,409 @@
+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
+
+function caverealms:above_solid(x,y,z,area,data)
+ local c_air = minetest.get_content_id("air")
+
+ local ai = area:index(x,y+1,z-3)
+ if data[ai] == c_air then
+ return false
+ else
+ return true
+ end
+end
+
+function caverealms:below_solid(x,y,z,area,data)
+ local c_air = minetest.get_content_id("air")
+
+ local ai = area:index(x,y-1,z-3)
+ if data[ai] == c_air then
+ return false
+ else
+ return true
+ end
+end
+
+--stalagmite spawner
+function caverealms:stalagmite(x,y,z, area, data)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --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)
+
+ if not caverealms:above_solid(x,y,z,area,data) then
+ return
+ end
+
+ --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)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --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_ruby = minetest.get_content_id("caverealms:glow_ruby")
+ local c_rubore = minetest.get_content_id("caverealms:glow_ruby_ore")
+ local c_ameth = minetest.get_content_id("caverealms:glow_amethyst")
+ local c_amethore = minetest.get_content_id("caverealms:glow_amethyst_ore")
+ 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 stalids = {
+ { {c_crystore, c_crystal}, {c_emore, c_emerald} },
+ { {c_emore, c_emerald}, {c_crystore, c_crystal} },
+ { {c_emore, c_emerald}, {c_meseore, c_mesecry} },
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}},
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}},
+ { {c_rubore, c_ruby}, {c_meseore, c_mesecry}},
+ { {c_crystore, c_crystal}, {c_rubore, c_ruby} },
+ { {c_rubore, c_ruby}, {c_emore, c_emerald}},
+ { {c_amethore, c_ameth}, {c_meseore, c_mesecry} },
+ }
+
+ local nid_a
+ local nid_b
+ local nid_s = c_stone --stone base, will be rewritten to ice in certain biomes
+
+ if biome > 3 and biome < 6 then
+ if mode == 1 then
+ nid_a = c_ice
+ nid_b = c_thinice
+ nid_s = c_ice
+ else
+ nid_a = c_crystore
+ nid_b = c_crystal
+ end
+ elseif mode == 1 then
+ nid_a = stalids[biome][1][1]
+ nid_b = stalids[biome][1][2]
+ else
+ nid_a = stalids[biome][2][1]
+ nid_b = stalids[biome][2][2]
+ 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
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_s
+ 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] = nid_a
+ 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] = nid_b
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = nid_b
+ end
+ end
+ end
+ end
+end
+
+--crystal stalactite spawner
+function caverealms:crystal_stalactite(x,y,z, area, data, biome)
+
+ if not caverealms:above_solid(x,y,z,area,data) then
+ return
+ end
+
+ --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_ruby = minetest.get_content_id("caverealms:glow_ruby")
+ local c_rubore = minetest.get_content_id("caverealms:glow_ruby_ore")
+ local c_ameth = minetest.get_content_id("caverealms:glow_amethyst")
+ local c_amethore = minetest.get_content_id("caverealms:glow_amethyst_ore")
+ 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 stalids = {
+ { {c_crystore, c_crystal}, {c_emore, c_emerald} },
+ { {c_emore, c_emerald}, {c_crystore, c_crystal} },
+ { {c_emore, c_emerald}, {c_meseore, c_mesecry} },
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}},
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}},
+ { {c_rubore, c_ruby}, {c_meseore, c_mesecry}},
+ { {c_crystore, c_crystal}, {c_rubore, c_ruby} },
+ { {c_rubore, c_ruby}, {c_emore, c_emerald}},
+ { {c_amethore, c_ameth}, {c_meseore, c_mesecry} },
+ }
+
+ local nid_a
+ local nid_b
+ local nid_s = c_stone --stone base, will be rewritten to ice in certain biomes
+
+ if biome > 3 and biome < 6 then
+ if mode == 1 then
+ nid_a = c_ice
+ nid_b = c_thinice
+ nid_s = c_ice
+ else
+ nid_a = c_crystore
+ nid_b = c_crystal
+ end
+ elseif mode == 1 then
+ nid_a = stalids[biome][1][1]
+ nid_b = stalids[biome][1][2]
+ else
+ nid_a = stalids[biome][2][1]
+ nid_b = stalids[biome][2][2]
+ 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
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_s
+ 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] = nid_a
+ 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] = nid_b
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = nid_b
+ end
+ end
+ end
+ end
+end
+
+--glowing crystal stalagmite spawner
+function caverealms:salt_stalagmite(x,y,z, area, data, biome)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --contest ids
+ local c_stone = minetest.get_content_id("default:stone")
+ local c_salt = minetest.get_content_id("caverealms:salt_crystal")
+
+ local scale = math.random(2, 4)
+ if scale == 2 then
+ for j = -3, 3 do
+ for k = -3, 3 do
+ local vi = area:index(x+j, y, z+k)
+ data[vi] = c_stone
+ if math.abs(j) ~= 3 and math.abs(k) ~= 3 then
+ local vi = area:index(x+j, y+1, z+k)
+ data[vi] = c_stone
+ end
+ end
+ end
+ else
+ for j = -4, 4 do
+ for k = -4, 4 do
+ local vi = area:index(x+j, y, z+k)
+ data[vi] = c_stone
+ if math.abs(j) ~= 4 and math.abs(k) ~= 4 then
+ local vi = area:index(x+j, y+1, z+k)
+ data[vi] = c_stone
+ end
+ end
+ end
+ end
+ for j = 2, scale + 2 do --y
+ for k = -2, scale - 2 do
+ for l = -2, scale - 2 do
+ local vi = area:index(x+k, y+j, z+l)
+ data[vi] = c_salt -- make cube
+ end
+ end
+ end
+end
+
+--function to create giant 'shrooms
+function caverealms:giant_shroom(x, y, z, area, data)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ local c_cap
+ local c_stem
+
+ --as usual, grab the content ID's
+ if minetest.get_modpath("ethereal") then
+ c_stem = minetest.get_content_id("ethereal:mushroom_trunk")
+ c_cap = minetest.get_content_id("ethereal:mushroom")
+ else
+ c_stem = minetest.get_content_id("caverealms:mushroom_stem")
+ c_cap = minetest.get_content_id("caverealms:mushroom_cap")
+ end
+
+ 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
diff --git a/caverealms_lite/init.lua b/caverealms_lite/init.lua
new file mode 100644
index 0000000..5cc8a2c
--- /dev/null
+++ b/caverealms_lite/init.lua
@@ -0,0 +1,333 @@
+caverealms = {} --create a container for functions and constants
+
+--grab a shorthand for the filepath of the mod
+local modpath = minetest.get_modpath(minetest.get_current_modname())
+
+--load companion lua files
+dofile(modpath.."/config.lua") --configuration file; holds various constants
+dofile(modpath.."/crafting.lua") --crafting recipes
+dofile(modpath.."/nodes.lua") --node definitions
+dofile(modpath.."/functions.lua") --function definitions
+dofile(modpath.."/plants.lua")
+
+if minetest.get_modpath("mobs_monster") then
+ if caverealms.config.dm_spawn == true then
+ dofile(modpath.."/dungeon_master.lua") --special DMs for DM's Lair biome
+ end
+end
+
+-- Parameters
+
+local YMIN = caverealms.config.ymin -- Approximate realm limits.
+local YMAX = caverealms.config.ymax
+local TCAVE = caverealms.config.tcave --0.5 -- Cave threshold. 1 = small rare caves, 0.5 = 1/3rd ground volume, 0 = 1/2 ground volume
+local BLEND = 128 -- Cave blend distance near YMIN, YMAX
+
+local STAGCHA = caverealms.config.stagcha --0.002 --chance of stalagmites
+local STALCHA = caverealms.config.stalcha --0.003 --chance of stalactites
+local CRYSTAL = caverealms.config.crystal --0.007 --chance of glow crystal formations
+local GEMCHA = caverealms.config.gemcha --0.03 --chance of small glow gems
+local MUSHCHA = caverealms.config.mushcha --0.04 --chance of mushrooms
+local MYCCHA = caverealms.config.myccha --0.03 --chance of mycena mushrooms
+local WORMCHA = caverealms.config.wormcha --0.03 --chance of glow worms
+local GIANTCHA = caverealms.config.giantcha --0.001 -- chance of giant mushrooms
+local ICICHA = caverealms.config.icicha --0.035 -- chance of icicles
+local FLACHA = caverealms.config.flacha --0.04 --chance of constant flames
+
+local DM_TOP = caverealms.config.dm_top -- -4000 --level at which Dungeon Master Realms start to appear
+local DM_BOT = caverealms.config.dm_bot -- -5000 --level at which "" ends
+local DEEP_CAVE = caverealms.config.deep_cave -- -7000 --level at which deep cave biomes take over
+
+-- 2D noise for biome
+
+local np_biome = {
+ offset = 0,
+ scale = 1,
+ spread = {x=200, y=200, z=200},
+ seed = 9130,
+ octaves = 3,
+ persist = 0.5
+}
+
+-- Stuff
+
+subterrain = {}
+
+
+-- On generated function
+
+minetest.register_on_generated(function(minp, maxp, seed)
+ --if out of range of caverealms limits
+ if minp.y > YMAX or maxp.y < YMIN then
+ return --quit; otherwise, you'd have stalagmites all over the place
+ end
+
+ --easy reference to commonly used values
+ local t1 = os.clock()
+ local x1 = maxp.x
+ local y1 = maxp.y
+ local z1 = maxp.z
+ local x0 = minp.x
+ local y0 = minp.y
+ local z0 = minp.z
+
+ --print ("[caverealms] chunk minp ("..x0.." "..y0.." "..z0..")") --tell people you are generating a chunk
+
+ local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
+ local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
+ local data = vm:get_data()
+
+ --grab content IDs
+ local c_air = minetest.get_content_id("air")
+ local c_stone = minetest.get_content_id("default:stone")
+
+ local c_water = minetest.get_content_id("default:water_source")
+ local c_lava = minetest.get_content_id("default:lava_source")
+ local c_ice = minetest.get_content_id("default:ice")
+ local c_thinice = minetest.get_content_id("caverealms:thin_ice")
+ local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
+ local c_gem = minetest.get_content_id("caverealms:glow_gem")
+ local c_saltgem = minetest.get_content_id("caverealms:salt_gem")
+ local c_spike = minetest.get_content_id("caverealms:spike")
+ local c_moss = minetest.get_content_id("caverealms:stone_with_moss")
+ local c_lichen = minetest.get_content_id("caverealms:stone_with_lichen")
+ local c_algae = minetest.get_content_id("caverealms:stone_with_algae")
+ local c_salt = minetest.get_content_id("caverealms:stone_with_salt")
+ local c_hcobble = minetest.get_content_id("caverealms:hot_cobble")
+ local c_gobsidian = minetest.get_content_id("caverealms:glow_obsidian")
+ local c_gobsidian2 = minetest.get_content_id("caverealms:glow_obsidian_2")
+ local c_coalblock = minetest.get_content_id("default:coalblock")
+ local c_desand = minetest.get_content_id("default:desert_sand")
+ local c_coaldust = minetest.get_content_id("caverealms:coal_dust")
+ local c_fungus = minetest.get_content_id("caverealms:fungus")
+ local c_mycena = minetest.get_content_id("caverealms:mycena")
+ local c_worm = minetest.get_content_id("caverealms:glow_worm")
+ local c_worm_green = minetest.get_content_id("caverealms:glow_worm_green")
+ local c_fire_vine = minetest.get_content_id("caverealms:fire_vine")
+ local c_iciu = minetest.get_content_id("caverealms:icicle_up")
+ local c_icid = minetest.get_content_id("caverealms:icicle_down")
+ local c_flame = minetest.get_content_id("caverealms:constant_flame")
+
+ --mandatory values
+ local sidelen = x1 - x0 + 1 --length of a mapblock
+ local chulens = {x=sidelen, y=sidelen, z=sidelen} --table of chunk edges
+ local chulens2D = {x=sidelen, y=sidelen, z=1}
+ local minposxyz = {x=x0, y=y0, z=z0} --bottom corner
+ local minposxz = {x=x0, y=z0} --2D bottom corner
+
+ local nvals_biome = minetest.get_perlin_map(np_biome, chulens2D):get2dMap_flat({x=x0+150, y=z0+50}) --2D noise for biomes (will be 3D humidity/temp later)
+
+ local nixyz = 1 --3D node index
+ local nixz = 1 --2D node index
+ local nixyz2 = 1 --second 3D index for second loop
+
+
+ for z = z0, z1 do -- for each xy plane progressing northwards
+ --increment indices
+ nixyz = nixyz + 1
+
+
+ --decoration loop
+ for y = y0, y1 do -- for each x row progressing upwards
+
+ local c_selected_worm = c_worm
+
+ local is_deep = false
+ if y < DEEP_CAVE then
+ is_deep = true
+ end
+
+
+ local vi = area:index(x0, y, z)
+ for x = x0, x1 do -- for each node do
+
+ --determine biome
+ local biome = 0 --preliminary declaration
+ local n_biome = nvals_biome[nixz] --make an easier reference to the noise
+
+ --compare noise values to determine a biome
+ if n_biome <= -0.5 then
+ if is_deep and n_biome <= -0.25 then
+ biome = 8 --glow obsidian
+ else
+ biome = 2 --fungal
+ c_selected_worm = c_worm_green
+ end
+
+ elseif n_biome < 0 then
+ biome = 0 -- none
+
+ elseif n_biome < 0.5 then
+ if is_deep and n_biome <= 0.25 then
+ biome = 7 --salt crystal
+ else
+ biome = 1 --moss
+ end
+
+ elseif n_biome < 0.65 then
+ biome = 0
+
+ elseif n_biome < 0.85 then
+ if is_deep and n_biome <= 0.75 then
+ biome = 9 --coal dust
+ else
+ biome = 3 --algae
+ c_selected_worm = c_worm_green
+ end
+
+ else
+ if is_deep and n_biome <= .95 then
+ biome = 5 --deep glaciated
+ else
+ biome = 4 --glaciated
+ end
+ end
+
+ --print(biome)
+
+ if biome > 0 then
+ if y <= DM_TOP and y >= DM_BOT then
+ biome = 6 --DUNGEON MASTER'S LAIR
+ c_selected_worm = c_fire_vine
+ end
+
+ --ceiling
+ local ai = area:index(x,y+1,z) --above index
+ if data[ai] == c_stone and data[vi] == c_air then --ceiling
+ if math.random() < ICICHA and (biome == 4 or biome == 5) then
+ data[vi] = c_icid
+ end
+ if math.random() < WORMCHA then
+ data[vi] = c_selected_worm
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_selected_worm
+ if math.random(2) == 1 then
+ local bbi = area:index(x,y-2,z)
+ data[bbi] = c_selected_worm
+ if math.random(2) ==1 then
+ local bbbi = area:index(x,y-3,z)
+ data[bbbi] = c_selected_worm
+ end
+ end
+ end
+ if math.random() < STALCHA then
+ caverealms:stalactite(x,y,z, area, data)
+ end
+ if math.random() < CRYSTAL then
+ caverealms:crystal_stalactite(x,y,z, area, data, biome)
+ end
+ end
+ --ground
+ local bi = area:index(x,y-1,z) --below index
+ if data[bi] == c_stone and data[vi] == c_air then --ground
+ local ai = area:index(x,y+1,z)
+ --place floor material, add plants/decorations
+ if biome == 1 then
+ data[vi] = c_moss
+ if math.random() < GEMCHA then
+ data[ai] = c_gem
+ end
+ elseif biome == 2 then
+ data[vi] = c_lichen
+ if math.random() < MUSHCHA then --mushrooms
+ data[ai] = c_fungus
+ end
+ if math.random() < MYCCHA then --mycena mushrooms
+ data[ai] = c_mycena
+ end
+ if math.random() < GIANTCHA then --giant mushrooms
+ caverealms:giant_shroom(x, y, z, area, data)
+ end
+ elseif biome == 3 then
+ data[vi] = c_algae
+ elseif biome == 4 then
+ data[vi] = c_thinice
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_thinice
+ if math.random() < ICICHA then --if glaciated, place icicles
+ data[ai] = c_iciu
+ end
+ elseif biome == 5 then
+ data[vi] = c_ice
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_ice
+ if math.random() < ICICHA then --if glaciated, place icicles
+ data[ai] = c_iciu
+ end
+ elseif biome == 6 then
+ data[vi] = c_hcobble
+ if math.random() < FLACHA then --neverending flames
+ data[ai] = c_flame
+ end
+ elseif biome == 7 then
+ local bi = area:index(x,y-1,z)
+ data[vi] = c_salt
+ data[bi] = c_salt
+ if math.random() < GEMCHA then
+ data[ai] = c_saltgem
+ end
+ if math.random() < STAGCHA then
+ caverealms:salt_stalagmite(x,y,z, area, data)
+ end
+ elseif biome == 8 then
+ local bi = area:index(x,y-1,z)
+ if math.random() < 0.5 then
+ data[vi] = c_gobsidian
+ data[bi] = c_gobsidian
+ else
+ data[vi] = c_gobsidian2
+ data[bi] = c_gobsidian2
+ end
+ if math.random() < FLACHA then --neverending flames
+ data[ai] = c_flame
+ end
+ elseif biome == 9 then
+ local bi = area:index(x,y-1,z)
+ if math.random() < 0.05 then
+ data[vi] = c_coalblock
+ data[bi] = c_coalblock
+ elseif math.random() < 0.15 then
+ data[vi] = c_coaldust
+ data[bi] = c_coaldust
+ else
+ data[vi] = c_desand
+ data[bi] = c_desand
+ end
+ if math.random() < FLACHA * 0.75 then --neverending flames
+ data[ai] = c_flame
+ end
+ if math.random() < GEMCHA then
+ data[ai] = c_spike
+ end
+ end
+
+ if math.random() < STAGCHA then
+ caverealms:stalagmite(x,y,z, area, data)
+ end
+ if math.random() < CRYSTAL then
+ caverealms:crystal_stalagmite(x,y,z, area, data, biome)
+ end
+ end
+
+ end
+ nixyz2 = nixyz2 + 1
+ nixz = nixz + 1
+ vi = vi + 1
+ end
+ nixz = nixz - sidelen --shift the 2D index back
+ end
+ nixz = nixz + sidelen --shift the 2D index up a layer
+ end
+
+ --send data back to voxelmanip
+ vm:set_data(data)
+ --calc lighting
+ vm:set_lighting({day=0, night=0})
+ vm:calc_lighting()
+ --write it to world
+ vm:write_to_map(data)
+
+ --local chugent = math.ceil((os.clock() - t1) * 1000) --grab how long it took
+ --print ("[caverealms] "..chugent.." ms") --tell people how long
+end)
+print("[caverealms] loaded!")
diff --git a/caverealms_lite/mod.conf b/caverealms_lite/mod.conf
new file mode 100644
index 0000000..1f32f70
--- /dev/null
+++ b/caverealms_lite/mod.conf
@@ -0,0 +1 @@
+name = caverealms \ No newline at end of file
diff --git a/caverealms_lite/nodes.lua b/caverealms_lite/nodes.lua
new file mode 100644
index 0000000..1a82de3
--- /dev/null
+++ b/caverealms_lite/nodes.lua
@@ -0,0 +1,528 @@
+--glowing crystal
+minetest.register_node("caverealms:glow_crystal", {
+ description = "Glow Sapphire",
+ 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 = "Glow Mese Crystal",
+ 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,
+})
+
+--glowing ruby
+minetest.register_node("caverealms:glow_ruby", {
+ description = "Glow Ruby",
+ tiles = {"caverealms_glow_ruby.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 amethyst
+minetest.register_node("caverealms:glow_amethyst", {
+ description = "Glow Amethyst",
+ tiles = {"caverealms_glow_amethyst.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",
+})
+
+--embedded ruby
+minetest.register_node("caverealms:glow_ruby_ore", {
+ description = "Glow Ruby Ore",
+ tiles = {"caverealms_glow_ruby_ore.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 10,
+ paramtype = "light",
+})
+
+--embedded amethyst
+minetest.register_node("caverealms:glow_amethyst_ore", {
+ description = "Glow Amethyst Ore",
+ tiles = {"caverealms_glow_amethyst_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",
+ paramtype = "light",
+})
+
+--salt crystal
+minetest.register_node("caverealms:salt_crystal", {
+ description = "Salt Crystal",
+ tiles = {"caverealms_salt_crystal.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 11,
+ paramtype = "light",
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+})
+
+--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, attached_node = 1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 11,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 0.75,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ }
+})
+
+--glowing salt gem
+minetest.register_node("caverealms:salt_gem", {
+ description = "Salt Gem",
+ tiles = {"caverealms_salt_gem.png"},
+ inventory_image = "caverealms_salt_gem.png",
+ wield_image = "caverealms_salt_gem.png",
+ is_ground_content = true,
+ groups = {cracky = 3, oddly_breakable_by_hand = 1, attached_node = 1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 11,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 0.75,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ }
+})
+
+--stone spike
+minetest.register_node("caverealms:spike", {
+ description = "Stone Spike",
+ tiles = {"caverealms_spike.png"},
+ inventory_image = "caverealms_spike.png",
+ wield_image = "caverealms_spike.png",
+ is_ground_content = true,
+ groups = {cracky = 3, oddly_breakable_by_hand = 1, attached_node = 1},
+ sounds = default.node_sound_stone_defaults(),
+ light_source = 3,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 0.75,
+ 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, -7/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, 7/16, -0.5, 0.5, 0.5, 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=1, cracky=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=1, cracky=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=1, cracky=3},
+ drop = 'default:cobble',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+--tiny-salt-crystal-covered cobble - pink-ish
+minetest.register_node("caverealms:stone_with_salt", {
+ description = "Salt Crystal",
+ tiles = {"caverealms_salty2.png"},
+ light_source = 9,
+ paramtype = "light",
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+--Hot Cobble - cobble with lava instead of mortar XD
+minetest.register_node("caverealms:hot_cobble", {
+ description = "Hot Cobble",
+ tiles = {"caverealms_hot_cobble.png"},
+ is_ground_content = true,
+ groups = {cracky=1, hot=1, unbreakable = 1},
+ damage_per_second = 1,
+ light_source = 3,
+ paramtype = "light",
+ sounds = default.node_sound_stone_defaults({
+ footstep = {name="default_stone_footstep", gain=0.25},
+ }),
+})
+
+--Glow Obsidian
+minetest.register_node("caverealms:glow_obsidian", {
+ description = "Glowing Obsidian",
+ tiles = {"caverealms_glow_obsidian.png"},
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ light_source = 7,
+ paramtype = "light",
+ sounds = default.node_sound_stone_defaults({
+ footstep = {name="default_stone_footstep", gain=0.25},
+ }),
+})
+
+--Glow Obsidian 2 - has traces of lava
+minetest.register_node("caverealms:glow_obsidian_2", {
+ description = "Hot Glowing Obsidian",
+ tiles = {"caverealms_glow_obsidian2.png"},
+ is_ground_content = true,
+ groups = {cracky=1, hot=1, level=2},
+ light_source = 9,
+ paramtype = "light",
+ sounds = default.node_sound_stone_defaults({
+ footstep = {name="default_stone_footstep", gain=0.25},
+ }),
+})
+
+--Glow Obsidian Bricks
+minetest.register_node("caverealms:glow_obsidian_brick", {
+ description = "Glow Obsidian Brick",
+ tiles = {"caverealms_glow_obsidian_brick.png"},
+ light_source = 7,
+ groups = {cracky = 1, level = 2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("caverealms:glow_obsidian_brick_2", {
+ description = "Glow Obsidian Brick",
+ tiles = {"caverealms_glow_obsidian_brick_2.png"},
+ light_source = 9,
+ groups = {cracky = 1, level = 2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+--Glow Obsidian Stairs/Slabs
+stairs.register_stair_and_slab(
+ "glow_obsidian_brick",
+ "caverealms:glow_obsidian_brick",
+ {cracky = 1, level = 2},
+ {"caverealms_glow_obsidian_brick.png"},
+ "Glow Obsidian Brick Stair",
+ "Glow Obsidian Brick Slab",
+ default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab(
+ "glow_obsidian_brick_2",
+ "caverealms:glow_obsidian_brick_2",
+ {cracky = 1, level = 2},
+ {"caverealms_glow_obsidian_brick_2.png"},
+ "Glow Obsidian Brick Stair",
+ "Glow Obsidian Brick Slab",
+ default.node_sound_stone_defaults())
+
+--Glow Obsidian Glass
+minetest.register_node("caverealms:glow_obsidian_glass", {
+ description = "Glow Obsidian Glass",
+ drawtype = "glasslike_framed_optional",
+ tiles = {"caverealms_glow_obsidian_glass.png", "default_obsidian_glass_detail.png"},
+ paramtype = "light",
+ light_source = 13,
+ sunlight_propagates = true,
+ groups = {cracky = 3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+--Coal Dust
+minetest.register_node("caverealms:coal_dust", {
+ description = "Coal Dust",
+ tiles = {"caverealms_coal_dust.png"},
+ is_ground_content = true,
+ groups = {crumbly=3, falling_node=1, sand=1},
+ sounds = default.node_sound_sand_defaults(),
+})
+
+--glow worms
+minetest.register_node("caverealms:glow_worm", {
+ description = "Blue 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 = {-1/6, -1/2, -1/6, 1/6, 1/2, 1/6},
+ },
+})
+
+minetest.register_node("caverealms:glow_worm_green", {
+ description = "Green Glow Worms",
+ tiles = {"caverealms_glow_worm_green.png"},
+ inventory_image = "caverealms_glow_worm_green.png",
+ wield_image = "caverealms_glow_worm_green.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 = {-1/6, -1/2, -1/6, 1/6, 1/2, 1/6},
+ },
+})
+
+minetest.register_node("caverealms:fire_vine", {
+ description = "Fire Vine",
+ tiles = {"caverealms_fire_vine.png"},
+ inventory_image = "caverealms_fire_vine.png",
+ wield_image = "caverealms_fire_vine.png",
+ is_ground_content = true,
+ damage_per_second = 1,
+ 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 = {-1/6, -1/2, -1/6, 1/6, 1/2, 1/6},
+ },
+})
+
+
+--define special flame so that it does not expire
+minetest.register_node("caverealms:constant_flame", {
+ description = "Fire",
+ drawtype = "plantlike",
+ tiles = {{
+ name="fire_basic_flame_animated.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},
+ }},
+ inventory_image = "fire_basic_flame.png",
+ light_source = 14,
+ groups = {igniter=2, dig_immediate=3, hot=3, not_in_creative_inventory=1},
+ paramtype = "light",
+ drop = '',
+ walkable = false,
+ buildable_to = true,
+ damage_per_second = 4,
+})
+
+--dungeon master statue (nodebox)
+minetest.register_node("caverealms:dm_statue", {
+ description = "Dungeon Master Statue",
+ tiles = {
+ "caverealms_dm_stone.png",
+ "caverealms_dm_stone.png",
+ "caverealms_dm_stone.png",
+ "caverealms_dm_stone.png",
+ "caverealms_dm_stone.png",
+ "caverealms_stone_eyes.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.5, -0.4375, 0.4375, -0.3125, 0.4375}, -- NodeBox1
+ {-0.25, -0.125, -0.1875, 0.25, 0.5, 0.1875}, -- NodeBox2
+ {-0.375, 0, -0.125, -0.25, 0.4375, 0.125}, -- NodeBox3
+ {0.25, 0.125, -0.4375, 0.375, 0.375, 0.1875}, -- NodeBox4
+ {-0.25, -0.5, -0.125, -0.125, -0.125, 0.125}, -- NodeBox5
+ {0.125, -0.3125, -0.125, 0.25, 0, 0.125}, -- NodeBox6
+ }
+ },
+ selection_box = {
+ type = "regular"
+ }
+})
+
+
+-- Compatibility
+minetest.register_alias("caverealms:hanging_thin_ice", "caverealms:thin_ice")
+
+minetest.register_alias("caverealms:spike_2", "caverealms:spike")
+minetest.register_alias("caverealms:spike_3", "caverealms:spike")
+minetest.register_alias("caverealms:spike_4", "caverealms:spike")
+minetest.register_alias("caverealms:spike_5", "caverealms:spike")
+
+minetest.register_alias("caverealms:salt_gem_2", "caverealms:salt_gem")
+minetest.register_alias("caverealms:salt_gem_3", "caverealms:salt_gem")
+minetest.register_alias("caverealms:salt_gem_4", "caverealms:salt_gem")
+minetest.register_alias("caverealms:salt_gem_5", "caverealms:salt_gem")
+
+minetest.register_alias("caverealms:glow_gem_2", "caverealms:glow_gem")
+minetest.register_alias("caverealms:glow_gem_3", "caverealms:glow_gem")
+minetest.register_alias("caverealms:glow_gem_4", "caverealms:glow_gem")
+minetest.register_alias("caverealms:glow_gem_5", "caverealms:glow_gem")
+
+minetest.register_alias("caverealms:obsidian", "default:obsidian")
+minetest.register_alias("caverealms:obsidian_1", "default:obsidian")
+minetest.register_alias("caverealms:obsidian_2", "default:obsidian")
+minetest.register_alias("caverealms:obsidian_3", "default:obsidian")
+minetest.register_alias("caverealms:obsidian_4", "default:obsidian")
diff --git a/caverealms_lite/plants.lua b/caverealms_lite/plants.lua
new file mode 100644
index 0000000..1ebeff7
--- /dev/null
+++ b/caverealms_lite/plants.lua
@@ -0,0 +1,188 @@
+-- Lichen biome
+
+-- glowing fungi
+minetest.register_node("caverealms:fungus", {
+ description = "Glowing Fungus",
+ tiles = {"caverealms_fungi.png"},
+ inventory_image = "caverealms_fungi.png",
+ wield_image = "caverealms_fungi.png",
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand = 3, attached_node = 1},
+ light_source = 5,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+-- mycena mushroom
+minetest.register_node("caverealms:mycena", {
+ description = "Mycena Mushroom",
+ tiles = {"caverealms_mycena.png"},
+ inventory_image = "caverealms_mycena.png",
+ wield_image = "caverealms_mycena.png",
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand = 3, attached_node = 1},
+ light_source = 6,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+-- giant mushroom
+if minetest.get_modpath("ethereal") then
+ minetest.register_alias("caverealms:mushroom_cap", "ethereal:mushroom")
+ minetest.register_alias("caverealms:mushroom_stem", "ethereal:mushroom_trunk")
+else
+ -- stem
+ minetest.register_node("caverealms:mushroom_stem", {
+ description = "Giant Mushroom Stem",
+ tiles = {"caverealms_mushroom_stem.png"},
+ is_ground_content = true,
+ groups = {choppy=2, oddly_breakable_by_hand=1},
+ })
+
+ -- cap
+ minetest.register_node("caverealms:mushroom_cap", {
+ description = "Giant Mushroom Cap",
+ tiles = {"caverealms_mushroom_cap.png"},
+ is_ground_content = true,
+ groups = {choppy=2, oddly_breakable_by_hand=1,},
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {"caverealms:mushroom_sapling"}, rarity = 20},
+ {items = {"caverealms:mushroom_cap"}}
+ }
+ },
+ })
+
+ -- sapling
+ minetest.register_node("caverealms:mushroom_sapling", {
+ description = "Mushroom Tree Sapling",
+ drawtype = "plantlike",
+ tiles = {"caverealms_mushroom_sapling.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = false,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
+ },
+ groups = {snappy = 2, dig_immediate = 3, flammable = 2},
+ sounds = default.node_sound_leaves_defaults(),
+ })
+end
+
+-- gills
+minetest.register_node("caverealms:mushroom_gills", {
+ description = "Giant Mushroom Gills",
+ tiles = {"caverealms_mushroom_gills.png"},
+ is_ground_content = true,
+ light_source = 10,
+ groups = {choppy=2, oddly_breakable_by_hand=1},
+ drawtype = "plantlike",
+ paramtype = "light",
+})
+
+
+-- Saplings
+
+-- grow trees
+local add_tree = function (pos, ofx, ofy, ofz, schem)
+ if not schem then
+ print ("Schematic not found")
+ return
+ end
+ minetest.swap_node(pos, {name = "air"})
+ minetest.place_schematic(
+ {x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz},
+ schem, 0, nil, false)
+end
+
+local path = minetest.get_modpath("caverealms").."/schematics/"
+
+-- giant mushrooms
+function grow_caverealms_mushroom(pos)
+ add_tree(pos, 5, 0, 5, path .. "shroom.mts")
+end
+
+-- height check
+local function enough_height(pos, height)
+ local nod = minetest.line_of_sight(
+ {x = pos.x, y = pos.y + 1, z = pos.z},
+ {x = pos.x, y = pos.y + height, z = pos.z})
+ if not nod then
+ return false
+ else
+ return true
+ end
+end
+
+minetest.register_abm({
+ label = "Caverealms grow sapling",
+ nodenames = {"ethereal:mushroom_sapling", "caverealms:mushroom_sapling"},
+ interval = 10,
+ chance = 50,
+ catch_up = false,
+ action = function(pos, node)
+ local light_level = minetest.get_node_light(pos)
+ -- check light level
+ if not light_level or light_level > 10 then
+ return
+ end
+ -- get node under sapling
+ local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name
+ -- check if registered
+ if not minetest.registered_nodes[node.name] then
+ return
+ end
+ -- ethereal sapling on lichen stone
+ if node.name == "ethereal:mushroom_sapling"
+ and under == "caverealms:stone_with_lichen"
+ and enough_height(pos, 10) then
+ grow_caverealms_mushroom(pos)
+ -- caverealms sapling on lichen stone
+ elseif node.name == "caverealms:mushroom_sapling"
+ and under == "caverealms:stone_with_lichen"
+ and enough_height(pos, 10) then
+ grow_caverealms_mushroom(pos)
+ end
+ end,
+})
+
+
+-- spread moss/lichen/algae to nearby cobblestone
+minetest.register_abm({
+ label = "Caverealms stone spread",
+ nodenames = {
+ "caverealms:stone_with_moss",
+ "caverealms:stone_with_lichen",
+ "caverealms:stone_with_algae",
+ },
+ neighbors = {"air"},
+ interval = 16,
+ chance = 50,
+ catch_up = false,
+ action = function(pos, node)
+ local num = minetest.find_nodes_in_area_under_air(
+ {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1},
+ {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1},
+ "default:cobble")
+ if #num > 0 then
+ minetest.set_node(num[math.random(#num)], {name = node.name})
+ end
+ end,
+})
diff --git a/caverealms_lite/schematics/shroom.mts b/caverealms_lite/schematics/shroom.mts
new file mode 100644
index 0000000..07e4966
--- /dev/null
+++ b/caverealms_lite/schematics/shroom.mts
Binary files differ
diff --git a/caverealms_lite/screenshot.png b/caverealms_lite/screenshot.png
new file mode 100644
index 0000000..ad44945
--- /dev/null
+++ b/caverealms_lite/screenshot.png
Binary files differ
diff --git a/caverealms_lite/textures/Thumbs.db b/caverealms_lite/textures/Thumbs.db
new file mode 100644
index 0000000..277f856
--- /dev/null
+++ b/caverealms_lite/textures/Thumbs.db
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_algae.png b/caverealms_lite/textures/caverealms_algae.png
new file mode 100644
index 0000000..1331bb0
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_algae.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_algae_side.png b/caverealms_lite/textures/caverealms_algae_side.png
new file mode 100644
index 0000000..b9bd4ed
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_algae_side.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_angler_rod.png b/caverealms_lite/textures/caverealms_angler_rod.png
new file mode 100644
index 0000000..799abec
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_angler_rod.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_angler_rod_baited.png b/caverealms_lite/textures/caverealms_angler_rod_baited.png
new file mode 100644
index 0000000..98c9f3b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_angler_rod_baited.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_angler_rod_weild.png b/caverealms_lite/textures/caverealms_angler_rod_weild.png
new file mode 100644
index 0000000..160a5ff
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_angler_rod_weild.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_coal_dust.png b/caverealms_lite/textures/caverealms_coal_dust.png
new file mode 100644
index 0000000..be6cbbb
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_coal_dust.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_dm_stone.png b/caverealms_lite/textures/caverealms_dm_stone.png
new file mode 100644
index 0000000..73e9266
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_dm_stone.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_fire_vine.png b/caverealms_lite/textures/caverealms_fire_vine.png
new file mode 100644
index 0000000..6f2c2a3
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_fire_vine.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_fungi.png b/caverealms_lite/textures/caverealms_fungi.png
new file mode 100644
index 0000000..fde8cbf
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_fungi.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_amethyst.png b/caverealms_lite/textures/caverealms_glow_amethyst.png
new file mode 100644
index 0000000..7daa61b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_amethyst.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_amethyst_ore.png b/caverealms_lite/textures/caverealms_glow_amethyst_ore.png
new file mode 100644
index 0000000..403d907
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_amethyst_ore.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_bait.png b/caverealms_lite/textures/caverealms_glow_bait.png
new file mode 100644
index 0000000..56a084b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_bait.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_crystal.png b/caverealms_lite/textures/caverealms_glow_crystal.png
new file mode 100644
index 0000000..b9be395
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_crystal.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_emerald.png b/caverealms_lite/textures/caverealms_glow_emerald.png
new file mode 100644
index 0000000..025a48b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_emerald.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_emerald_ore.png b/caverealms_lite/textures/caverealms_glow_emerald_ore.png
new file mode 100644
index 0000000..9f601aa
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_emerald_ore.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_gem.png b/caverealms_lite/textures/caverealms_glow_gem.png
new file mode 100644
index 0000000..9bf3426
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_gem.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_mese.png b/caverealms_lite/textures/caverealms_glow_mese.png
new file mode 100644
index 0000000..ed433fe
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_mese.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_obsidian.png b/caverealms_lite/textures/caverealms_glow_obsidian.png
new file mode 100644
index 0000000..a157738
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_obsidian.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_obsidian2.png b/caverealms_lite/textures/caverealms_glow_obsidian2.png
new file mode 100644
index 0000000..7d1dcf3
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_obsidian2.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_obsidian_brick.png b/caverealms_lite/textures/caverealms_glow_obsidian_brick.png
new file mode 100644
index 0000000..a5c6db8
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_obsidian_brick.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_obsidian_brick_2.png b/caverealms_lite/textures/caverealms_glow_obsidian_brick_2.png
new file mode 100644
index 0000000..da2b2e3
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_obsidian_brick_2.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_obsidian_glass.png b/caverealms_lite/textures/caverealms_glow_obsidian_glass.png
new file mode 100644
index 0000000..afd0fa7
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_obsidian_glass.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_ore.png b/caverealms_lite/textures/caverealms_glow_ore.png
new file mode 100644
index 0000000..19179a9
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_ore.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_ruby.png b/caverealms_lite/textures/caverealms_glow_ruby.png
new file mode 100644
index 0000000..59fd46b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_ruby.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_ruby_ore.png b/caverealms_lite/textures/caverealms_glow_ruby_ore.png
new file mode 100644
index 0000000..31ecb63
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_ruby_ore.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_worm.png b/caverealms_lite/textures/caverealms_glow_worm.png
new file mode 100644
index 0000000..e324fbd
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_worm.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_glow_worm_green.png b/caverealms_lite/textures/caverealms_glow_worm_green.png
new file mode 100644
index 0000000..686c277
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_glow_worm_green.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_hot_cobble.png b/caverealms_lite/textures/caverealms_hot_cobble.png
new file mode 100644
index 0000000..2e873e8
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_hot_cobble.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_icicle_down.png b/caverealms_lite/textures/caverealms_icicle_down.png
new file mode 100644
index 0000000..adcc340
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_icicle_down.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_icicle_up.png b/caverealms_lite/textures/caverealms_icicle_up.png
new file mode 100644
index 0000000..fcd5e2a
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_icicle_up.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_lichen.png b/caverealms_lite/textures/caverealms_lichen.png
new file mode 100644
index 0000000..f38fe76
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_lichen.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_lichen_side.png b/caverealms_lite/textures/caverealms_lichen_side.png
new file mode 100644
index 0000000..b036dc3
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_lichen_side.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_moss.png b/caverealms_lite/textures/caverealms_moss.png
new file mode 100644
index 0000000..fd23ec3
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_moss.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_moss_side.png b/caverealms_lite/textures/caverealms_moss_side.png
new file mode 100644
index 0000000..a16d64a
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_moss_side.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_mushroom_cap.png b/caverealms_lite/textures/caverealms_mushroom_cap.png
new file mode 100644
index 0000000..e5a1a35
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_mushroom_cap.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_mushroom_gills.png b/caverealms_lite/textures/caverealms_mushroom_gills.png
new file mode 100644
index 0000000..596de9e
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_mushroom_gills.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_mushroom_sapling.png b/caverealms_lite/textures/caverealms_mushroom_sapling.png
new file mode 100644
index 0000000..262c690
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_mushroom_sapling.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_mushroom_stem.png b/caverealms_lite/textures/caverealms_mushroom_stem.png
new file mode 100644
index 0000000..d329ef1
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_mushroom_stem.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_mycena.png b/caverealms_lite/textures/caverealms_mycena.png
new file mode 100644
index 0000000..50ea65b
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_mycena.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_salt_crystal.png b/caverealms_lite/textures/caverealms_salt_crystal.png
new file mode 100644
index 0000000..dde96fc
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_salt_crystal.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_salt_gem.png b/caverealms_lite/textures/caverealms_salt_gem.png
new file mode 100644
index 0000000..0419e2e
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_salt_gem.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_salty2.png b/caverealms_lite/textures/caverealms_salty2.png
new file mode 100644
index 0000000..7f8b521
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_salty2.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_spike.png b/caverealms_lite/textures/caverealms_spike.png
new file mode 100644
index 0000000..253c9e6
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_spike.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_stone_eyes.png b/caverealms_lite/textures/caverealms_stone_eyes.png
new file mode 100644
index 0000000..288db06
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_stone_eyes.png
Binary files differ
diff --git a/caverealms_lite/textures/caverealms_thin_ice.png b/caverealms_lite/textures/caverealms_thin_ice.png
new file mode 100644
index 0000000..b16036d
--- /dev/null
+++ b/caverealms_lite/textures/caverealms_thin_ice.png
Binary files differ
diff --git a/caverealms_lite/textures/fire_basic_flame.png b/caverealms_lite/textures/fire_basic_flame.png
new file mode 100644
index 0000000..7a126e3
--- /dev/null
+++ b/caverealms_lite/textures/fire_basic_flame.png
Binary files differ
diff --git a/caverealms_lite/textures/fire_basic_flame_animated.png b/caverealms_lite/textures/fire_basic_flame_animated.png
new file mode 100644
index 0000000..3b312e5
--- /dev/null
+++ b/caverealms_lite/textures/fire_basic_flame_animated.png
Binary files differ