Add deep ocean biomes

This commit is contained in:
Juraj Vajda 2023-03-18 12:24:42 -04:00
parent 7e8478ccea
commit 07718f6e04
12 changed files with 1499 additions and 111 deletions

View File

@ -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

145
api.lua
View File

@ -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

View File

@ -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
--

View File

@ -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
})

View File

@ -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

View File

@ -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)

View File

@ -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'

701
nodes.lua
View File

@ -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,
})

View File

@ -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',

View File

@ -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]

View File

@ -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
)

View File

@ -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
})