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

Compare commits

...

5 Commits

Author SHA1 Message Date
f7d54237f6 add join/leave nil checks, use pairs for player loop 2021-11-20 08:21:38 +00:00
4acc464a8a add nil check for eye level 2021-10-29 07:36:23 +01:00
e19fca8446 fix nil check 2021-07-13 16:05:42 +01:00
d0cea9d033 play cave drips when near water 2021-07-05 09:11:21 +01:00
19673910d9 increase gain for ice crack 2021-07-03 14:08:28 +01:00
2 changed files with 18 additions and 10 deletions

View File

@ -91,12 +91,16 @@ end
-- setup table when player joins -- setup table when player joins
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
playing[player:get_player_name()] = {music = -1} if player then
playing[player:get_player_name()] = {music = -1}
end
end) end)
-- remove table when player leaves -- remove table when player leaves
minetest.register_on_leaveplayer(function(player) minetest.register_on_leaveplayer(function(player)
playing[player:get_player_name()] = nil if player then
playing[player:get_player_name()] = nil
end
end) end)
@ -104,7 +108,8 @@ end)
local get_ambience = function(player, tod, name) local get_ambience = function(player, tod, name)
-- play server or local music if music enabled and music not already playing -- play server or local music if music enabled and music not already playing
if play_music and MUSICVOLUME > 0 and playing[name].music < 0 then if play_music and MUSICVOLUME > 0
and playing[name] and playing[name].music < 0 then
-- count backwards -- count backwards
playing[name].music = playing[name].music -1 playing[name].music = playing[name].music -1
@ -133,13 +138,14 @@ local get_ambience = function(player, tod, name)
-- get foot and head level nodes at player position -- get foot and head level nodes at player position
local pos = player:get_pos() ; if not pos then return end local pos = player:get_pos() ; if not pos then return end
local prop = player:get_properties() local prop = player:get_properties()
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
pos.y = pos.y + prop.eye_height -- eye level pos.y = pos.y + eyeh
local nod_head = pplus and name and playerplus[name] local nod_head = pplus and name and playerplus[name]
and playerplus[name].nod_head or minetest.get_node(pos).name and playerplus[name].nod_head or minetest.get_node(pos).name
pos.y = (pos.y - prop.eye_height) + 0.2 -- foot level pos.y = (pos.y - eyeh) + 0.2 -- foot level
local nod_feet = pplus and name and playerplus[name] local nod_feet = pplus and name and playerplus[name]
and playerplus[name].nod_feet or minetest.get_node(pos).name and playerplus[name].nod_feet or minetest.get_node(pos).name
@ -195,7 +201,7 @@ minetest.register_globalstep(function(dtime)
local tod = minetest.get_timeofday() local tod = minetest.get_timeofday()
-- loop through players -- loop through players
for _, player in ipairs(minetest.get_connected_players()) do for _, player in pairs(minetest.get_connected_players()) do
player_name = player:get_player_name() player_name = player:get_player_name()

View File

@ -139,7 +139,7 @@ ambience.add_set("lava", {
}) })
else else
print ("[Ambience] found env_sounds, flowing water sounds disabled.") print ("[Ambience] found env_sounds, flowing water and lava sounds disabled.")
end end
-- Only add fire sounds set if flame_sound is disabled or fire redo active -- Only add fire sounds set if flame_sound is disabled or fire redo active
@ -238,7 +238,7 @@ ambience.add_set("ice", {
frequency = 250, frequency = 250,
sounds = { sounds = {
{name = "icecrack", length = 23}, {name = "icecrack", length = 23, gain = 0.7},
{name = "desertwind", length = 8}, {name = "desertwind", length = 8},
{name = "wind", length = 9} {name = "wind", length = 9}
}, },
@ -280,7 +280,7 @@ ambience.add_set("desert", {
end end
}) })
-- Cave sounds play when below player position Y -25 -- Cave sounds play when below player position Y -25 and water nearby
ambience.add_set("cave", { ambience.add_set("cave", {
@ -293,7 +293,9 @@ ambience.add_set("cave", {
sound_check = function(def) sound_check = function(def)
if def.pos.y < -25 then local c = (def.totals["default:water_source"] or 0)
if c > 0 and def.pos.y < -25 then
return "cave" return "cave"
end end
end end