1
0
mirror of https://codeberg.org/tenplus1/ambience.git synced 2025-07-15 06:50:25 +02:00

Compare commits

...

6 Commits

7 changed files with 186 additions and 235 deletions

View File

@ -21,5 +21,6 @@ Based on Immersive Sounds .36 mod by Neuromancer and optimized to run on servers
- 1.6 - Finding env_sounds disables water and lava sets, added 'ambience_water_move' flag to override water walking sounds, use eye level for head node.
- 1.7 - Music will play every 20-30 minutes if found, use '/mvol 0' to stop playing music or disable in-game.
- 1.8 - Players can set induvidual volume for sound and music which is saved.
- 1.9 - Tidy code, refactor music playing, add biome name to sound_check.
Code license: MIT

View File

@ -27,6 +27,7 @@ ambience.add_set(set_name, def)
'positions' position data for every node found
'head_node' name of node at player head level
'feet_node' nameof node at player foot level
'biome' name of biome at current position
This will let you add a set or sounds with the frequency it's used and check
function for it to play. If ephemeral is true then no handler will be used and sound will be played in background alongside other sounds.
@ -80,7 +81,7 @@ Additional Commands
Two volume commands have been added to set sound and music volume:
/svol (0.1 to 1.0)
/mvol (0.1 to 1.0) -- 0 can be used to stop music from playing when it begins
/mvol (0.1 to 1.0) -- 0 can be used to stop music curently playing
Music
@ -88,4 +89,5 @@ Music
Music can be stored in the sounds folder either on server or locally and so long
as it is named 'ambience_music.1', 'ambience_music.2' etc. then it will select
a song randomly at midnight and play player.
a song randomly to play every 20 minutes.

149
init.lua
View File

