From 07718f6e0413672a17b01224056bc59c4a86b0d6 Mon Sep 17 00:00:00 2001 From: Juraj Vajda Date: Sat, 18 Mar 2023 12:24:42 -0400 Subject: [PATCH] Add deep ocean biomes --- README.md | 3 + api.lua | 145 +++++++++- crafting.lua | 66 +++++ functions.lua | 269 +++++++++++++++++- init.lua | 12 + loot_chests.lua | 72 +++++ mapgen_after.lua | 44 ++- nodes.lua | 701 +++++++++++++++++++++++++++++++++++++++++----- nodes_farming.lua | 20 +- settingtypes.txt | 42 ++- stairs.lua | 197 ++++++++++++- tools.lua | 39 ++- 12 files changed, 1499 insertions(+), 111 deletions(-) diff --git a/README.md b/README.md index fb963d4..e45320c 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Additionally adds extra biomes to the MT game default biomes: * Coral Forest * Coral Forest Dunes * Coral Forest Ocean +* Coral Forest Deep Ocean * Coral Forest Under * Frosted Icesheet * Frosted Icesheet Ocean @@ -34,11 +35,13 @@ Additionally adds extra biomes to the MT game default biomes: * Cursed Lands Dunes * Cursed Lands Swamp * Cursed Lands Ocean +* Cursed Lands Deep Ocean * Cursed Lands Under * Crystal Forest * Crystal Forest Dunes * Crystal Forest Shore * Crystal Forest Ocean +* Crystal Forest Deep Ocean * Crystal Forest Under * Bamboo Forest * Bamboo Forest Under diff --git a/api.lua b/api.lua index 0ad3ed0..b87f505 100644 --- a/api.lua +++ b/api.lua @@ -394,7 +394,12 @@ Everness = { everness_coral_forest_ocean = { enabled = minetest.settings:get_bool('everness_coral_forest_ocean', true), y_max = tonumber(minetest.settings:get('everness_coral_forest_ocean_y_max')) or 3, - y_min = tonumber(minetest.settings:get('everness_coral_forest_ocean_y_min')) or -255, + y_min = tonumber(minetest.settings:get('everness_coral_forest_ocean_y_min')) or -10, + }, + everness_coral_forest_deep_ocean = { + enabled = minetest.settings:get_bool('everness_coral_forest_deep_ocean', true), + y_max = tonumber(minetest.settings:get('everness_coral_forest_deep_ocean_y_max')) or -11, + y_min = tonumber(minetest.settings:get('everness_coral_forest_deep_ocean_y_min')) or -255, }, everness_coral_forest_under = { enabled = minetest.settings:get_bool('everness_coral_forest_under', true), @@ -434,6 +439,11 @@ Everness = { everness_cursed_lands_ocean = { enabled = minetest.settings:get_bool('everness_cursed_lands_ocean', true), y_max = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_max')) or -2, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_min')) or -10, + }, + everness_cursed_lands_deep_ocean = { + enabled = minetest.settings:get_bool('everness_cursed_lands_ocean', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_max')) or -11, y_min = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_min')) or -255, }, everness_cursed_lands_under = { @@ -459,7 +469,12 @@ Everness = { everness_crystal_forest_ocean = { enabled = minetest.settings:get_bool('everness_crystal_forest_ocean', true), y_max = tonumber(minetest.settings:get('everness_crystal_forest_ocean_y_max')) or -2, - y_min = tonumber(minetest.settings:get('everness_crystal_forest_ocean_y_min')) or -255, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_ocean_y_min')) or -10, + }, + everness_crystal_forest_deep_ocean = { + enabled = minetest.settings:get_bool('everness_crystal_forest_deep_ocean', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_deep_ocean_y_max')) or -11, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_deep_ocean_y_min')) or -255, }, everness_crystal_forest_under = { enabled = minetest.settings:get_bool('everness_crystal_forest_under', true), @@ -728,6 +743,45 @@ function Everness.node_sound_mud_defaults(table) return table end +function Everness.node_sound_grass_defaults(table) + table = table or {} + table.footstep = table.footstep or + { name = 'everness_grass_footstep', gain = 0.4 } + table.dig = table.dig or + { name = 'everness_grass_hit', gain = 1.2 } + table.dug = table.dug or + { name = 'everness_dirt_hit', gain = 1.0 } + table.place = table.place or + { name = 'everness_dirt_hit', gain = 1.0 } + return table +end + +function Everness.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + { name = 'everness_dirt_footstep', gain = 0.15 } + table.dig = table.dig or + { name = 'everness_dirt_hit', gain = 0.4 } + table.dug = table.dug or + { name = 'everness_dirt_hit', gain = 1.0 } + table.place = table.place or + { name = 'everness_dirt_hit', gain = 1.0 } + return table +end + +function Everness.node_sound_ice_defaults(table) + table = table or {} + table.footstep = table.footstep or + { name = 'everness_ice_footstep', gain = 0.2 } + table.dig = table.dig or + { name = 'everness_ice_hit', gain = 0.4 } + table.dug = table.dug or + { name = 'everness_ice_hit', gain = 1.0 } + table.place = table.place or + { name = 'everness_ice_hit', gain = 1.0 } + return table +end + -- -- Forsted Cave Icicles -- @@ -777,3 +831,90 @@ function Everness.emerge_icicle_area_recursive(pos_node, incrementer, pos_marker } ) end + +function Everness.use_shell_of_underwater_breathing(self, itemstack, user, pointed_thing) + if not user then + return + end + + local pos_player = user:get_pos() + + if pointed_thing.type == 'node' then + local pos_pt = minetest.get_pointed_thing_position(pointed_thing) + + if not pos_pt then + return itemstack + end + + local pointed_node = minetest.get_node(pos_pt) + local pointed_node_def = minetest.registered_nodes[pointed_node.name] + + if not pointed_node or not pointed_node_def then + return itemstack + end + + if pointed_node_def.on_rightclick then + return pointed_node_def.on_rightclick(pos_pt, pointed_node, user, itemstack, pointed_thing) + end + end + + local node_head = minetest.get_node( + vector.new( + math.floor(pos_player.x + 0.5), + math.ceil(pos_player.y + 1), + math.floor(pos_player.z + 0.5) + ) + ) + local breath = user:get_breath() + + if minetest.get_item_group(node_head.name, 'water') > 0 and breath < 9 then + -- Under water + user:set_breath(9) + + if not minetest.settings:get_bool('creative_mode') + or not minetest.check_player_privs(user:get_player_name(), { creative = true }) + then + itemstack:add_wear(65535 / 20) + end + + minetest.sound_play('everness_underwater_bubbles', { + object = user, + gain = 1.0, + max_hear_distance = 16 + }) + + minetest.add_particlespawner({ + amount = 20, + time = 0.1, + pos = { + min = vector.new(pos_player.x - 0.25, pos_player.y + 1.25, pos_player.z - 0.25), + max = vector.new(pos_player.x + 0.25, pos_player.y + 1.5, pos_player.z + 0.25) + }, + vel = { + min = vector.new(-0.5, 0, -0.5), + max = vector.new(0.5, 0, 0.5) + }, + acc = { + min = vector.new(-0.5, 4, -0.5), + max = vector.new(0.5, 1, 0.5), + }, + exptime = { + min = 1, + max = 2 + }, + size = { + min = 0.5, + max = 2 + }, + texture = { + name = 'everness_bubble.png', + alpha_tween = { + 1, 0, + start = 0.75 + } + } + }) + end + + return itemstack +end diff --git a/crafting.lua b/crafting.lua index 1282065..be9d099 100644 --- a/crafting.lua +++ b/crafting.lua @@ -250,6 +250,22 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'everness:coral_deep_ocean_sandstone_block 4', + recipe = { + { 'everness:coral_forest_deep_ocean_sand', 'everness:coral_forest_deep_ocean_sand' }, + { 'everness:coral_forest_deep_ocean_sand', 'everness:coral_forest_deep_ocean_sand' }, + } +}) + +minetest.register_craft({ + output = 'everness:coral_deep_ocean_sandstone_brick 4', + recipe = { + { 'everness:coral_deep_ocean_sandstone_block', 'everness:coral_deep_ocean_sandstone_block' }, + { 'everness:coral_deep_ocean_sandstone_block', 'everness:coral_deep_ocean_sandstone_block' }, + } +}) + minetest.register_craft({ output = 'everness:coral_sandstone_chiseled 9', recipe = { @@ -453,6 +469,56 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'everness:coral_forest_deep_ocean_lantern 1', + recipe = { + { 'everness:coral_deep_ocean_sandstone_block', 'default:glass', 'everness:coral_deep_ocean_sandstone_block' }, + { 'default:glass', 'default:torch', 'default:glass' }, + { 'everness:coral_deep_ocean_sandstone_block', 'default:glass', 'everness:coral_deep_ocean_sandstone_block' }, + } +}) + +minetest.register_craft({ + output = 'everness:cursed_lands_deep_ocean_sandstone_block 4', + recipe = { + { 'everness:cursed_lands_deep_ocean_sand', 'everness:cursed_lands_deep_ocean_sand' }, + { 'everness:cursed_lands_deep_ocean_sand', 'everness:cursed_lands_deep_ocean_sand' }, + } +}) + +minetest.register_craft({ + output = 'everness:cursed_lands_deep_ocean_sandstone_brick 4', + recipe = { + { 'everness:cursed_lands_deep_ocean_sandstone_block', 'everness:cursed_lands_deep_ocean_sandstone_block' }, + { 'everness:cursed_lands_deep_ocean_sandstone_block', 'everness:cursed_lands_deep_ocean_sandstone_block' }, + } +}) + +minetest.register_craft({ + output = 'everness:crystal_forest_deep_ocean_sandstone_block 4', + recipe = { + { 'everness:crystal_forest_deep_ocean_sand', 'everness:crystal_forest_deep_ocean_sand' }, + { 'everness:crystal_forest_deep_ocean_sand', 'everness:crystal_forest_deep_ocean_sand' }, + } +}) + +minetest.register_craft({ + output = 'everness:crystal_forest_deep_ocean_sandstone_brick 4', + recipe = { + { 'everness:crystal_forest_deep_ocean_sandstone_block', 'everness:crystal_forest_deep_ocean_sandstone_block' }, + { 'everness:crystal_forest_deep_ocean_sandstone_block', 'everness:crystal_forest_deep_ocean_sandstone_block' }, + } +}) + +minetest.register_craft({ + output = 'everness:shell_of_underwater_breathing', + recipe = { + { '', '', 'group:everness_crystal_forest_deep_ocean_coral' }, + { '', 'group:everness_cursed_lands_deep_ocean_coral', '' }, + { 'group:everness_coral_forest_deep_ocean_coral', '', '' }, + } +}) + -- -- Tools -- diff --git a/functions.lua b/functions.lua index fe9cc1b..b9938d0 100644 --- a/functions.lua +++ b/functions.lua @@ -355,7 +355,7 @@ minetest.register_abm({ chance = 16, catch_up = false, action = function(pos, node) - if not minetest.settings:get_bool('enable_particles') then + if not minetest.settings:get_bool('enable_particles', true) then return end @@ -429,7 +429,7 @@ minetest.register_abm({ chance = 16, catch_up = false, action = function(pos, node) - if not minetest.settings:get_bool('enable_particles') then + if not minetest.settings:get_bool('enable_particles', true) then return end @@ -510,3 +510,268 @@ minetest.register_abm({ Everness:grow_cactus(...) end }) + +-- +-- Bio Bubbles +-- + +minetest.register_abm({ + label = 'everness:bio_bubbles', + nodenames = { 'group:bio_bubbles' }, + neighbors = { 'default:water_source' }, + interval = 16, + chance = 2, + catch_up = false, + action = function(pos, node) + if not minetest.settings:get_bool('enable_particles', true) then + return + end + + local water_above = minetest.find_nodes_in_area(pos, { x = pos.x, y = pos.y + 10, z = pos.z }, { 'group:water' }) + + if #water_above < 10 then + return + end + + -- particles + local particlespawner_def = { + amount = 50, + time = 10, + minpos = vector.new({ x = pos.x - 0.1, y = pos.y + 0.6, z = pos.z - 0.1 }), + maxpos = vector.new({ x = pos.x + 0.1, y = pos.y + 0.6, z = pos.z + 0.1 }), + minvel = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxvel = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minacc = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxacc = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minexptime = 5, + maxexptime = 7, + minsize = 2, + maxsize = 3.5, + texture = 'everness_bubble.png', + glow = 7 + } + + if minetest.has_feature({ dynamic_add_media_table = true, particlespawner_tweenable = true }) then + -- new syntax, after v5.6.0 + particlespawner_def = { + amount = 50, + time = 10, + size = { + min = 2, + max = 3.5, + }, + exptime = { + min = 5, + max = 7 + }, + pos = { + min = vector.new({ x = pos.x - 0.1, y = pos.y + 0.6, z = pos.z - 0.1 }), + max = vector.new({ x = pos.x + 0.1, y = pos.y + 0.6, z = pos.z + 0.1 }), + }, + vel = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + acc = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + texture = { + name = 'everness_bubble.png', + alpha_tween = { + 1, 0, + style = 'fwd', + reps = 1 + }, + scale_tween = { + 0.5, 1, + style = 'fwd', + reps = 1 + } + }, + glow = 7 + } + end + + minetest.add_particlespawner(particlespawner_def) + end +}) + +-- +-- Rising Souls +-- + +minetest.register_abm({ + label = 'everness:rising_souls', + nodenames = { 'group:rising_souls' }, + neighbors = { 'default:water_source' }, + interval = 16, + chance = 2, + catch_up = false, + action = function(pos, node) + if not minetest.settings:get_bool('enable_particles', true) then + return + end + + local water_above = minetest.find_nodes_in_area(pos, { x = pos.x, y = pos.y + 10, z = pos.z }, { 'group:water' }) + + if #water_above < 10 then + return + end + + -- particles + local particlespawner_def = { + amount = 17, + time = 10, + minpos = vector.new({ x = pos.x - 0.3, y = pos.y + 0.6, z = pos.z - 0.3 }), + maxpos = vector.new({ x = pos.x + 0.3, y = pos.y + 0.6, z = pos.z + 0.3 }), + minvel = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxvel = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minacc = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxacc = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minexptime = 4, + maxexptime = 6, + minsize = 4, + maxsize = 6, + texture = 'everness_rising_soul_particle.png', + glow = 7 + } + + if minetest.has_feature({ dynamic_add_media_table = true, particlespawner_tweenable = true }) then + -- new syntax, after v5.6.0 + particlespawner_def = { + amount = 17, + time = 10, + size = { + min = 4, + max = 6, + }, + exptime = { + min = 4, + max = 6 + }, + pos = { + min = vector.new({ x = pos.x - 0.3, y = pos.y + 0.6, z = pos.z - 0.3 }), + max = vector.new({ x = pos.x + 0.3, y = pos.y + 0.6, z = pos.z + 0.3 }), + }, + vel = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + acc = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + texture = { + name = 'everness_rising_soul_particle.png', + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 2, + }, + alpha_tween = { + 1, 0, + style = 'fwd', + reps = 1 + }, + scale_tween = { + 0.5, 1, + style = 'fwd', + reps = 1 + } + }, + glow = 7 + } + end + + minetest.add_particlespawner(particlespawner_def) + end +}) + +-- +-- Rising Crystals +-- + +minetest.register_abm({ + label = 'everness:rising_souls', + nodenames = { 'group:rising_crystals' }, + neighbors = { 'default:water_source' }, + interval = 16, + chance = 2, + catch_up = false, + action = function(pos, node) + if not minetest.settings:get_bool('enable_particles', true) then + return + end + + local water_above = minetest.find_nodes_in_area(pos, { x = pos.x, y = pos.y + 10, z = pos.z }, { 'group:water' }) + + if #water_above < 10 then + return + end + + -- particles + local particlespawner_def = { + amount = 17, + time = 10, + minpos = vector.new({ x = pos.x - 0.3, y = pos.y + 0.6, z = pos.z - 0.3 }), + maxpos = vector.new({ x = pos.x + 0.3, y = pos.y + 0.6, z = pos.z + 0.3 }), + minvel = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxvel = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minacc = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + maxacc = vector.new({ x = 0.1, y = 0.5, z = 0.1 }), + minexptime = 4, + maxexptime = 6, + minsize = 4, + maxsize = 6, + texture = 'everness_rising_soul_particle.png', + glow = 7 + } + + if minetest.has_feature({ dynamic_add_media_table = true, particlespawner_tweenable = true }) then + -- new syntax, after v5.6.0 + particlespawner_def = { + amount = 25, + time = 10, + size = { + min = 6, + max = 8, + }, + exptime = { + min = 4, + max = 6 + }, + pos = { + min = vector.new({ x = pos.x - 0.3, y = pos.y + 0.6, z = pos.z - 0.3 }), + max = vector.new({ x = pos.x + 0.3, y = pos.y + 0.6, z = pos.z + 0.3 }), + }, + vel = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + acc = { + min = vector.new({ x = -0.1, y = 0.25, z = -0.1 }), + max = vector.new({ x = 0.1, y = 0.5, z = 0.1 }) + }, + texture = { + name = 'everness_crystal_forest_deep_ocean_sand_bubbles.png', + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 1, + }, + alpha_tween = { + 1, 0.5, + style = 'fwd', + reps = 1 + } + }, + glow = 7 + } + end + + minetest.add_particlespawner(particlespawner_def) + end +}) diff --git a/init.lua b/init.lua index e9eeb8f..6ec8cf8 100644 --- a/init.lua +++ b/init.lua @@ -51,6 +51,10 @@ if Everness.settings.biomes.everness_coral_forest_ocean.enabled then dofile(path .. '/mapgen_coral_forest_ocean.lua') end +if Everness.settings.biomes.everness_coral_forest_deep_ocean.enabled then + dofile(path .. '/mapgen_coral_forest_deep_ocean.lua') +end + if Everness.settings.biomes.everness_coral_forest_under.enabled then dofile(path .. '/mapgen_coral_forest_under.lua') end @@ -67,6 +71,10 @@ if Everness.settings.biomes.everness_crystal_forest_ocean.enabled then dofile(path .. '/mapgen_crystal_forest_ocean.lua') end +if Everness.settings.biomes.everness_crystal_forest_deep_ocean.enabled then + dofile(path .. '/mapgen_crystal_forest_deep_ocean.lua') +end + if Everness.settings.biomes.everness_crystal_forest_shore.enabled then dofile(path .. '/mapgen_crystal_forest_shore.lua') end @@ -87,6 +95,10 @@ if Everness.settings.biomes.everness_cursed_lands_ocean.enabled then dofile(path .. '/mapgen_cursed_lands_ocean.lua') end +if Everness.settings.biomes.everness_cursed_lands_deep_ocean.enabled then + dofile(path .. '/mapgen_cursed_lands_deep_ocean.lua') +end + if Everness.settings.biomes.everness_cursed_lands_swamp.enabled then dofile(path .. '/mapgen_cursed_lands_swamp.lua') end diff --git a/loot_chests.lua b/loot_chests.lua index 1a839a2..baf6250 100644 --- a/loot_chests.lua +++ b/loot_chests.lua @@ -26,6 +26,10 @@ minetest.register_lbm({ 'everness:quartz_temple_lootchest_marker', 'everness:forsaken_desert_temple_marker', 'everness:forsaken_desert_temple_2_marker', + 'everness:coral_forest_deep_ocean_house_marker', + 'everness:cursed_lands_deep_ocean_skull_marker', + 'everness:frosted_icesheet_igloo_marker', + 'everness:crystal_forest_deep_ocean_ruins_marker', }, run_at_every_load = true, action = function(pos, node) @@ -126,6 +130,74 @@ minetest.register_lbm({ -- local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)] + if rand:next(0, 100) <= item_def.chance then + local stack = ItemStack(item_def.name) + + if minetest.registered_tools[item_def.name] then + stack:set_wear(rand:next(1, 65535)) + else + stack:set_count(rand:next(1, item_def.max_count)) + end + + inv:set_stack('main', index, stack) + end + elseif node.name == 'everness:coral_forest_deep_ocean_house_marker' then + -- + -- Deep Ocean House + -- + local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)] + + if rand:next(0, 100) <= item_def.chance then + local stack = ItemStack(item_def.name) + + if minetest.registered_tools[item_def.name] then + stack:set_wear(rand:next(1, 65535)) + else + stack:set_count(rand:next(1, item_def.max_count)) + end + + inv:set_stack('main', index, stack) + end + elseif node.name == 'everness:cursed_lands_deep_ocean_skull_marker' then + -- + -- Deep Ocean Skull + -- + local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)] + + if rand:next(0, 100) <= item_def.chance then + local stack = ItemStack(item_def.name) + + if minetest.registered_tools[item_def.name] then + stack:set_wear(rand:next(1, 65535)) + else + stack:set_count(rand:next(1, item_def.max_count)) + end + + inv:set_stack('main', index, stack) + end + elseif node.name == 'everness:frosted_icesheet_igloo_marker' then + -- + -- Igloo + -- + local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)] + + if rand:next(0, 100) <= item_def.chance then + local stack = ItemStack(item_def.name) + + if minetest.registered_tools[item_def.name] then + stack:set_wear(rand:next(1, 65535)) + else + stack:set_count(rand:next(1, item_def.max_count)) + end + + inv:set_stack('main', index, stack) + end + elseif node.name == 'everness:crystal_forest_deep_ocean_ruins_marker' then + -- + -- Crystal Forest Deep Ocean Ruins + -- + local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)] + if rand:next(0, 100) <= item_def.chance then local stack = ItemStack(item_def.name) diff --git a/mapgen_after.lua b/mapgen_after.lua index fed14fc..97767ab 100644 --- a/mapgen_after.lua +++ b/mapgen_after.lua @@ -30,13 +30,14 @@ local c_forsaken_desert_sand = minetest.get_content_id('everness:forsaken_desert local c_forsaken_desert_chiseled_stone = minetest.get_content_id('everness:forsaken_desert_chiseled_stone') local c_forsaken_desert_brick = minetest.get_content_id('everness:forsaken_desert_brick') local c_forsaken_desert_engraved_stone = minetest.get_content_id('everness:forsaken_desert_engraved_stone') +local c_frosted_snowblock = minetest.get_content_id('everness:frosted_snowblock') +local c_frosted_ice = minetest.get_content_id('everness:frosted_ice') -- Localize data buffer table outside the loop, to be re-used for all -- mapchunks, therefore minimising memory use. local data = {} local chance = 15 local disp = 16 -local rotations = { '0', '90', '180', '270' } minetest.register_on_generated(function(minp, maxp, blockseed) local rand = PcgRandom(blockseed) @@ -66,9 +67,10 @@ minetest.register_on_generated(function(minp, maxp, blockseed) or data[vi] == c_dry_ocean_dirt or data[vi] == c_dirt_with_snow or data[vi] == c_dirt_with_coniferous_litter + or data[vi] == c_frosted_snowblock + or data[vi] == c_frosted_ice ) then - local rotation = rotations[rand:next(1, #rotations)] local s_pos = area:position(vi) local biome_data = minetest.get_biome_data(s_pos) @@ -95,7 +97,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -116,7 +118,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -137,7 +139,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -158,7 +160,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -181,7 +183,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -225,7 +227,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) minetest.place_schematic( schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' @@ -235,6 +237,29 @@ minetest.register_on_generated(function(minp, maxp, blockseed) end } ) + elseif (biome_name == 'everness_frosted_icesheet' or biome_name == 'everness_frosted_icesheet_ocean') + and rand:next(0, 100) < chance + then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_frosted_icesheet_igloo.mts' + + -- + -- Igloo + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y - 8, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + 'random', + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Igloo was placed at ' .. schem_pos:to_string()) end end end @@ -255,7 +280,6 @@ minetest.register_on_generated(function(minp, maxp, blockseed) or data[vi] == c_forsaken_desert_engraved_stone ) then - local rotation = rotations[rand:next(1, #rotations)] local s_pos = area:position(vi) local biome_data = minetest.get_biome_data(s_pos) @@ -318,7 +342,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) vm, schem_pos, schem, - rotation, + 'random', nil, true, 'place_center_x, place_center_z' diff --git a/nodes.lua b/nodes.lua index 61c0963..459b77a 100644 --- a/nodes.lua +++ b/nodes.lua @@ -270,6 +270,54 @@ minetest.register_node('everness:coral_desert_stone_with_moss', { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node('everness:coral_deep_ocean_sandstone_block', { + description = S('Coral Deep Ocean Sandstone Block'), + tiles = { 'everness_deep_ocean_sandstone_block.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:coral_deep_ocean_sandstone_brick', { + description = S('Coral Deep Ocean Sandstone Brick'), + paramtype2 = 'facedir', + place_param2 = 0, + tiles = { 'everness_deep_ocean_sandstone_brick.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_sandstone_block', { + description = S('Cursed Lands Deep Ocean Sandstone Block'), + tiles = { 'everness_cursed_lands_deep_ocean_sandblock.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_sandstone_brick', { + description = S('Cursed Lands Deep Ocean Sandstone Brick'), + paramtype2 = 'facedir', + place_param2 = 0, + tiles = { 'everness_cursed_lands_deep_ocean_sand_brick.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_sandstone_block', { + description = S('Crystal Forest Deep Ocean Sandstone Block'), + tiles = { 'everness_crystal_forest_deep_ocean_sandstone_block.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_sandstone_brick', { + description = S('Crystal Forest Deep Ocean Sandstone Brick'), + paramtype2 = 'facedir', + place_param2 = 0, + tiles = { 'everness_crystal_forest_deep_ocean_sandstone_brick.png' }, + groups = { cracky = 2 }, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node('everness:forsaken_desert_stone', { description = S('Forsaken Desert Stone'), tiles = { 'everness_forsaken_desert_stone.png' }, @@ -755,7 +803,15 @@ minetest.register_node('everness:coral_dirt', { short_description = S('Coral Dirt'), tiles = { 'everness_coral_dirt.png' }, groups = { crumbly = 3, soil = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), +}) + +minetest.register_node('everness:coral_deep_ocean_mud', { + description = S('Coral Deep Ocean Mud'), + short_description = S('Coral Deep Ocean Mud'), + tiles = { 'everness_mud_2.png' }, + groups = { crumbly = 3, bio_bubbles = 1 }, + sounds = Everness.node_sound_mud_defaults(), }) minetest.register_node('everness:cursed_dirt', { @@ -771,7 +827,7 @@ minetest.register_node('everness:crystal_dirt', { short_description = S('Crystal Dirt'), tiles = { 'everness_crystal_dirt.png' }, groups = { crumbly = 3, soil = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), }) minetest.register_node('everness:forsaken_tundra_dirt', { @@ -779,7 +835,7 @@ minetest.register_node('everness:forsaken_tundra_dirt', { short_description = S('Forsaken Tundra Dirt'), tiles = { 'everness_forsaken_tundra_dirt.png' }, groups = { crumbly = 3, soil = 1, mold_soil = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), }) minetest.register_node('everness:forsaken_tundra_dirt_with_grass', { @@ -792,9 +848,7 @@ minetest.register_node('everness:forsaken_tundra_dirt_with_grass', { }, groups = { crumbly = 3, soil = 1 }, -- drop = 'everness:forsaken_tundra_dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dirt_with_coral_grass', { @@ -807,9 +861,7 @@ minetest.register_node('everness:dirt_with_coral_grass', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:coral_dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dirt_with_cursed_grass', { @@ -835,9 +887,7 @@ minetest.register_node('everness:dirt_with_crystal_grass', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:crystal_dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dry_ocean_dirt', { @@ -845,72 +895,104 @@ minetest.register_node('everness:dry_ocean_dirt', { short_description = S('Dry Ocean Dirt'), tiles = { 'everness_forsaken_desert_dry_ocean_dirt.png' }, groups = { crumbly = 3 }, - sounds = default.node_sound_stone_defaults(), + sounds = Everness.node_sound_dirt_defaults(), }) -- Loot Chest / Icicle Markers minetest.register_node('everness:japanese_shrine_lootchest_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Japanese Shrine Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:jungle_temple_lootchest_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Jungle Temple Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:haunted_house_lootchest_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Haunted House Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:quartz_temple_lootchest_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Quartz Temple Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:forsaken_desert_temple_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Forsaken Temple Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:forsaken_desert_temple_2_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Forsaken Temple 2 Loot Chest Spawn Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:frosted_icicle_large_ceiling_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Frosted Icicle Large Ceiling Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) minetest.register_node('everness:frosted_icicle_large_floor_marker', { - -- drawtype = 'airlike', + drawtype = 'airlike', description = 'Frosted Icicle Large Floor Marker', tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, - groups = { dig_immediate = 2, not_in_creative_inventory = 0 }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, + paramtype2 = 'facedir', +}) + +minetest.register_node('everness:coral_forest_deep_ocean_house_marker', { + drawtype = 'airlike', + description = 'Coral Forest Deep Ocean House Marker', + tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, + paramtype2 = 'facedir', +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_skull_marker', { + drawtype = 'airlike', + description = 'Cursed Lands Deep Ocean Skull Marker', + tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, + paramtype2 = 'facedir', +}) + +minetest.register_node('everness:frosted_icesheet_igloo_marker', { + drawtype = 'airlike', + description = 'Frosted Icesheet Igloo Marker', + tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, + paramtype2 = 'facedir', +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_ruins_marker', { + drawtype = 'airlike', + description = 'Crystal Forest Deep Ocean Ruins Marker', + tiles = { 'everness_lootchest_marker_top.png', 'everness_lootchest_marker_side.png' }, + groups = { dig_immediate = 2, not_in_creative_inventory = 1 }, paramtype2 = 'facedir', }) @@ -921,7 +1003,7 @@ minetest.register_node('everness:dirt_1', { short_description = S('Dirt'), tiles = { 'everness_dirt_1.png' }, groups = { crumbly = 3, soil = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), }) minetest.register_node('everness:dirt_with_grass_1', { @@ -934,9 +1016,7 @@ minetest.register_node('everness:dirt_with_grass_1', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:dirt_1', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dirt_with_grass_2', { @@ -949,9 +1029,7 @@ minetest.register_node('everness:dirt_with_grass_2', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:dirt_1', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dirt_with_grass_extras_1', { @@ -964,9 +1042,7 @@ minetest.register_node('everness:dirt_with_grass_extras_1', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:dirt_1', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:dirt_with_grass_extras_2', { @@ -979,9 +1055,7 @@ minetest.register_node('everness:dirt_with_grass_extras_2', { }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type = 1 }, drop = 'everness:dirt_1', - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:crystal_cave_dirt', { @@ -989,9 +1063,7 @@ minetest.register_node('everness:crystal_cave_dirt', { short_description = S('Crystal Cave Dirt'), tiles = { 'everness_crystal_cave_dirt.png' }, groups = { crumbly = 3, soil = 1 }, - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_dirt_defaults(), }) minetest.register_node('everness:crystal_cave_dirt_with_moss', { @@ -1004,27 +1076,21 @@ minetest.register_node('everness:crystal_cave_dirt_with_moss', { }, drop = 'everness:crystal_cave_dirt', groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type_under = 1 }, - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:moss_block', { description = S('Moss Block'), tiles = { 'everness_moss_block.png' }, groups = { crumbly = 3, soil = 1 }, - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:crystal_moss_block', { description = S('Crystal Moss Block'), tiles = { 'everness_crystal_cave_moss.png' }, groups = { crumbly = 3, soil = 1, everness_spreading_dirt_type_under = 1 }, - sounds = default.node_sound_dirt_defaults({ - footstep = { name = 'default_grass_footstep', gain = 0.25 }, - }), + sounds = Everness.node_sound_grass_defaults(), }) minetest.register_node('everness:coral_sand', { @@ -1059,6 +1125,14 @@ minetest.register_node('everness:crystal_sand', { sounds = default.node_sound_sand_defaults(), }) +minetest.register_node('everness:crystal_forest_deep_ocean_sand_with_crack', { + description = S('Crystal Forest Deep Ocean Sand with Crack'), + short_description = S('Crystal Forest Deep Ocean Sand with Crack'), + tiles = { 'everness_crystal_forest_deep_ocean_sand_with_crack.png' }, + groups = { crumbly = 3, falling_node = 1, sand = 1, rising_crystals = 1 }, + sounds = default.node_sound_sand_defaults(), +}) + minetest.register_node('everness:forsaken_tundra_beach_sand', { description = S('Forsaken Tundra Beach Sand'), short_description = S('Forsaken Tundra Beach Sand'), @@ -1083,6 +1157,38 @@ minetest.register_node('everness:forsaken_desert_sand', { sounds = default.node_sound_sand_defaults(), }) +minetest.register_node('everness:coral_forest_deep_ocean_sand', { + description = S('Coral Forest Deep Ocean Sand'), + short_description = S('Coral Forest Deep Ocean Sand'), + tiles = { 'everness_deep_ocean_sand.png' }, + groups = { crumbly = 3, falling_node = 1, sand = 1 }, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_sand', { + description = S('Cursed Lands Deep Ocean Sand'), + short_description = S('Cursed Lands Deep Ocean Sand'), + tiles = { 'everness_cursed_lands_deep_ocean_sand.png' }, + groups = { crumbly = 3, falling_node = 1, sand = 1 }, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_sand_with_crack', { + description = S('Cursed Lands Deep Ocean Sand with Crack'), + short_description = S('Cursed Lands Deep Ocean Sand with Crack'), + tiles = { 'everness_cursed_lands_deep_ocean_sand_with_crack.png' }, + groups = { crumbly = 3, falling_node = 1, sand = 1, rising_souls = 1 }, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_sand', { + description = S('Crystal Forest Deep Ocean Sand'), + short_description = S('Crystal Forest Deep Ocean Sand'), + tiles = { 'everness_crystal_forest_deep_ocean_sand.png' }, + groups = { crumbly = 3, falling_node = 1, sand = 1 }, + sounds = default.node_sound_sand_defaults(), +}) + minetest.register_node('everness:frosted_snowblock', { description = S('Frosted Snow Block'), tiles = { 'everness_frosted_snow.png' }, @@ -1103,7 +1209,7 @@ minetest.register_node('everness:frosted_ice', { is_ground_content = false, paramtype = 'light', groups = { cracky = 3, cools_lava = 1, slippery = 3 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), }) minetest.register_node('everness:frosted_ice_translucent', { @@ -1112,7 +1218,7 @@ minetest.register_node('everness:frosted_ice_translucent', { is_ground_content = false, paramtype = 'light', groups = { cracky = 3, cools_lava = 1, slippery = 3 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), drawtype = 'glasslike', -- opaque, clip, blend use_texture_alpha = 'blend' @@ -1126,7 +1232,7 @@ minetest.register_node('everness:frosted_cave_ice', { groups = { cracky = 3, cools_lava = 1, slippery = 3, not_in_creative_inventory = 1 }, drop = 'everness:frosted_ice', - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), }) -- Mapgen-placed ice with 'is ground content = true' to contain tunnels @@ -1137,7 +1243,7 @@ minetest.register_node('everness:frosted_cave_ice_illuminating', { groups = { cracky = 3, cools_lava = 1, slippery = 3, not_in_creative_inventory = 1 }, drop = 'everness:frosted_ice', - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), light_source = 9, is_ground_content = false }) @@ -1157,7 +1263,7 @@ minetest.register_node('everness:ancient_emerald_ice', { tiles = { 'everness_ancient_emerald_ice.png' }, paramtype = 'light', groups = { cracky = 3, cools_lava = 1 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), }) minetest.register_node('everness:dense_emerald_ice', { @@ -1165,7 +1271,7 @@ minetest.register_node('everness:dense_emerald_ice', { tiles = { 'everness_dense_emerald_ice.png' }, paramtype = 'light', groups = { cracky = 3, cools_lava = 1 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), }) minetest.register_node('everness:emerald_ice', { @@ -1173,7 +1279,7 @@ minetest.register_node('everness:emerald_ice', { tiles = { 'everness_emerald_ice.png' }, paramtype = 'light', groups = { cracky = 3, cools_lava = 1 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), }) minetest.register_node('everness:snowcobble', { @@ -1195,7 +1301,7 @@ minetest.register_node('everness:icecobble', { description = 'Ice Cobble', tiles = { 'everness_icecobble.png' }, groups = { cracky = 2, cools_lava = 1 }, - sounds = default.node_sound_glass_defaults(), + sounds = Everness.node_sound_ice_defaults(), is_ground_content = false, }) @@ -2539,7 +2645,7 @@ minetest.register_node('everness:frosted_icicle', { buildable_to = true, is_ground_content = true, groups = { oddly_breakable_by_hand = 3 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), light_source = 9 }) @@ -2559,7 +2665,7 @@ minetest.register_node('everness:frosted_icicle_floor', { buildable_to = true, is_ground_content = true, groups = { snappy = 3, attached_node = 1, frosted_grass_under = 1 }, - sounds = default.node_sound_ice_defaults(), + sounds = Everness.node_sound_ice_defaults(), light_source = 9, selection_box = { type = 'fixed', @@ -3578,9 +3684,9 @@ minetest.register_node('everness:bamboo_sprout', { type = 'fixed', fixed = { -0.5, -0.5, -0.5, 0.5, -5 / 16, 0.5 }, }, - sounds = default.node_sound_dirt_defaults({ + sounds = Everness.node_sound_dirt_defaults({ dig = { name = '', gain = 0 }, - dug = { name = 'default_grass_footstep', gain = 0.2 }, + dug = { name = 'everness_grass_footstep', gain = 0.2 }, place = { name = 'default_place_node', gain = 0.25 }, }), after_place_node = function(pos, placer, itemstack, pointed_thing) @@ -3643,7 +3749,7 @@ minetest.register_node('everness:termite_block', { post_effect_color = { r = 47, g = 28, b = 18, a = 255 }, damage_per_second = 1, groups = { crumbly = 3, disable_jump = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), }) minetest.register_node('everness:bamboo_block', { @@ -3720,11 +3826,13 @@ minetest.register_node('everness:sequoia_wood', { -- Corals -- -local function coral_on_place(itemstack, placer, pointed_thing) +local function coral_on_place(itemstack, placer, pointed_thing, params) if pointed_thing.type ~= 'node' or not placer then return itemstack end + local ignore_water = params.ignore_water or false + local node_under_name = params.node_under_name or 'default:coral_skeleton' local player_name = placer:get_player_name() local pos_under = pointed_thing.under local pos_above = pointed_thing.above @@ -3736,8 +3844,9 @@ local function coral_on_place(itemstack, placer, pointed_thing) placer, itemstack, pointed_thing) or itemstack end - if node_under.name ~= 'default:coral_skeleton' or - minetest.get_node(pos_above).name ~= 'default:water_source' then + if node_under.name ~= node_under_name + or (minetest.get_node(pos_above).name ~= 'default:water_source' and not ignore_water) + then return itemstack end @@ -3946,6 +4055,366 @@ minetest.register_node('everness:sand_with_spine_kelp', { end }) +minetest.register_node('everness:coral_forest_deep_ocean_coral_plant_1', { + description = S('Coral Bulbs'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_deep_ocean_coral_plant_1.png', tileable_vertical = true } }, + inventory_image = 'everness_deep_ocean_coral_plant_1.png', + wield_image = 'everness_deep_ocean_coral_plant_1.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:coral_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:coral_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:coral_forest_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:coral_forest_deep_ocean_coral_plant_2', { + description = S('Coral Tree'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_deep_ocean_coral_plant_2.png', tileable_vertical = true } }, + inventory_image = 'everness_deep_ocean_coral_plant_2.png', + wield_image = 'everness_deep_ocean_coral_plant_2.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:coral_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:coral_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:coral_forest_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:coral_forest_deep_ocean_coral_plant_3', { + description = S('Coral Palm'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_deep_ocean_coral_plant_3.png', tileable_vertical = true } }, + inventory_image = 'everness_deep_ocean_coral_plant_3.png', + wield_image = 'everness_deep_ocean_coral_plant_3.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:coral_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:coral_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:coral_forest_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_plant_anemone', { + description = S('Coral Anemone'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_cursed_lands_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_cursed_lands_deep_ocean_coral_anemone.png', tileable_vertical = true } }, + inventory_image = 'everness_cursed_lands_deep_ocean_coral_anemone.png', + wield_image = 'everness_cursed_lands_deep_ocean_coral_anemone.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:cursed_lands_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:cursed_lands_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:cursed_lands_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_plant_darkilluma', { + description = S('Coral Darkilluma'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_cursed_lands_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_cursed_lands_deep_ocean_coral_darkilluma.png', tileable_vertical = true } }, + inventory_image = 'everness_cursed_lands_deep_ocean_coral_darkilluma.png', + wield_image = 'everness_cursed_lands_deep_ocean_coral_darkilluma.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:cursed_lands_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:cursed_lands_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:cursed_lands_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_plant_demon', { + description = S('Coral Demon'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_cursed_lands_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_cursed_lands_deep_ocean_coral_demon.png', tileable_vertical = true } }, + inventory_image = 'everness_cursed_lands_deep_ocean_coral_demon.png', + wield_image = 'everness_cursed_lands_deep_ocean_coral_demon.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:cursed_lands_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:cursed_lands_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:cursed_lands_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_plant_1', { + description = S('Crystal Forest Deep Ocean Coral Plant Cyan'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_crystal_forest_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_crystal_forest_deep_ocean_coral_plant_1.png', tileable_vertical = true } }, + inventory_image = 'everness_crystal_forest_deep_ocean_coral_plant_1.png', + wield_image = 'everness_crystal_forest_deep_ocean_coral_plant_1.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:crystal_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:crystal_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:crystal_forest_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_plant_2', { + description = S('Crystal Forest Deep Ocean Coral Plant Orange'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_crystal_forest_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_crystal_forest_deep_ocean_coral_plant_2.png', tileable_vertical = true } }, + inventory_image = 'everness_crystal_forest_deep_ocean_coral_plant_2.png', + wield_image = 'everness_crystal_forest_deep_ocean_coral_plant_2.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:crystal_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:crystal_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:crystal_forest_deep_ocean_sand' }) + end, +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_plant_3', { + description = S('Crystal Forest Deep Ocean Coral Plant Pink'), + drawtype = 'plantlike_rooted', + waving = 1, + paramtype = 'light', + light_source = 12, + tiles = { 'everness_crystal_forest_deep_ocean_sand.png' }, + special_tiles = { { name = 'everness_crystal_forest_deep_ocean_coral_plant_3.png', tileable_vertical = true } }, + inventory_image = 'everness_crystal_forest_deep_ocean_coral_plant_3.png', + wield_image = 'everness_crystal_forest_deep_ocean_coral_plant_3.png', + groups = { snappy = 3 }, + selection_box = { + type = 'fixed', + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -4 / 16, 0.5, -4 / 16, 4 / 16, 1.5, 4 / 16 }, + }, + }, + node_dig_prediction = 'everness:crystal_forest_deep_ocean_sand', + node_placement_prediction = '', + sounds = default.node_sound_stone_defaults({ + dig = { name = 'default_dig_snappy', gain = 0.2 }, + dug = { name = 'default_grass_footstep', gain = 0.25 }, + }), + on_place = function(itemstack, placer, pointed_thing) + coral_on_place( + itemstack, + placer, + pointed_thing, + { + ignore_water = true, + node_under_name = 'everness:crystal_forest_deep_ocean_sand' + } + ) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(pos, { name = 'everness:crystal_forest_deep_ocean_sand' }) + end, +}) + minetest.register_node('everness:crystal_coral_dark', { description = S('Crystal Coral Dark'), tiles = { 'everness_crystal_coral_dark_block.png' }, @@ -3960,6 +4429,76 @@ minetest.register_node('everness:crystal_coral_light', { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node('everness:coral_forest_deep_ocean_coral_1', { + description = S('Coral Forest Deep Ocean Coral Pink'), + tiles = { 'everness_deep_ocean_coral_1.png' }, + groups = { cracky = 3, everness_coral_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:coral_forest_deep_ocean_coral_2', { + description = S('Coral Forest Deep Ocean Coral Cyan'), + tiles = { 'everness_deep_ocean_coral_2.png' }, + groups = { cracky = 3, everness_coral_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:coral_forest_deep_ocean_coral_3', { + description = S('Coral Forest Deep Ocean Coral Green'), + tiles = { 'everness_deep_ocean_coral_3.png' }, + groups = { cracky = 3, everness_coral_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:coral_forest_deep_ocean_coral_4', { + description = S('Coral Forest Deep Ocean Coral Red'), + tiles = { 'everness_deep_ocean_coral_4.png' }, + groups = { cracky = 3, everness_coral_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_alcyonacea', { + description = S('Coral Alcyonacea'), + tiles = { 'everness_cursed_lands_deep_ocean_coral_alcyonacea.png' }, + groups = { cracky = 3, everness_cursed_lands_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_ostracod', { + description = S('Coral Ostracod'), + tiles = { 'everness_cursed_lands_deep_ocean_coral_ostracod.png' }, + groups = { cracky = 3, everness_cursed_lands_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:cursed_lands_deep_ocean_coral_octocurse', { + description = S('Coral Octocurse'), + tiles = { 'everness_cursed_lands_deep_ocean_coral_octocurse.png' }, + groups = { cracky = 3, everness_cursed_lands_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_1', { + description = S('Crystal Forest Deep Ocean Coral Green'), + tiles = { 'everness_crystal_forest_deep_ocean_coral_1.png' }, + groups = { cracky = 3, everness_crystal_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_2', { + description = S('Crystal Forest Deep Ocean Coral Orange'), + tiles = { 'everness_crystal_forest_deep_ocean_coral_2.png' }, + groups = { cracky = 3, everness_crystal_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node('everness:crystal_forest_deep_ocean_coral_3', { + description = S('Crystal Forest Deep Ocean Coral Cyan'), + tiles = { 'everness_crystal_forest_deep_ocean_coral_3.png' }, + groups = { cracky = 3, everness_crystal_forest_deep_ocean_coral = 1 }, + sounds = default.node_sound_stone_defaults(), +}) + -- -- Meshes -- @@ -4374,3 +4913,25 @@ minetest.register_node('everness:floating_crystal', { return itemstack end }) + +minetest.register_node('everness:coral_forest_deep_ocean_lantern', { + description = S('Coral Forest Deep Ocean Lantern'), + tiles = { + { + name = 'everness_coral_forest_deep_ocean_lantern_animated.png', + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 1, + }, + }, + }, + drawtype = 'glasslike', + sunlight_propagates = true, + is_ground_content = false, + sounds = default.node_sound_glass_defaults(), + groups = { cracky = 3, oddly_breakable_by_hand = 3 }, + paramtype = 'light', + light_source = 12, +}) diff --git a/nodes_farming.lua b/nodes_farming.lua index 7074689..0cf8e58 100644 --- a/nodes_farming.lua +++ b/nodes_farming.lua @@ -131,7 +131,7 @@ minetest.register_node('everness:coral_dirt_soil', { }, drop = 'everness:coral_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:coral_dirt', dry = 'everness:coral_dirt_soil', @@ -147,7 +147,7 @@ minetest.register_node('everness:dirt_1_soil', { }, drop = 'everness:dirt_1', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:dirt_1', dry = 'everness:dirt_1_soil', @@ -163,7 +163,7 @@ minetest.register_node('everness:crystal_dirt_soil', { }, drop = 'everness:crystal_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:crystal_dirt', dry = 'everness:crystal_dirt_soil', @@ -179,7 +179,7 @@ minetest.register_node('everness:crystal_cave_dirt_soil', { }, drop = 'everness:crystal_cave_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:crystal_cave_dirt', dry = 'everness:crystal_cave_dirt_soil', @@ -195,7 +195,7 @@ minetest.register_node('everness:cursed_dirt_soil', { }, drop = 'everness:cursed_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:cursed_dirt', dry = 'everness:cursed_dirt_soil', @@ -212,7 +212,7 @@ minetest.register_node('everness:coral_dirt_soil_wet', { }, drop = 'everness:coral_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:coral_dirt', dry = 'everness:coral_dirt_soil', @@ -228,7 +228,7 @@ minetest.register_node('everness:dirt_1_soil_wet', { }, drop = 'everness:dirt_1', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:dirt_1', dry = 'everness:dirt_1_soil', @@ -244,7 +244,7 @@ minetest.register_node('everness:crystal_dirt_soil_wet', { }, drop = 'everness:crystal_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:crystal_dirt', dry = 'everness:crystal_dirt_soil', @@ -260,7 +260,7 @@ minetest.register_node('everness:crystal_cave_dirt_soil_wet', { }, drop = 'everness:crystal_cave_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:crystal_cave_dirt', dry = 'everness:crystal_cave_dirt_soil', @@ -276,7 +276,7 @@ minetest.register_node('everness:cursed_dirt_soil_wet', { }, drop = 'everness:cursed_dirt', groups = { crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1 }, - sounds = default.node_sound_dirt_defaults(), + sounds = Everness.node_sound_dirt_defaults(), soil = { base = 'everness:cursed_dirt', dry = 'everness:cursed_dirt_soil', diff --git a/settingtypes.txt b/settingtypes.txt index d8c40e1..9024572 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -34,7 +34,19 @@ everness_coral_forest_ocean (Coral Forest Ocean) bool true everness_coral_forest_ocean_y_max (y max) int 3 # Lower limit for biome. -everness_coral_forest_ocean_y_min (y min) int -255 +everness_coral_forest_ocean_y_min (y min) int -10 + +[*Coral Forest Deep Ocean] + +# Enable/ Disable Coral Forest Deep Ocean Biome +# Disabling this biome might result in missing recipes. +everness_coral_forest_deep_ocean (Coral Forest Deep Ocean) bool true + +# Upper limit for biome. +everness_coral_forest_deep_ocean_y_max (y max) int -11 + +# Lower limit for biome. +everness_coral_forest_deep_ocean_y_min (y min) int -255 [*Coral Forest Under] @@ -130,7 +142,19 @@ everness_cursed_lands_ocean (Cursed Lands Ocean) bool true everness_cursed_lands_ocean_y_max (y max) int -2 # Lower limit for biome. -everness_cursed_lands_ocean_y_min (y min) int -255 +everness_cursed_lands_ocean_y_min (y min) int -10 + +[*Cursed Lands Deep Ocean] + +# Enable/ Disable Cursed Lands Deep Ocean Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands_deep_ocean (Cursed Lands Deep Ocean) bool true + +# Upper limit for biome. +everness_cursed_lands_deep_ocean_y_max (y max) int -11 + +# Lower limit for biome. +everness_cursed_lands_deep_ocean_y_min (y min) int -255 [*Cursed Lands Under] @@ -190,7 +214,19 @@ everness_crystal_forest_ocean (Crystal Forest Ocean) bool true everness_crystal_forest_ocean_y_max (y max) int -2 # Lower limit for biome. -everness_crystal_forest_ocean_y_min (y min) int -255 +everness_crystal_forest_ocean_y_min (y min) int -10 + +[*Crystal Forest Deep Ocean] + +# Enable/ Disable Crystal Forest Deep Ocean Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest_deep_ocean (Crystal Forest Deep Ocean) bool true + +# Upper limit for biome. +everness_crystal_forest_deep_ocean_y_max (y max) int -11 + +# Lower limit for biome. +everness_crystal_forest_deep_ocean_y_min (y min) int -255 [*Crystal Forest Under] diff --git a/stairs.lua b/stairs.lua index 213f802..3edb431 100644 --- a/stairs.lua +++ b/stairs.lua @@ -275,15 +275,17 @@ stairs.register_stair_and_slab( 'magmacobble', 'everness:magmacobble', { cracky = 3, stone = 1 }, - {{ - name = 'everness_magmacobble_animated.png', - animation = { - type = 'vertical_frames', - aspect_w = 16, - aspect_h = 16, - length = 3.0, - }, - }}, + { + { + name = 'everness_magmacobble_animated.png', + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + } + }, S('Magma Cobblestone Stair'), S('Magma Cobblestone Slab'), default.node_sound_stone_defaults(), @@ -323,3 +325,180 @@ stairs.register_stair_and_slab( default.node_sound_stone_defaults(), true ) + +-- Coral Forest Deep Ocean + +stairs.register_stair_and_slab( + 'coral_deep_ocean_sandstone_block', + 'everness:coral_deep_ocean_sandstone_block', + { cracky = 2 }, + { 'everness_deep_ocean_sandstone_block.png' }, + S('Coral Depp Ocean Sandstone Block Stair'), + S('Coral Depp Ocean Sandstone Block Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_deep_ocean_sandstone_brick', + 'everness:coral_deep_ocean_sandstone_brick', + { cracky = 2 }, + { 'everness_deep_ocean_sandstone_brick.png' }, + S('Coral Depp Ocean Sandstone Brick Stair'), + S('Coral Depp Ocean Sandstone Brick Slab'), + default.node_sound_stone_defaults(), + true +) + +-- Coral White Sandstone + +stairs.register_stair_and_slab( + 'coral_white_sandstone', + 'everness:coral_white_sandstone', + { cracky = 2 }, + { 'everness_coral_white_sandstone.png' }, + S('Coral White Sandstone Stair'), + S('Coral White Sandstone Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_white_sandstone_pillar', + 'everness:coral_white_sandstone_pillar', + { cracky = 2 }, + { + 'everness_coral_white_sandstone.png', + 'everness_coral_white_sandstone.png', + 'everness_coral_white_sandstone_pillar.png', + }, + S('Coral White Sandstone Pillar Stair'), + S('Coral White Sandstone Pillar Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_white_sandstone_brick', + 'everness:coral_white_sandstone_brick', + { cracky = 2 }, + { 'everness_coral_white_sandstone_brick.png' }, + S('Coral White Sandstone Brick Stair'), + S('Coral White Sandstone Brick Slab'), + default.node_sound_stone_defaults(), + true +) + +-- Coral Desert Stone + +stairs.register_stair_and_slab( + 'coral_desert_stone_block', + 'everness:coral_desert_stone_block', + { cracky = 2 }, + { 'everness_coral_desert_stone_block.png' }, + S('Coral Desert Stone Block Stair'), + S('Coral Desert Stone Block Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_desert_stone_brick', + 'everness:coral_desert_stone_brick', + { cracky = 2 }, + { 'everness_coral_desert_stone_brick.png' }, + S('Coral Desert Stone Brick Stair'), + S('Coral Desert Stone Brick Slab'), + default.node_sound_stone_defaults(), + true +) + +-- Coral Sandstone + +stairs.register_stair_and_slab( + 'coral_sandstone', + 'everness:coral_sandstone', + { cracky = 2 }, + { 'everness_coral_sandstone.png' }, + S('Coral Sandstone Stair'), + S('Coral Sandstone Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_sandstone_brick', + 'everness:coral_sandstone_brick', + { cracky = 2 }, + { 'everness_coral_sandstone_brick.png' }, + S('Coral Sandstone Brick Stair'), + S('Coral Sandstone Brick Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_sandstone_chiseled', + 'everness:coral_sandstone_chiseled', + { cracky = 2 }, + { 'everness_coral_sandstone_chiseled.png' }, + S('Coral Sandstone Chiseled Stair'), + S('Coral Sandstone Chiseled Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'coral_sandstone_carved_1', + 'everness:coral_sandstone_carved_1', + { cracky = 2 }, + { 'everness_coral_sandstone_carved_1.png' }, + S('Coral Sandstone Carved Stair'), + S('Coral Sandstone Carved Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'cursed_lands_deep_ocean_sandstone_block', + 'everness:cursed_lands_deep_ocean_sandstone_block', + { cracky = 2 }, + { 'everness_cursed_lands_deep_ocean_sandblock.png' }, + S('Cursed Lands Deep Ocean Sandstone Block Stair'), + S('Cursed Lands Deep Ocean Sandstone Block Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'cursed_lands_deep_ocean_sandstone_brick', + 'everness:cursed_lands_deep_ocean_sandstone_brick', + { cracky = 2 }, + { 'everness_cursed_lands_deep_ocean_sand_brick.png' }, + S('Cursed Lands Deep Ocean Sandstone Brick Stair'), + S('Cursed Lands Deep Ocean Sandstone Brick Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'crystal_forest_deep_ocean_sandstone_block', + 'everness:crystal_forest_deep_ocean_sandstone_block', + { cracky = 2 }, + { 'everness_crystal_forest_deep_ocean_sandstone_block.png' }, + S('Crystal Forest Deep Ocean Sandstone Block Stair'), + S('Crystal Forest Deep Ocean Sandstone Block Slab'), + default.node_sound_stone_defaults(), + true +) + +stairs.register_stair_and_slab( + 'crystal_forest_deep_ocean_sandstone_brick', + 'everness:crystal_forest_deep_ocean_sandstone_brick', + { cracky = 2 }, + { 'everness_crystal_forest_deep_ocean_sandstone_brick.png' }, + S('Crystal Forest Deep Ocean Sandstone Brick Stair'), + S('Crystal Forest Deep Ocean Sandstone Brick Slab'), + default.node_sound_stone_defaults(), + true +) diff --git a/tools.lua b/tools.lua index fefcc28..326e239 100644 --- a/tools.lua +++ b/tools.lua @@ -22,12 +22,14 @@ minetest.register_tool('everness:vine_shears', { description = S('Vine Shears'), inventory_image = 'everness_vine_shears.png', wield_image = 'everness_vine_shears.png', + wield_scale = { x = 2, y = 2, z = 1 }, + sound = { breaks = 'default_tool_breaks' }, tool_capabilities = { full_punch_interval = 1.0, max_drop_level = 0, groupcaps = { - snappy = { times = { [3] = 0.2 }, uses = 60, maxlevel = 3 }, - wool = { times = { [3] = 0.2 }, uses = 60, maxlevel = 3 } + snappy = { times = { [3] = 0.2 }, uses = 30, maxlevel = 3 }, + wool = { times = { [3] = 0.2 }, uses = 30, maxlevel = 3 } } }, }) @@ -41,7 +43,7 @@ minetest.register_tool('everness:pick_illuminating', { full_punch_interval = 0.9, max_drop_level = 3, groupcaps = { - cracky = { times = { [1] = 2.0, [2] = 1.0, [3] = 0.50 }, uses = 60, maxlevel = 3 } + cracky = { times = { [1] = 2.0,[2] = 1.0,[3] = 0.50 }, uses = 60, maxlevel = 3 } }, damage_groups = { fleshy = 5 }, }, @@ -133,17 +135,20 @@ minetest.register_tool('everness:shovel_silk', { full_punch_interval = 1.0, max_drop_level = 1, groupcaps = { - crumbly = { times = { [1] = 1.10, [2] = 0.50, [3] = 0.30 }, uses = 30, maxlevel = 3 }, + crumbly = { times = { [1] = 1.10,[2] = 0.50,[3] = 0.30 }, uses = 30, maxlevel = 3 }, }, damage_groups = { fleshy = 4 }, }, - sound = { breaks = 'default_tool_breaks' }, + sound = { + breaks = 'default_tool_breaks' + }, -- no `shovel` group so it cannot be enchanted -- groups = { shovel = 1 } }) local old_handle_node_drops = minetest.handle_node_drops +---@diagnostic disable-next-line: duplicate-set-field function minetest.handle_node_drops(pos, drops, digger) if not digger or not digger:is_player() @@ -164,3 +169,27 @@ function minetest.handle_node_drops(pos, drops, digger) return old_handle_node_drops(pos, drops, digger) end + +minetest.register_tool('everness:shell_of_underwater_breathing', { + description = S('Shell of Underwater Breating'), + inventory_image = 'everness_shell_of_underwarer_breathing.png', + wield_image = 'everness_shell_of_underwarer_breathing.png', + wield_scale = { x = 2, y = 2, z = 1 }, + tool_capabilities = { + full_punch_interval = 0.9, + max_drop_level = 0, + groupcaps = { + crumbly = { times = { [2] = 3.00,[3] = 0.70 }, uses = 0, maxlevel = 1 }, + snappy = { times = { [3] = 0.40 }, uses = 0, maxlevel = 1 }, + oddly_breakable_by_hand = { times = { [1] = 3.50,[2] = 2.00,[3] = 0.70 }, uses = 0 } + }, + damage_groups = { fleshy = 1 }, + }, + sound = { breaks = 'default_tool_breaks' }, + on_place = function(itemstack, placer, pointed_thing) + return Everness:use_shell_of_underwater_breathing(itemstack, placer, pointed_thing) + end, + on_secondary_use = function(itemstack, user, pointed_thing) + return Everness:use_shell_of_underwater_breathing(itemstack, user, pointed_thing) + end +})