diff --git a/mods/default/README.txt b/mods/default/README.txt index 695d3b1f..6bf33c6f 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -189,3 +189,17 @@ Mito551 (sounds) (CC BY-SA): default_dirt_footstep.1.ogg default_dirt_footstep.2.ogg default_glass_footstep.ogg + +earthcalling (sounds) (CC0): + default_flow_water.ogg + default_flow_lava.ogg + +LeonMire (sounds) (CC0): + default_use_chest.ogg + +Stephan (sounds) (CC0): + default_use_furnace.ogg + default_eat.ogg + +Thore (sounds) (CC0): + default_use_workbench.ogg \ No newline at end of file diff --git a/mods/default/functions.lua b/mods/default/functions.lua index ecb7f612..b89878a3 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -83,6 +83,78 @@ function default.node_sound_glass_defaults(table) return table end +-- +-- Fluid flow sounds +-- + +local flow_sounds = {} + +local function flow_sound_start(pos, file) + local pos_hash = minetest.hash_node_position(pos) + local sound = flow_sounds[pos_hash] + + if not sound then + -- Abort if this touches another liquid source, or lakes can cause heavy sound spam + local positions = {} + table.insert(positions, {x = pos.x - 1, y = pos.y, z = pos.z}) + table.insert(positions, {x = pos.x + 1, y = pos.y, z = pos.z}) + table.insert(positions, {x = pos.x, y = pos.y - 1, z = pos.z}) + table.insert(positions, {x = pos.x, y = pos.y + 1, z = pos.z}) + table.insert(positions, {x = pos.x, y = pos.y, z = pos.z - 1}) + table.insert(positions, {x = pos.x, y = pos.y, z = pos.z + 1}) + for i, entry in ipairs(positions) do + local pos_here = { x = entry.x, y = entry.y, z = entry.z } + local node_here = minetest.get_node(pos_here) + local nodedef_here = minetest.registered_nodes[node_here.name] + if(nodedef_here.drawtype == "liquid") then + return + end + end + + flow_sounds[pos_hash] = { + handle = minetest.sound_play(file, {pos = pos, gain = 0.5, loop = true}), + } + end +end + +local function flow_sound_stop(pos) + local pos_hash = minetest.hash_node_position(pos) + local sound = flow_sounds[pos_hash] + + if sound then + minetest.sound_stop(sound.handle) + flow_sounds[pos_hash] = nil + end +end + +minetest.register_on_placenode(function(pos, _, _, _, _) + flow_sound_stop(pos) +end) + +minetest.register_on_dignode(function(pos, _, _) + flow_sound_stop(pos) +end) + +minetest.register_abm({ + nodenames = {"default:water_source"}, + neighbors = {"default:water_flowing"}, + interval = 0.5, + chance = 1, + action = function(pos, node, _, _) + flow_sound_start(pos, "default_flow_water") + end, +}) + +minetest.register_abm({ + nodenames = {"default:lava_source"}, + neighbors = {"default:lava_flowing"}, + interval = 0.5, + chance = 1, + action = function(pos, node, _, _) + flow_sound_start(pos, "default_flow_lava") + end, +}) + -- -- Legacy -- diff --git a/mods/default/sounds/default_eat.ogg b/mods/default/sounds/default_eat.ogg new file mode 100644 index 00000000..92520676 Binary files /dev/null and b/mods/default/sounds/default_eat.ogg differ diff --git a/mods/default/sounds/default_flow_lava.ogg b/mods/default/sounds/default_flow_lava.ogg new file mode 100644 index 00000000..623ee13b Binary files /dev/null and b/mods/default/sounds/default_flow_lava.ogg differ diff --git a/mods/default/sounds/default_flow_water.ogg b/mods/default/sounds/default_flow_water.ogg new file mode 100644 index 00000000..d9f6f5e1 Binary files /dev/null and b/mods/default/sounds/default_flow_water.ogg differ diff --git a/mods/default/sounds/default_use_chest.ogg b/mods/default/sounds/default_use_chest.ogg new file mode 100644 index 00000000..af234ed6 Binary files /dev/null and b/mods/default/sounds/default_use_chest.ogg differ diff --git a/mods/default/sounds/default_use_furnace.ogg b/mods/default/sounds/default_use_furnace.ogg new file mode 100644 index 00000000..9fbe2c55 Binary files /dev/null and b/mods/default/sounds/default_use_furnace.ogg differ diff --git a/mods/default/sounds/default_use_workbench.ogg b/mods/default/sounds/default_use_workbench.ogg new file mode 100644 index 00000000..a69eb9ec Binary files /dev/null and b/mods/default/sounds/default_use_workbench.ogg differ diff --git a/mods/doors/README.txt b/mods/doors/README.txt index 146af8ed..53633183 100644 --- a/mods/doors/README.txt +++ b/mods/doors/README.txt @@ -35,6 +35,13 @@ following Textures created by PenguinDad (CC BY-SA 4.0): door_glass.png door_obsidian_glass.png +Door sounds created by Slanesh (CC-BY 3.0): + doors_door_open.ogg + doors_door_close.ogg + +Gate sound created by j1987 (CC0): + doors_gate_open_close.ogg + All other textures (created by PilzAdam): WTFPL diff --git a/mods/doors/sounds/doors_door_close.ogg b/mods/doors/sounds/doors_door_close.ogg new file mode 100644 index 00000000..b7eb9260 Binary files /dev/null and b/mods/doors/sounds/doors_door_close.ogg differ diff --git a/mods/doors/sounds/doors_door_open.ogg b/mods/doors/sounds/doors_door_open.ogg new file mode 100644 index 00000000..c8568dd3 Binary files /dev/null and b/mods/doors/sounds/doors_door_open.ogg differ diff --git a/mods/doors/sounds/doors_gate_open_close.ogg b/mods/doors/sounds/doors_gate_open_close.ogg new file mode 100644 index 00000000..e4dca3af Binary files /dev/null and b/mods/doors/sounds/doors_gate_open_close.ogg differ