Here is the code:
Code: Select all
local function checkPlayerPos(player)
local pos = player:get_pos()
if not pos then
return false
end
return true
end
local function playNightNoise(player)
if not checkPlayerPos(player) then
return
end
local pos = player:get_pos()
local milli = minetest.get_timeofday() * 24000
if pos.y >= -5 and (milli >= 19000 or milli <= 4000) then
minetest.sound_play("owl", {gain = 1.0, pos = pos, to_player = player:get_player_name()})
end
end
local function playWindNoise(player)
if not checkPlayerPos(player) then
return
end
local pos = player:get_pos()
minetest.sound_play("wind", {gain = 1.0, pos = pos, to_player = player:get_player_name()})
end
local function playTweetNoise(player)
if not checkPlayerPos(player) then
return
end
local pos = player:get_pos()
local millihour = minetest.get_timeofday() * 24000
if pos.y >= -5 and millihour >= 5000 and millihour <= 18000 then
minetest.sound_play("birds", {gain = 1.0, pos = pos, to_player = player:get_player_name()})
end
end
local function scheduleNoises()
for _, player in ipairs(minetest.get_connected_players()) do
minetest.after(math.random(5, 40), function()
playTweetNoise(player)
end)
minetest.after(math.random(5, 35), function()
playNightNoise(player)
end)
end
minetest.after(30, function()
for _, player in ipairs(minetest.get_connected_players()) do
playWindNoise(player)
end
scheduleNoises()
end)
end
-- Call the scheduling function to start playing the noises
scheduleNoises()
I also have a skybox changing code for space or caverealms DM caves
Code: Select all
local function setPlayerSky(player)
local pos = player:get_pos()
if pos.y < -4000 then
player:set_sky({r = 15, g = 0, b = 0}, "plain") -- Set sky to dark red
elseif pos.y > 4000 then
player:set_sky({r = 0, g = 0, b = 0}, "plain") -- Set sky to BLACK
else
player:set_sky(nil, "regular")
end
end
minetest.register_globalstep(function(dtime)
for _, player in ipairs(minetest.get_connected_players()) do
setPlayerSky(player)
end
end)