From b0fc53089b78cd5e13f9d92771b1ad6b4a61832e Mon Sep 17 00:00:00 2001 From: Chris N <swordsman9613@gmail.com> Date: Tue, 16 Dec 2014 19:57:25 -1000 Subject: [PATCH] Version 0.8 - DeepRealms Add the new DeepRealms, inspired by Zeno's fork, and add the new salt crystal, obsidian, and coal dust biomes. --- config.lua | 2 + crafting.lua | 10 ++ functions.lua | 56 ++++++++ init.lua | 86 +++++++++++- nodes.lua | 155 +++++++++++++++++++++- textures/caverealms_coal_dust.png | Bin 0 -> 668 bytes textures/caverealms_glow_amethyst.png | Bin 0 -> 888 bytes textures/caverealms_glow_amethyst_ore.png | Bin 0 -> 686 bytes textures/caverealms_glow_obsidian.png | Bin 0 -> 320 bytes textures/caverealms_glow_obsidian2.png | Bin 0 -> 765 bytes textures/caverealms_salt_crystal.png | Bin 0 -> 719 bytes textures/caverealms_salt_gem.png | Bin 0 -> 497 bytes textures/caverealms_salty.png | Bin 0 -> 939 bytes textures/caverealms_salty2.png | Bin 0 -> 442 bytes textures/caverealms_salty_side.png | Bin 0 -> 517 bytes textures/caverealms_spike.png | Bin 0 -> 492 bytes 16 files changed, 307 insertions(+), 2 deletions(-) create mode 100644 textures/caverealms_coal_dust.png create mode 100644 textures/caverealms_glow_amethyst.png create mode 100644 textures/caverealms_glow_amethyst_ore.png create mode 100644 textures/caverealms_glow_obsidian.png create mode 100644 textures/caverealms_glow_obsidian2.png create mode 100644 textures/caverealms_salt_crystal.png create mode 100644 textures/caverealms_salt_gem.png create mode 100644 textures/caverealms_salty.png create mode 100644 textures/caverealms_salty2.png create mode 100644 textures/caverealms_salty_side.png create mode 100644 textures/caverealms_spike.png diff --git a/config.lua b/config.lua index e837a21..94f79dd 100644 --- a/config.lua +++ b/config.lua @@ -56,6 +56,8 @@ setting("number", "dm_bot", -5000) --lower limit --should fortresses and fountains spawn? setting("bool", "fortresses", true) setting("bool", "fountains", true) +--Deep cave settings +setting("number", "deep_cave", -7000) -- upper limit --minimum number of items in chests found in fortresses setting("number", "min_items", 2) diff --git a/crafting.lua b/crafting.lua index e78da6e..b995fab 100644 --- a/crafting.lua +++ b/crafting.lua @@ -40,4 +40,14 @@ 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"} + } }) \ No newline at end of file diff --git a/functions.lua b/functions.lua index e40de81..3b3e38f 100644 --- a/functions.lua +++ b/functions.lua @@ -119,6 +119,8 @@ function caverealms:crystal_stalagmite(x,y,z, area, data, biome) 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") @@ -147,6 +149,9 @@ function caverealms:crystal_stalagmite(x,y,z, area, data, biome) { {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 @@ -215,6 +220,8 @@ function caverealms:crystal_stalactite(x,y,z, area, data, biome) 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") @@ -243,6 +250,9 @@ function caverealms:crystal_stalactite(x,y,z, area, data, biome) { {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 @@ -294,6 +304,51 @@ function caverealms:crystal_stalactite(x,y,z, area, data, biome) 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) @@ -387,6 +442,7 @@ end -- Experimental and very geometric function to create giant octagonal crystals in a variety of random directions -- Uses calculations for points on a sphere, lines in geometric space +-- CURRENTLY USELESS, NOT LIKELY TO BE IMPLEMENTED SOON function caverealms:giant_shroom(x, y, z, area, data) --Grab content id's... diamond is a placeholder local c_crys = minetest.get_content_id("default:diamondblock") diff --git a/init.lua b/init.lua index 7852799..e1f3f9c 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,4 @@ --- caverealms v.0.4 by HeroOfTheWinds +-- caverealms v.0.8 by HeroOfTheWinds -- original cave code modified from paramat's subterrain -- For Minetest 0.4.8 stable -- Depends default @@ -47,6 +47,7 @@ local FORTCHA = caverealms.config.fortcha --0.0003 --chance of DM Fortresses 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 -- 3D noise for caves @@ -124,10 +125,26 @@ minetest.register_on_generated(function(minp, maxp, seed) local c_gem3 = minetest.get_content_id("caverealms:glow_gem_3") local c_gem4 = minetest.get_content_id("caverealms:glow_gem_4") local c_gem5 = minetest.get_content_id("caverealms:glow_gem_5") + local c_saltgem1 = minetest.get_content_id("caverealms:salt_gem") + local c_saltgem2 = minetest.get_content_id("caverealms:salt_gem_2") + local c_saltgem3 = minetest.get_content_id("caverealms:salt_gem_3") + local c_saltgem4 = minetest.get_content_id("caverealms:salt_gem_4") + local c_saltgem5 = minetest.get_content_id("caverealms:salt_gem_5") + local c_spike1 = minetest.get_content_id("caverealms:spike") + local c_spike2 = minetest.get_content_id("caverealms:spike_2") + local c_spike3 = minetest.get_content_id("caverealms:spike_3") + local c_spike4 = minetest.get_content_id("caverealms:spike_4") + local c_spike5 = minetest.get_content_id("caverealms:spike_5") 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") @@ -176,6 +193,12 @@ minetest.register_on_generated(function(minp, maxp, seed) --decoration loop for y = y0, y1 do -- for each x row progressing upwards + + local is_deep = false + if y < DEEP_CAVE then + is_deep = true + end + local tcave --same as above if y < yblmin then tcave = TCAVE + ((yblmin - y) / BLEND) ^ 2 @@ -193,8 +216,14 @@ minetest.register_on_generated(function(minp, maxp, seed) --compare noise values to determine a biome if n_biome >= 0 and n_biome < 0.5 then biome = 1 --moss + if is_deep then + biome = 7 --salt crystal + end elseif n_biome <= -0.5 then biome = 2 --fungal + if is_deep then + biome = 8 --glow obsidian + end elseif n_biome >= 0.5 then if n_biome >= 0.7 then biome = 5 --deep glaciated @@ -203,6 +232,9 @@ minetest.register_on_generated(function(minp, maxp, seed) end else biome = 3 --algae + if is_deep then + biome = 9 --coal dust + end end if y <= DM_TOP and y >= DM_BOT then @@ -293,6 +325,58 @@ minetest.register_on_generated(function(minp, maxp, seed) if math.random() < FORTCHA and FORTRESSES then --DM FORTRESS data[ai] = c_fortress 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 + -- gems of random size + local gems = { c_saltgem1, c_saltgem2, c_saltgem3, c_saltgem4, c_saltgem5 } + local gidx = math.random(1, 12) + if gidx > 5 then + gidx = 1 + end + data[ai] = gems[gidx] + 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 + -- spikes of random size + local spikes = { c_spike1, c_spike2, c_spike3, c_spike4, c_spike5 } + local sidx = math.random(1, 12) + if sidx > 5 then + sidx = 1 + end + data[ai] = spikes[sidx] + end end if math.random() < STAGCHA then diff --git a/nodes.lua b/nodes.lua index 952f9a4..e2cac65 100644 --- a/nodes.lua +++ b/nodes.lua @@ -62,6 +62,20 @@ minetest.register_node("caverealms:glow_ruby", { 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", @@ -84,7 +98,7 @@ minetest.register_node("caverealms:glow_emerald_ore", { paramtype = "light", }) ---embedded rub +--embedded ruby minetest.register_node("caverealms:glow_ruby_ore", { description = "Glow Ruby Ore", tiles = {"caverealms_glow_ruby_ore.png"}, @@ -95,6 +109,17 @@ minetest.register_node("caverealms:glow_ruby_ore", { 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", @@ -109,6 +134,20 @@ minetest.register_node("caverealms:thin_ice", { paramtype = "light", }) +--salt crystal +minetest.register_node("caverealms:salt_crystal", { + description = "Salt Crystal", + tiles = {"caverealms_salt_crystal.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_glass_defaults(), + light_source = 11, + paramtype = "light", + use_texture_alpha = true, + drawtype = "glasslike", + sunlight_propagates = true, +}) + --alternate version for stalactites minetest.register_node("caverealms:hanging_thin_ice", { description = "Thin Ice", @@ -182,6 +221,72 @@ for i in ipairs(glow_gem_size) do }) end +--glowing salt gem +local salt_gem_size = { 1.0, 1.2, 1.4, 1.6, 1.7 } + +for i in ipairs(salt_gem_size) do + if i == 1 then + nodename = "caverealms:salt_gem" + else + nodename = "caverealms:salt_gem_"..i + end + + vs = salt_gem_size[i] + + minetest.register_node(nodename, { + 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}, + sounds = default.node_sound_glass_defaults(), + light_source = 11, + paramtype = "light", + drawtype = "plantlike", + walkable = false, + buildable_to = true, + visual_scale = vs, + selection_box = { + type = "fixed", + fixed = {-0.5*vs, -0.5*vs, -0.5*vs, 0.5*vs, -5/16*vs, 0.5*vs}, + } + }) +end + +--stone spike +local spike_size = { 1.0, 1.2, 1.4, 1.6, 1.7 } + +for i in ipairs(spike_size) do + if i == 1 then + nodename = "caverealms:spike" + else + nodename = "caverealms:spike_"..i + end + + vs = spike_size[i] + + minetest.register_node(nodename, { + 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}, + sounds = default.node_sound_stone_defaults(), + light_source = 3, + paramtype = "light", + drawtype = "plantlike", + walkable = false, + buildable_to = true, + visual_scale = vs, + selection_box = { + type = "fixed", + fixed = {-0.5*vs, -0.5*vs, -0.5*vs, 0.5*vs, -5/16*vs, 0.5*vs}, + } + }) +end + --upward pointing icicle minetest.register_node("caverealms:icicle_up", { description = "Icicle", @@ -260,6 +365,20 @@ minetest.register_node("caverealms:stone_with_algae", { }), }) +--tiny-salt-crystal-covered cobble - pink-ish +minetest.register_node("caverealms:stone_with_salt", { + description = "Cave Stone with Salt", + tiles = {"caverealms_salty2.png"},--{"caverealms_salty2.png^caverealms_salty.png", "caverealms_salty2.png", "caverealms_salty2.png^caverealms_salty_side.png"}, + light_source = 9, + paramtype = "light", + use_texture_alpha = true, + drawtype = "glasslike", + sunlight_propagates = true, + is_ground_content = true, + groups = {crumbly=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", @@ -273,6 +392,40 @@ minetest.register_node("caverealms:hot_cobble", { }), }) +--Glow Obsidian +minetest.register_node("caverealms:glow_obsidian", { + description = "Glowing Obsidian", + tiles = {"caverealms_glow_obsidian.png"}, + is_ground_content = true, + groups = {crumbly=1}, + light_source = 7, + 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 Glow Obsidian", + tiles = {"caverealms_glow_obsidian2.png"}, + is_ground_content = true, + groups = {crumbly=1, hot=1}, + damage_per_second = 1, + light_source = 9, + sounds = default.node_sound_stone_defaults({ + footstep = {name="default_stone_footstep", gain=0.25}, + }), +}) + +--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 = "Glow Worms", diff --git a/textures/caverealms_coal_dust.png b/textures/caverealms_coal_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..5f58502a683e02b2a28a25727349e315d57341bb GIT binary patch literal 668 zcmV;N0%QG&P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vt5C%0Pb<(020006zNkl<ZILlR&&1&l~7(|ct6Cnqi zKqzj#NXe#sfiCj?FH$ImkcAUhwPNJR@?8}BQf>7!bLJamr_*UR#&Ee@&|0(IZb>OI zO%o|4oO4JiDT)GP48t&BtzGw&F$U)x)>@>Lc<<S4HspDZQVMG=-g{z<48uT-5h*3p zG*Ol%s_Qzm))YlS2mxy?MNu%0BTdsFgkZPZk>@!nCGPh-T5A?z1z@cOAkT9`2#n*% z<#M5_Dz@7#0A1JNz31iSg%~4E(@>Tr+39qeg%B8HSk}UsWf^_nGffi!Wm)2!BgTkQ z3hzBaYfX%CWlJfMQsR2O^7;7*z&MTo{QUf2jKNyVIF8hHjamW}LXc8o7zWz5MF_#+ za9G_eXBJmgRsEkrN@-2D>pB4Hx+bOc=b{h-U>)Hw42Xq$nkM?b$2mt`*8nJ`5JI4} zX0zD<5JKSl`<vVChPC$B0f2LkudgqT$0GnzO6GY+YfVat7$eR(nx?@RLseBMrBES+ zHMIBl_Z20C0DuqzAq3a!m9}kpeSO7Ri`JU^{Z97u^fZ@c$>DHVRh)AurI1pt^_}OL z=jUgXQh&nEK0ZEXAq0=dgTC*PQc{*BLWs5V%ioYv@_0P(-qZIzx7!V+lmb9&&3?aM zQ`TCOWf@v)LI`U^`@Ua=-rnARtGsj|gg}gu5CXg1Zsi<?f%EyyJkOM6$?<q3rGyaT z_kolW0O#|Wq9|4;ZQBw;plw_B`~8Y$jKO=4F@}FAQDn0xT5CZ70000<MNUMnLSTXw C%P7+T literal 0 HcmV?d00001 diff --git a/textures/caverealms_glow_amethyst.png b/textures/caverealms_glow_amethyst.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5898d8437b1c309c955f4cd885252fce827b9f GIT binary patch literal 888 zcmV-;1Bd*HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6}{G%MaC0J8u903B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00P`eL_t(I%Vm>KZxcrt z#-G{Qf6jWztYZvqYQQEUag-8@l)8~<EA6p8kOK#9x$uR0=_ly965>owNC=Q3Bq}Ae zC`)R^aoxo`%Ve_SosHc?vsMJ}Wu(#jj(*ScK0_X~9zDf*eO>z&2VxIWi}DJd<pTg} zPNUgve_uc7zw;NXH_RvRf7|sepOatjJ^Ay+aHl7=fM@wAPXK899UO?g*<(@*1|Vow zZ?eno7r}1)Y?oH3w`Eg@+0;=0U{eR(M%Z)=_v0tS0H6TiY+8^hrugy8pWDXW`n?bU zZ&g=V+4y3((>oA*44;%|`S2{Co5V_7I>%qf&lBTcb(}2EuZPjeKJUvzc$Sa0-$9xu z!4Fq|Vp5BlthV0)09>ms@xRhHiA(1=`DOF>5dbi^7VI27-YIn#lcFUH0h5>s0A3PY z^vEO@Gv1%PjR#qezmA_L%k%5uo6$=E!1yeSOkzf9KH_V^2J<W*-A35FNK#BSr_1d2 zR#r&JLXhj#TUf7mS0nK@(vuvX<zsze6Vb`ODkeqi`1J6wRb63!B(IcB9Y`%;wEYf> zspclJl9D7`ydRdvUChP2U28=r`+P0fV5Jm#-Cx=UfC(llD<tOa1!59=Mp8Crh2%n~ z+@=nA9xIzVOlqNwZX;~A{SKrSNb?aNW=F{&>v66|GZLu<!o~Z|(!?}RT2c!R0JQF2 z-C}l~4OL&Ao2SmE1&&T564(vY-7Bldr+-I7)&JP4uCOa}U#UUX3o51;xMqdZI}4lJ zC6b=x%Cme3ohm)a;ZT><oW@KJ&tsM3F>`5UU=ZVff;$VF+foah4>JHtPjUcIqwx?Q z#siY(39eO_RzHmYi2x|61#Id701T-G)`E>Pwj2OU^U-Iq^~_7j)^`uXi$4_r=xT6x zd#L(qE!bc@j}-uA5Q=io<FibS#zQ#NC6(-w->H3b(=psAa4sXsWBdnT^N35bmp)Md O0000<MNUMnLSTZMUx<AG literal 0 HcmV?d00001 diff --git a/textures/caverealms_glow_amethyst_ore.png b/textures/caverealms_glow_amethyst_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..8a68ef8da3c0ea2f00ed6af465c7f611f8251bc3 GIT binary patch literal 686 zcmV;f0#W^mP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vt5db&?M<eG&0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#9BuPX;R4C7FQcp+}VHE$pb#`Z*k0{g)%(g?+MlN;{ z-1Z{qG3a2~x<Om6;?hziiY1*o<t1_pI@FM-4heP$imsgkcQa3I<We3gWnnRM*%@aV zo!8-uaf9CRz3=z^{=7$-bcTqC2mmvCp2y6@08qC~Aq0Q`2mn!li37d6<FRs<nLAg; zLZMLCm#gx1*J>_NnL70~m#E!f!kPA4bI<1Dzpg7Ux9*@7z2)1*NFJMLIjVK7=Fm`u z1CIz~Z@8&s3K|q<Zf<TC;b71A2>?G~FSg$YKt%ENNdT5*0eFoW0FL9((1oGDUwHt~ zvo--hgo9?)#lQ9O_!9uMF!c$*;JuTxi9+M}znIc7gGR56*0*cm06ciKbNa_kIV*PL z0ob+;KvmWF`efnItPn!!Tp1JLplDOH)?g!#)V9Y4R|r8wN-1i@%2@!fw(c&Rhtui+ z*!k@S)sU*H5@uFi5e@=~m9q*n%T|AQ+UH3PrWzTfJlJ@D_yG-H8kX5Pjsrl`GywB2 z=4TUyZ{5#*%#jZl0en6&N6B-^es|grq!cy!n#Py*J;iRIQmHihDMs?dM45C(u1PwP z7Nxd#wh>uM`4N|*1~WIM^~cq=<ybjejO5q$FLu-tuH}K~jX6^{>w6vG;6`_~Wtm1U zkMwL_lal;pm7)fKzNYcFyAJ`Frm5??<fnnN10hufv99U9MS1P!w&`Du1Xz~!2e2US UzPF470ssI207*qoM6N<$g3G)vCIA2c literal 0 HcmV?d00001 diff --git a/textures/caverealms_glow_obsidian.png b/textures/caverealms_glow_obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..51c0a33d42d135a2b4b87e6a60daeab60a94d923 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqj{viz?%D}zp+KRto-U3d8t11@GUPsFAkcch+m*#p z)<uA8p+(Au7a=l#*kk{Gb-mN&C#$2e!-S7Bvp09`cGdEo<?nY-Fk)j+WLU83gEmte zSHn5uHZS{kbIz5{V|?IsYtqLfDQ7#w7V5^V=WmrOU4NzJMb;frWxcR}v5^KLb97s+ z0`eGpH*M%W)znkw{J=!RwR+FIygRdwRVB~8qvz{gJH;lM?cD|T<_%_rH_yhMKUnUh zvU29_+s*F}RzG|8E%oTfE4waMZS{N=@zO>)_08Xz*N$yHw13LIJMY7E>|Z%n0zJmy M>FVdQ&MBb@0K<-ePyhe` literal 0 HcmV?d00001 diff --git a/textures/caverealms_glow_obsidian2.png b/textures/caverealms_glow_obsidian2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea69258003a917e4eae6977ff31758c138bd55ee GIT binary patch literal 765 zcmV<Z0s{SsP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vt5Ca+-J^;{}0007<Nkl<ZD9;7KTS!x30KoD8ImfBn z@;KYf*1mQ&HPf_GYgw!d)k8rM*j=NLsIZ`V3xsZOJp@6$^$<ia(S-=R8AL^Cwk}{+ zG%uOv@serHPp3}T*6*iaR34_|v6@}QyY@u19s_JPCMNLCqw6>YbqvBFY&pruWzscD zoC)2TJK9s?Irc>Rm*(=^ljF@yoS##D$DZ=c?hIsE`lSc)C!}k3-LIi;9F%+~HYT5Z znfiS}eyb)pjG7kxTb7mjSyTJXPzu(B>_+NU^0tDJQ$yf7&!GU)AO;aAhRJ;74DCIX zZzeR3k))%EJPk**1sBY!g%9L_dP?}3<O@)X7#?R$ga(t<T_k&PKv=ux@YgdIB=P|D z4kNc2Xp=J&A{%{n@4}rCV+AyCl0zN15$oJCsd)SgQW91#wzb%ABD;7Gc~<O~$URB| zLQuM$kF^wCA)e2)!iM9-LN(@4H~(I;HD5$J$qe$X$zA4Vxxq&U;&1s0Lzv+@oC<~q z%Apnf5WdQ~i`<W)oMY+`nXq&lwt8k(i%*SaA!5FU!vTGezMI~!6t6_Ri%ms!k^Y_x zC~xCw3cf!wJ4PEaLxnsa3Rph#8>Tv$g02X2Ygu$w>_Q|;MMYfnN`CAS6{v9yhuAB8 zA9QcIUOBDDU&--3fgNAf=qFt+HhZ2)B~><zO8p?3SH5|joK!Fh;8!X;nnZXXOWK(Y zUoaCb43`QE<|MR(2W(m7{H0SNcpCHJ5k{9WC&uszbSH@s`oINYKN}AQ)||n+e&A6F z9=jRVE~-hZsIcf|tK_ZyEOVmxM6gzd-B_J$YN5Wgztht{@>sroCo>zdC>Y)w6ds@r v;vgUd0f<(y;3kcbu>_Znw~+?O-%RU&@_Plj@B=1;00000NkvXXu0mjf@y||h literal 0 HcmV?d00001 diff --git a/textures/caverealms_salt_crystal.png b/textures/caverealms_salt_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..b460ff3bd2facbfa82719eb17ee0f65b3be8d460 GIT binary patch literal 719 zcmV;=0x<oFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6`}10U6DjSc_+03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00J{fL_t(I%T1F@Zrd;r zhQAq+W@Op5YB-B5g5LiW1$u_Ax@ofroS;DvTe4)yd~`9cTLN5=ApYl2&R@TN0}$_# z&4$u-0HBJ5Kze;eyr)bPvR<RR9qH)_-ENVlK_vuqw<GsGrR$LO8k{4)ypa2z>i+(A zM~pBGXxk!njf8;9$0L#w(lo|;eOx_0Ql^Pg3i;y$U9HH+BY7AQksF{&)0pJ*8EG1% zs_g8X0g51XP1^76K1NC@0F+X2WgHRj(cKOSf!z1#a!IKwq^`-wBf8yE4hPEN08L{S z0c~5Hcn{8ze*dPrvgTm`Fm@4`XS8ie;|Mv!JX2IDA>fD+@gBS<zrCTKKEd6cNd#Cd z46JFWzI;JKpmZH&9L;H&CS<cgHyhH=pJeAyRdU}WAs}@P&Kb$w9lBhSRbjC}stU(q zVf9rNvR)hdH4|dAFt340UH@z9x|H)7a<;14_TSKWkGActA#$dSBW0SbvARZ@1}B>h zs9N&VWd6@*dwjW=WPo|L0KJFBf-;WiYK2Nwq06Poyj*T_^ZPr@vo#W<?VOF|I_h~C za3v+UTqs><eNPjFU<$lP>l#_D$bEkUDu)B*a<NhV+bPbG_Is*_2XGGEZb?s1kTdf6 zv&sK|#|Yk|`R&bmUa!&ZmiX%zQrDEziR$5jJPef6$rN=R>GjoYIY&tejX!=6zki1q z?dyg>+V3gTM1Fs_@&5QAJwKZbAium&PA8aW{s1mCJuaWPkm~>d002ovPDHLkV1o7+ BJ$wKF literal 0 HcmV?d00001 diff --git a/textures/caverealms_salt_gem.png b/textures/caverealms_salt_gem.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2b052b9fd3968306fe208fed9eaf3544f00260 GIT binary patch literal 497 zcmV<N0S^9&P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6`}4J`CI!Il630e(qD zK~y-)rINi)<4_QVKl_rP><WbANHl3E(z&IeN=Xe>8l-&zDnvm^l_~|zKEr(iItt_n z3RAkb1QA7KLt$wh6Z;NDejqFaZT6O<Gw0lIW-Jlmf1drFAnW(#)L+pc)mi|~`dwMc zV6E9C^ZnHkiopN?6USeNEHfBK(U({N8=a12f5-nmJ=I#qQA8dD%Mq3}&uSZ;j`bJ9 z5pdD%&YOQ89Pko`R6UQ(_vg)xUeEe;2EVnId@8E6T4dMP)Y@%c!Vu*+D952plFzqr z_$wq20*c2+)^~Rogk_RYCJFZDCY7BXQmti%X^9A_)}pqz8Qt8VT$l3s8H}OUZckQe z4C5%mJUvZP8x2ex)9CdqbzBru4u_P(A*x=--rAZAi-!l4<B;FoVby9>Jr5a;Fw@`t z*xx^&BbYd*>UoT#2<5udq9G3gDy<gEbr<epHpsQ?>Pj_lZ%ur1B7ZI~C&_7w<oVl0 n-roZ()Bpy1d$#@2@n7F7Cfd#e*NHaX00000NkvXXu0mjfI@!~f literal 0 HcmV?d00001 diff --git a/textures/caverealms_salty.png b/textures/caverealms_salty.png new file mode 100644 index 0000000000000000000000000000000000000000..2372aac167f83ef5dd4aa8de4fd6df687b92efb5 GIT binary patch literal 939 zcmV;c162HpP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6@|06WS)eboQ}12{=U zK~y-)Ez-+RoMjXT;NN@B`MwzjD3>X>P+|#F3PCXqHEC)g8g1MdO&Syb0~an#To~iZ zxN_T#Y2wznGhLyps#P|MR?%W@36yfbv`}CeX1<yCoa3VY4bKxcW@ojXh?)T0GDC?7 zgQ^+w`R(YAwHSNLKyE|?X_lcD0v4Fd72w__=2ptbI9*7R-Nz!hYKHw7y~ey<HoI91 z;bs@G-BYjovZ`AyXZa*Ci2V5+(dU&AZjhzvr^iGy-Kw^wiXByC%-9P7djNJt@Tj>t zJJ0;@(|UdSVWY87YBb_w06)eESyO%ILX2Zas-ce=$3$U8q<1{a-da`V)<U5tQ{6sM zy-_6kAq`=?;Qk>*KE4uTEA_a)_aw`P4vDZxWapA3#uzuD`Yop^Dk0?hvkV1y{~D+r zxc{=vyjrc-U+MtHWDz($6+&DvTaH9O-B$gzDaNe^a4Qm3D()Y72z|}K`%@y92V%6U z>eQ(aWFrK~6%i<KR05{&sa}7@ef@z*ewVq>8Dp_om1@lLv-_~BmgdbQM?}LSsKy8( z<^a`}-+_yrs&CA>&lW=%Ishi~s&B8mQ+Jx`t0DYhW~ix7tmJao1JLdcL6%{jC>>&+ zm`T%tmw_kw7>mjAarb_b<XZ{_902&o3_YqC2aq?zp&5Ds$oBv)0O(LnyNLRWK>xZ( zY;S5hYzu)`h!Q2@3Dt>CGdpspK{E`hqGASmO{DTS(O-+qbKPc-mPP7k^7)5rY5JuA zOZ!>oFI1~2Ge5OL;kJY@w@|H~tYsM%+#yRb-tSJ5FO~rB1I~|!@b0Gj{6Prc8~`Ji z&4v-ePE)0FeJM%4JI(x}5`EIEIy#VLL5={d0hk2PND?eH8Z-n<_Aq~TpXgFolHjP( znCY(9zuGaYbTFUEG5cZ&C^JJ+)sd@2A8ZoYkZM~5dN-csd2=k6qh(d!bASF~F8BHv z(ZX-4*GkN1D?n%wLAZP8j+fm106?mW9Uv5#Q8vS#JBHlRCDK@BUOO_|t-Ft&GHWZk z<1hqBi5Yp-Z~{DIVa9`c9it-H0zj(RB}&dQ4?^|qT{G$zLF@kt{{hIayL&WZ|9Joa N002ovPDHLkV1nz{s5Srq literal 0 HcmV?d00001 diff --git a/textures/caverealms_salty2.png b/textures/caverealms_salty2.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e948a21e693a3866b7b1cae840bb6d08cf21e6 GIT binary patch literal 442 zcmV;r0Y(0aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6`|IsjKBXLbMp0Y^zh zK~y-)jgvu60znW(U$?-paKetTU?r^wQ4_rhCY*=G+{6tB;0`lDT(UD`B0VIun<^|@ zN$gE`SI__T>sO6S>-9a~D*!dW*QGeU>|Pr{9uL_LfWMIKKP%(};d44&nT)l~6ep9) zke`z{@gM*WNNrJ6WsGw}+yFBG^L8%P3s9A~GRDVtG^zxMf&t1H=b{9w;6X@kC3X_R z6Ob|`NGw<r6L6D#TxWMxGLvMD?DX^?0But+Bq=XN-n|m&g9Gjape3b0O0h(>H*z*@ zzrU2TGo%2n9Skbt#g8sri5yoRkIx@PvCPKS0ZrL;^Y`JfGG3h2L?xI3;X1}e9FJcG z_y%lM_ULeU5hdD@M*F|fG60JGegW)^xk-q8*>z9i&kjgED^uEOr%&ghHZ2VHKk{Z4 kQa=Ais<v%w6eqxc0h0K1FP6sWIsgCw07*qoM6N<$f`^N(1ONa4 literal 0 HcmV?d00001 diff --git a/textures/caverealms_salty_side.png b/textures/caverealms_salty_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf49de42d755ca8d8dd4bd4f46147bb2d27fc81 GIT binary patch literal 517 zcmV+g0{Z=lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-V6@|0V~duT<`z@0g_2X zK~y-)?ZMA#6F~sL;or>8?j}pJrh%k3XfP-UMU<Wjde8@uJcXby;@wy1!K0TbA_!i* z1TWTls89<w)uh>&Cf#I{{WCl3#jD^0^!vo9-!DR~srf#ijp1RQQvy!2j6^A_z{(gp zw#~@0*b;&xfaQ{;T18g0#w(Rjam@Xqpd=;VrKIe-v@MHGz@#Zy76E|PY^Ev3aR?R* z)G@HFHNx|-jA0@rw}c>^&rw2<HyX6G=Fk{wTJv+g=32RopCmLq4|&gVu=5-x1QF0s z3Z16-l?qa+7o*wCXxF8c=h)-%%absCgX?l&+q_N^)Gy28_u1LAyVGfX-03`b(p1bB zi&xF{`hYCURI4S2%O$s!;s`!H$n(WFtsifd%TzBe_S7WH@O{7gBMiS>9gUtS$Ei2N z@LdGi1Ws-Yhx_$*`z=xQ=#J}NIb5w~+dDg===X~c=jT&(JqVr#kO6z|<G9$3V=(}= z3!DO9;aCj@8!m9O+nw{*#~|2fg5rOyd%arJ>(#h)=^y?8$YiugQCE7d00000NkvXX Hu0mjfFW>D9 literal 0 HcmV?d00001 diff --git a/textures/caverealms_spike.png b/textures/caverealms_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..32acbb5e9229e80bf68646f6109fe326ae95f258 GIT binary patch literal 492 zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vt5C$Cs6X7g%0004tNkl<ZILoDyy-Px26vlt=E&8A! z#UayZ5E~-eBJQ9xln_Kq&=@2wZM6iA^&j*f<j^KfAqBN*(BL3tG~^K8gbL&;m1)I2 z4d%_V53)189G>%>^E}V1M1=p8_8Z`6ZA4b%O%g=HegSyi@JLexgT0+ZllkT)T--bY zkSkQa#kBrJkTOc&$^ux}$|&tO{q@@;VZWq|60uX$?y0Y0tPR%#r$?NmjFL?lP3BdD zgn7U<>9IGjOnN8>EIJYz(PX}1xPf3I?3dUZXldQe!Eq0vM3Hj9VkY1OAb#xpaIGz2 zb|FnmdR#KMWtJ!Uxb(UK2)z_JXzc-D;Oe>>oq9J>i3pLfU#uKt$J_*Ulif`dhwdZv zQsm<15lbN3@8)d(900GQom`<pG?`c0Vz5`@nLAFb5<%U>*s0*qeKoBB?4?cH$l<A> z56Rdu<_Z-$5*jI^N(A80eZ)>pme#A6)&Gl{kqXd6#F`s*iOc(L(EY=c{qF8+Yv^qs iW|dM((>^o)wO#>{<+yXoU?>#;0000<MNUMnLSTYY2-$o9 literal 0 HcmV?d00001 -- GitLab