@ -1,11 +1,14 @@
-- global
ambience = {}
-- settings
local SOUNDVOLUME = 1.0
local MUSICVOLUME = 0.6
local MUSICINTERVAL = 60 * 20
local play_music = minetest.settings:get_bool("ambience_music") ~= false
local pplus = minetest.get_modpath("playerplus")
local radius = 6
local playing = {}
local sound_sets = {} -- all the sounds and their settings
@ -13,14 +16,14 @@ local sound_set_order = {} -- needed because pairs loops randomly through tables
local set_nodes = {} -- all the nodes needed for sets
-- translation
local S = minetest.get_translator("ambience")
-- add set to list
ambience.add_set = function(set_name, def)
if not set_name or not def then
return
end
if not set_name or not def then return end
sound_sets[set_name] = {
frequency = def.frequency or 50,
@ -34,14 +37,10 @@ ambience.add_set = function(set_name, def)
for i = 1, #sound_set_order do
if sound_set_order[i] == set_name then
can_add = false
end
if sound_set_order[i] == set_name then can_add = false end
end
if can_add then
table.insert(sound_set_order, set_name)
end
if can_add then table.insert(sound_set_order, set_name) end
-- add any missing nodes to the set_nodes table
if def.nodes then
@ -52,26 +51,22 @@ ambience.add_set = function(set_name, def)
for j = 1, #set_nodes do
if def.nodes[i] == set_nodes[j] then
can_add = false
end
if def.nodes[i] == set_nodes[j] then can_add = false end
end
if can_add then
table.insert(set_nodes, can_add)
end
if can_add then table.insert(set_nodes, can_add) end
end
end
end
-- return set from list using name
ambience.get_set = function(set_name)
return sound_sets[set_name]
end
-- remove set from list
ambience.del_set = function(set_name)
sound_sets[set_name] = nil
@ -80,79 +75,58 @@ ambience.del_set = function(set_name)
for i = 1, #sound_set_order do
if sound_set_order[i] == set_name then
can_del = i
end
if sound_set_order[i] == set_name then can_del = i end
end
if can_del then
table.remove(sound_set_order, can_del)
end
if can_del then table.remove(sound_set_order, can_del) end
end
-- setup table when player joins
minetest.register_on_joinplayer(function(player)
if player then
local name = player:get_player_name()
playing[name] = {music = -1}
local mvol, svol
local meta = player:get_meta()
mvol = meta:get_string("ambience.mvol")
svol = meta:get_string("ambience.svol")
mvol = tonumber(mvol) or MUSICVOLUME
svol = tonumber(svol) or SOUNDVOLUME
playing[name].mvol = mvol
playing[name].svol = svol
playing[name] = {
mvol = tonumber(meta:get_string("ambience.mvol")) or MUSICVOLUME,
svol = tonumber(meta:get_string("ambience.svol")) or SOUNDVOLUME,
music = 0,
music_handler = nil
}
end
end)
-- remove table when player leaves
minetest.register_on_leaveplayer(function(player)
if player then
playing[player:get_player_name()] = nil
end
if player then playing[player:get_player_name()] = nil end
end)
-- plays music and selects sound set
local get_ambience = function(player, tod, name)
-- play server or local music if music enabled and music not already playing
if play_music
and playing[name] and playing[name].music < 0
and playing[name].mvol > 0 then
-- if enabled and not already playing, play local/server music on interval check
if play_music and playing[name] and playing[name].mvol > 0 then
-- count backwards
playing[name].music = playing[name].music -1
-- increase music interval
playing[name].music = playing[name].music + 1
-- play music every 20 minutes
if playing[name].music < -(60 * 20) then
-- play music on interval check
if playing[name].music > MUSICINTERVAL and playing[name].music_handler == nil then
playing[name].music = minetest.sound_play("ambience_music", {
playing[name].music_handler = minetest.sound_play("ambience_music", {
to_player = name,
gain = playing[name].mvol
})
-- reset music timer after 10 minutes
minetest.after(60 * 10, function(name)
if playing[name] then
playing[name].music = -1
end
end, name)
playing[name].music = 0 -- reset interval
end
--print("-- music count", playing[name].music)
--print("-- music timer", playing[name].music .. "/" .. MUSICINTERVAL)
end
-- get foot and head level nodes at player position
@ -160,15 +134,13 @@ local get_ambience = function(player, tod, name)
local prop = player:get_properties()
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
pos.y = pos.y + eyeh
pos.y = pos.y + eyeh -- head level
local nod_head = pplus and name and playerplus[name]
and playerplus[name].nod_head or minetest.get_node(pos).name
local nod_head = minetest.get_node(pos).name
pos.y = (pos.y - eyeh) + 0.2 -- foot level
local nod_feet = pplus and name and playerplus[name]
and playerplus[name].nod_feet or minetest.get_node(pos).name
local nod_feet = minetest.get_node(pos).name
pos.y = pos.y - 0.2 -- reset pos
@ -177,13 +149,17 @@ local get_ambience = function(player, tod, name)
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
-- loop through sets in order and choose first that meets it's conditions
-- loop through sets in order and choose first that meets conditions set
for n = 1, #sound_set_order do
local set = sound_sets[ sound_set_order[n] ]
if set and set.sound_check then
-- get biome data
local bdata = minetest.get_biome_data(pos)
local biome = bdata and minetest.get_biome_name(bdata.biome) or ""
-- pass settings to function for condition check
local set_name, gain = set.sound_check({
player = player,
@ -192,17 +168,16 @@ local get_ambience = function(player, tod, name)
totals = cn,
positions = ps,
head_node = nod_head,
feet_node = nod_feet
feet_node = nod_feet,
biome = biome
})
-- if conditions met return set name and gain value
if set_name then
return set_name, gain
end
if set_name then return set_name, gain end
end
end
return nil, nil -- ADDED
return nil, nil
end
@ -210,6 +185,7 @@ local timer = 0
local random = math.random
-- players routine
minetest.register_globalstep(function(dtime)
-- one second timer
@ -225,12 +201,8 @@ minetest.register_globalstep(function(dtime)
player_name = player:get_player_name()
--local t1 = os.clock()
local set_name, MORE_GAIN = get_ambience(player, tod, player_name)
--print(string.format("elapsed time: %.4f\n", os.clock() - t1))
ok = playing[player_name] -- everything starts off ok if player found
-- are we playing something already?
@ -258,9 +230,8 @@ minetest.register_globalstep(function(dtime)
-- if chance is lower than set frequency then select set
if ok and set_name and chance < sound_sets[set_name].frequency then
-- choose random sound from set
number = random(#sound_sets[set_name].sounds)
ambience = sound_sets[set_name].sounds[number]
number = random(#sound_sets[set_name].sounds) -- choose random sound from set
ambience = sound_sets[set_name].sounds[number] -- grab sound information
-- play sound
handler = minetest.sound_play(ambience.name, {
@ -286,9 +257,7 @@ minetest.register_globalstep(function(dtime)
minetest.after(ambience.length, function(handler, player_name)
--print("-- timed stop", set_name, handler)
if handler then
minetest.sound_stop(handler)
end
if handler then minetest.sound_stop(handler) end
-- reset variables if handlers match
if playing[player_name]
@ -306,8 +275,8 @@ minetest.register_globalstep(function(dtime)
end
end)
-- sound volume command
minetest.register_chatcommand("svol", {
params = S("<svol>"),
description = S("set sound volume (0.1 to 1.0)"),
@ -331,8 +300,8 @@ minetest.register_chatcommand("svol", {
end
})
-- music volume command (0 stops music)
minetest.register_chatcommand("mvol", {
params = S("<mvol>"),
description = S("set music volume (0.1 to 1.0, 0 to stop music)"),
@ -342,13 +311,14 @@ minetest.register_chatcommand("mvol", {
local mvol = tonumber(param) or playing[name].mvol
-- ability to stop music by setting volume to 0
if mvol == 0 and playing[name].music
and playing[name].music >= 0 then
-- stop music currently playing by setting volume to 0
if mvol == 0 and playing[name].music_handler then
minetest.sound_stop(playing[name].music)
minetest.sound_stop(playing[name].music_handler)
playing[name].music = -1
playing[name].music_handler = nil
minetest.chat_send_player(name, S("Music stopped!"))
end
if mvol < 0 then mvol = 0 end
@ -365,9 +335,10 @@ minetest.register_chatcommand("mvol", {
end
})
-- load default sound sets
dofile(minetest.get_modpath("ambience") .. "/soundsets.lua")
print("[MOD] Ambience Lite loaded")

7
locale/ambience.es.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain: ambience
<svol>=<volumen de sonido>
set sound volume (0.1 to 1.0)=establecer volumen de sonido (0.1 a 1.0)
Sound volume set to @1=Volumen de sonido establecido a @1
<mvol>=<volumen de música>
set music volume (0.1 to 1.0, 0 to stop music)=establecer volumen de música (0.1 a 1.0, 0 para detener la música)
Music volume set to @1=Volumen de música establecido a @1

View File

@ -1,5 +1,4 @@
name = ambience
description = Adds realistic sound effects into your world.
depends = default
optional_depends = fire, playerplus
optional_depends = default, mcl_core, mclx_core
min_minetest_version = 5.0

Binary file not shown.

View File

@ -2,10 +2,15 @@
Default Sound Sets
------------------
Order is very important when adding a sound set so it will play a certain
set of sounds before any another.
Order is very important when adding a sound set so it will play
certain sound sets before any another.
--]]
-- mod support
local mod_def = minetest.get_modpath("default")
local mod_mcl = minetest.get_modpath("mcl_core")
-- Underwater sounds play when player head is submerged
ambience.add_set("underwater", {
@ -18,8 +23,9 @@ ambience.add_set("underwater", {
sound_check = function(def)
if minetest.registered_nodes[def.head_node]
and minetest.registered_nodes[def.head_node].groups.water then
local nodef = minetest.registered_nodes[def.head_node]
if nodef and nodef.groups and nodef.groups.water then
return "underwater"
end
end
@ -29,34 +35,42 @@ ambience.add_set("underwater", {
if minetest.settings:get_bool("ambience_water_move") ~= false then
-- override default water sounds
minetest.override_item("default:water_source", { sounds = {} })
minetest.override_item("default:water_flowing", { sounds = {} })
minetest.override_item("default:river_water_source", { sounds = {} })
minetest.override_item("default:river_water_flowing", { sounds = {} })
-- override default water sounds
ambience.add_set("splash", {
if mod_def then
minetest.override_item("default:water_source", { sounds = {} })
minetest.override_item("default:water_flowing", { sounds = {} })
minetest.override_item("default:river_water_source", { sounds = {} })
minetest.override_item("default:river_water_flowing", { sounds = {} })
elseif mod_mcl then
minetest.override_item("mcl_core:water_source", { sounds = {} })
minetest.override_item("mcl_core:water_flowing", { sounds = {} })
minetest.override_item("mclx_core:river_water_source", { sounds = {} })
minetest.override_item("mclx_core:river_water_flowing", { sounds = {} })
end
frequency = 1000,
ambience.add_set("splash", {
sounds = {
{name = "default_water_footstep", length = 2}
},
frequency = 1000,
sound_check = function(def)
sounds = {
{name = "default_water_footstep", length = 2}
},
if minetest.registered_nodes[def.feet_node]
and minetest.registered_nodes[def.feet_node].groups.water then
sound_check = function(def)
local control = def.player:get_player_control()
local nodef = minetest.registered_nodes[def.feet_node]
if control.up or control.down or control.left or control.right then
return "splash"
if nodef and nodef.groups and nodef.groups.water then
local control = def.player:get_player_control()
if control.up or control.down or control.left or control.right then
return "splash"
end
end
end
end
})
})
end
-- check for env_sounds mod, if not found enable water flowing and lava sounds
@ -72,18 +86,16 @@ ambience.add_set("flowing_water", {
{name = "waterfall", length = 6}
},
nodes = {"default:water_flowing"},
nodes = {"group:water"},
sound_check = function(def)
local c = (def.totals["default:water_flowing"] or 0)
+ (def.totals["mcl_core:water_flowing"] or 0)
if c > 40 then
return "flowing_water", 0.5
if c > 40 then return "flowing_water", 0.5
elseif c > 5 then
return "flowing_water"
end
elseif c > 5 then return "flowing_water" end
end
})
@ -97,18 +109,14 @@ ambience.add_set("river", {
{name = "river", length = 4, gain = 0.1}
},
nodes = {"default:river_water_flowing"},
sound_check = function(def)
local c = (def.totals["default:river_water_flowing"] or 0)
+ (def.totals["mclx_core:river_water_flowing"] or 0)
if c > 20 then
return "river", 0.5
if c > 20 then return "river", 0.5
elseif c > 5 then
return "river"
end
elseif c > 5 then return "river" end
end
})
@ -122,88 +130,23 @@ ambience.add_set("lava", {
{name = "lava", length = 7}
},
nodes = {"default:lava_source", "default:lava_flowing"},
nodes = {"group:lava"},
sound_check = function(def)
local c = (def.totals["default:lava_source"] or 0)
+ (def.totals["default:lava_flowing"] or 0)
+ (def.totals["mcl_core:lava_source"] or 0)
+ (def.totals["mcl_core:lava_flowing"] or 0)
if c > 20 then
return "lava", 0.5
if c > 20 then return "lava", 0.5
elseif c > 5 then
return "lava"
end
elseif c > 5 then return "lava" end
end
})
else
print ("[MOD] Ambience - found env_sounds, flowing water and lava sounds disabled.")
end
-- Only add fire sounds set if flame_sound is disabled or fire redo active
local flame_sound = minetest.settings:get_bool("flame_sound", true)
local fire_redo = minetest.get_modpath("fire") and fire.mod and fire.mod == "redo"
if flame_sound and not fire_redo then
print ("[MOD] Ambience - fire sounds not enabled, already active in fire mod.")
else
-- Small fire sound plays when near lower than 9 flames
ambience.add_set("smallfire", {
frequency = 1000,
sounds = {
{name = "fire_small", length = 6, gain = 0.1}
},
nodes = {"fire:basic_flame", "fire:permanent_flame"},
sound_check = function(def)
local c = (def.totals["fire:basic_flame"] or 0)
+ (def.totals["fire:permanent_flame"] or 0)
if c > 5 and c < 9 then
return "smallfire", 0.5
elseif c > 0 and c < 9 then
return "smallfire"
end
end
})
-- Large fire sound plays when near more than 9 flames
ambience.add_set("largefire", {
frequency = 1000,
sounds = {
{name = "fire_large", length = 8, gain = 0.4}
},
sound_check = function(def)
-- fire nodes were added in last set, so don't need to be added in this one
local c = (def.totals["fire:basic_flame"] or 0)
+ (def.totals["fire:permanent_flame"] or 0)
if c > 20 then
return "largefire", 0.5
elseif c > 8 then
return "largefire"
end
end
})
print ("[MOD] Ambience - found env_sounds, using for water and lava sounds.")
end
-- Beach sounds play when below y-pos 6 and 150+ water source found
@ -214,16 +157,16 @@ ambience.add_set("beach", {
sounds = {
{name = "seagull", length = 4.5, ephemeral = true},
{name = "seagull", length = 4.5, pitch = 1.2, ephemeral = true},
{name = "beach", length = 13},
{name = "gull", length = 1, ephemeral = true},
{name = "beach_2", length = 6}
},
nodes = {"default:water_source"},
sound_check = function(def)
local c = (def.totals["default:water_source"] or 0)
+ (def.totals["mcl_core:water_source"] or 0)
if def.pos.y < 6 and def.pos.y > 0 and c > 150 then
return "beach"
@ -238,20 +181,20 @@ ambience.add_set("ice", {
frequency = 250,
sounds = {
{name = "icecrack", length = 5, gain = 0.7},
{name = "icecrack", length = 5, gain = 1.1},
{name = "desertwind", length = 8},
{name = "wind", length = 9}
},
nodes = {"default:ice"},
nodes = (mod_mcl and {"mcl_core:ice", "mcl_core:packed_ice"} or {"default:ice"}),
sound_check = function(def)
local c = (def.totals["default:ice"] or 0)
+(def.totals["mcl_core:ice"] or 0)
+ (def.totals["mcl_core:packed_ice"] or 0)
if c > 100 then
return "ice"
end
if c > 100 then return "ice" end
end
})
@ -267,16 +210,19 @@ ambience.add_set("desert", {
{name = "desertwind", length = 8}
},
nodes = {"default:desert_sand", "default:sand"},
nodes = {
(mod_mcl and "mcl_core:redsand" or "default:desert_sand"),
(mod_mcl and "mcl_core:sand" or "default:sand")
},
sound_check = function(def)
local c = (def.totals["default:desert_sand"] or 0)
+ (def.totals["default:sand"] or 0)
+ (def.totals["mcl_core:sand"] or 0)
+ (def.totals["mcl_core:redsand"] or 0)
if c > 150 and def.pos.y > 10 then
return "desert"
end
if c > 150 and def.pos.y > 10 then return "desert" end
end
})
@ -289,16 +235,17 @@ ambience.add_set("cave", {
sounds = {
{name = "drippingwater1", length = 1.5, ephemeral = true},
{name = "drippingwater2", length = 1.5, ephemeral = true},
{name = "drippingwater2", length = 1.5, pitch = 1.2, ephemeral = true},
{name = "drippingwater2", length = 1.5, pitch = 1.4, ephemeral = true},
{name = "bats", length = 5, ephemeral = true}
},
sound_check = function(def)
local c = (def.totals["default:water_source"] or 0)
+ (def.totals["mcl_core:water_source"] or 0)
if c > 0 and def.pos.y < -25 then
return "cave"
end
if c > 0 and def.pos.y < -25 then return "cave" end
end
})
@ -313,18 +260,18 @@ ambience.add_set("jungle", {
{name = "deer", length = 7, ephemeral = true},
{name = "canadianloon2", length = 14},
{name = "bird1", length = 11},
{name = "peacock", length = 2, ephemeral = true}
{name = "peacock", length = 2, ephemeral = true},
{name = "peacock", length = 2, pitch = 1.2, ephemeral = true}
},
nodes = {"default:jungletree"},
nodes = {(mod_mcl and "mcl_trees:tree_jungle" or "default:jungletree")},
sound_check = function(def)
local c = (def.totals["default:jungletree"] or 0)
+ (def.totals["mcl_trees:tree_jungle"] or 0)
if def.tod > 0.2 and def.tod < 0.8 and c > 90 then
return "jungle"
end
if def.tod > 0.2 and def.tod < 0.8 and c > 79 then return "jungle" end
end
})
@ -338,17 +285,17 @@ ambience.add_set("jungle_night", {
{name = "jungle_night_1", length = 4, ephemeral = true},
{name = "jungle_night_2", length = 4, ephemeral = true},
{name = "deer", length = 7, ephemeral = true},
{name = "frog", length = 1, ephemeral = true}
{name = "frog", length = 1, ephemeral = true},
{name = "frog", length = 1, pitch = 1.3, ephemeral = true}
},
sound_check = function(def)
-- jungle tree was added in last set, so doesnt need to be added in this one
local c = (def.totals["default:jungletree"] or 0)
+ (def.totals["mcl_trees:tree_jungle"] or 0)
if (def.tod < 0.2 or def.tod > 0.8) and c > 90 then
return "jungle_night"
end
if (def.tod < 0.2 or def.tod > 0.8) and c > 79 then return "jungle_night" end
end
})
@ -363,10 +310,13 @@ ambience.add_set("day", {
{name = "craw", length = 3, ephemeral = true},
{name = "bluejay", length = 6, ephemeral = true},
{name = "robin", length = 4, ephemeral = true},
{name = "robin", length = 4, pitch = 1.2, ephemeral = true},
{name = "bird1", length = 11},
{name = "bird2", length = 6, ephemeral = true},
{name = "crestedlark", length = 6, ephemeral = true},
{name = "crestedlark", length = 6, pitch = 1.1, ephemeral = true},
{name = "peacock", length = 2, ephemeral = true},
{name = "peacock", length = 2, pitch = 1.2, ephemeral = true},
{name = "wind", length = 9}
},
@ -379,10 +329,19 @@ ambience.add_set("day", {
+ (def.totals["default:bush_leaves"] or 0)
+ (def.totals["default:pine_needles"] or 0)
+ (def.totals["default:aspen_leaves"] or 0)
+ (def.totals["mcl_trees:leaves_spruce"] or 0)
+ (def.totals["mcl_trees:leaves_oak"] or 0)
+ (def.totals["mcl_trees:leaves_mangrove"] or 0)
+ (def.totals["mcl_trees:leaves_birch"] or 0)
+ (def.totals["mcl_trees:leaves_acacia"] or 0)
+ (def.totals["ethereal:birch_leaves"] or 0)
+ (def.totals["ethereal:lemon_leaves"] or 0)
+ (def.totals["ethereal:olive_leaves"] or 0)
+ (def.totals["ethereal:redwood_leaves"] or 0)
+ (def.totals["ethereal:sakura_leaves"] or 0)
+ (def.totals["ethereal:sakura_leaves2"] or 0)
if (def.tod > 0.2 and def.tod < 0.8)
and def.pos.y > -10
and c > 5 then
if (def.tod > 0.2 and def.tod < 0.8) and def.pos.y > -10 and c > 5 then
return "day"
end
end
@ -396,10 +355,12 @@ ambience.add_set("night", {
sounds = {
{name = "hornedowl", length = 2, ephemeral = true},
{name = "hornedowl", length = 2, pitch = 1.1, ephemeral = true},
{name = "wolves", length = 4, gain = 0.4, ephemeral = true},
{name = "cricket", length = 6, ephemeral = true},
{name = "deer", length = 7, ephemeral = true},
{name = "frog", length = 1, ephemeral = true}
{name = "frog", length = 1, ephemeral = true},
{name = "frog", length = 1, pitch = 1.2, ephemeral = true}
},
sound_check = function(def)
@ -409,10 +370,19 @@ ambience.add_set("night", {
+ (def.totals["default:bush_leaves"] or 0)
+ (def.totals["default:pine_needles"] or 0)
+ (def.totals["default:aspen_leaves"] or 0)
+ (def.totals["mcl_trees:leaves_spruce"] or 0)
+ (def.totals["mcl_trees:leaves_oak"] or 0)
+ (def.totals["mcl_trees:leaves_mangrove"] or 0)
+ (def.totals["mcl_trees:leaves_birch"] or 0)
+ (def.totals["mcl_trees:leaves_acacia"] or 0)
+ (def.totals["ethereal:birch_leaves"] or 0)
+ (def.totals["ethereal:lemon_leaves"] or 0)
+ (def.totals["ethereal:olive_leaves"] or 0)
+ (def.totals["ethereal:redwood_leaves"] or 0)
+ (def.totals["ethereal:sakura_leaves"] or 0)
+ (def.totals["ethereal:sakura_leaves2"] or 0)
if (def.tod < 0.2 or def.tod > 0.8)
and def.pos.y > -10
and c > 5 then
if (def.tod < 0.2 or def.tod > 0.8) and def.pos.y > -10 and c > 5 then
return "night"
end
end
@ -426,17 +396,18 @@ ambience.add_set("high_up", {
sounds = {
{name = "desertwind", length = 8},
{name = "wind", length = 9}
{name = "desertwind", length = 8, pitch = 1.3},
{name = "wind", length = 9},
{name = "wind", length = 9, pitch = 1.4}
},
nodes = {"default:snowblock"},
nodes = {(mod_mcl and "mcl_core:snowblock" or "default:snowblock")},
sound_check = function(def)
local c = (def.totals["default:snowblock"] or 0)
+ (def.totals["mcl_core:snowblock"] or 0)
if def.pos.y > 50 or c > 150 then
return "high_up"
end
if def.pos.y > 50 or c > 100 then return "high_up" end
end
})